tmux2.4をcentOS6.9にインストールした
tmuxを入れました。yumにあるけど古いので、手動でインストールします。
バージョンはtmux 2.4です。
tmuxとは?
仮想端末の一種で、一つのセッションでCLI画面を分割したりタブ化したりできる。実行中のプロセスがsshの切断によって終了することも防げるのもメリット。(viで開いていたファイルを保存できず、viが終了することもない)
CLIを触っていく意気込みはあるので、まずは使いこなせるように入れてみました。
インストールの手順
まずはコンパイル環境を整える
yum installでは最新版は入らない。
また、コンパイル中参照するライブラリの中に、centOSのデフォルト構成では入っていないライブラリがあるので、それを事前に使えるようにしておく必要がある。
gccは、コンパイルするためのパッケージ。これがないとそもそもコンパイルできないので必須。
ncurses-develは、tmuxコンパイルに必要なライブラリ。
一つだけかんたんには手に入らないライブラリが・・・
libeventというライブラリもncurses-develと同じように導入する必要があるけど、yumだとバージョンが古いせいかtmuxコンパイル中にエラーになる。
そのため、手動でlibeventを導入しておく必要がある。
tar -zxvf libevent-2.1.8-stable.tar.gz
cd ./libevent-2.1.8-stable
./configure
make
make install
これでlibeventがサーバに導入できたけれど、C言語がコンパイル時に参照できる状況になっていない。
libeventのmake installの作業では、ld.so.cacheの情報更新までは含まれていないので、それは手作業で行わなければいけない。
/etc/ld.so.cache/の情報を更新するには、ld.so.confの情報を更新して、ld.so.cacheへ反映させるという作業が必要になる。
今回、libeventをmake installしたところ、/usr/local/libにlibeventの各種ライブラリが展開されていた。
そのため、/usr/local/libをコンパイル時に探してくれるように設定する。
そもそもなぜ/usr/local/libに展開されていたかというと、/usr/local/は、管理者がローカルにソフトウェアをインストールするためのフォルダ。FHS準拠のため、 Linuxと呼ばれるものは全てそういうルールとなっているようです。
OS自体のアップデートがあったとしても、/usr/local/配下のファイルは絶対に触られないという規定があるため、管理者が自由に利用できるディレクトリらしい。なのでOS自体のアップデートがあったとしても、消えたりしない。
その中で、/usr/local/libは今回のようなライブラリを置く場所として準備されている。
その一方で、/usr/libもあるけど、これはデフォルトでいろいろと入っていたので、システムで必要なものだったり標準で利用可能なライブラリ置き場かな。
なので、ld.so.confが読み込む対象に/usr/local/libを追加する。
vi /etc/ld.so.conf.d/usr_local.conf
で、usr_local.confを新規作成編集し、
/usr/local/lib
と一行だけ書いて保存。
usr_local.confというファイル名にしたけど、ファイル名はなんでもいい。/etc/ld.so.confのファイルに*.confで全て読み込めってデフォルトで指示があるため、ファイル名はなんでも読み込んでくれる。
追記した上で、
ldconfig
で、完了。これによってld.so.confの内容がld.so.cacheへ反映される。
tmuxをインストールする
準備が整ったので以下、
https://github.com/tmux/tmux/releases/download/2.4/tmux-2.4.tar.gz
tar -zxvf tmux-2.5.tar.gz
cd ./tmux-2.5
./configure
make
make install
使ってみる
tmux
動いた!
sshdの設定を変えるのを忘れていた
まだ外部公開していないとはいえ、sshのアクセス設定をrootアクセス可、デフォルトのTCP/22番ポートから変更するのを忘れていた。
やったこと
- ユーザーを追加 (useradd)、追加したユーザーにroot権限を追加
- /etc/ssh/sshd_configのPermitRootLoginとPortの値を変更
- /etc/sysconfig/iptablesでPortの値をTCP/22許可から「2」で設定したものに変更
★注意★
service sshd restart、service iptables restartをかける際には現在のssh接続している端末の窓は閉じないように!
設定間違ってて新規sshがつながらないとホコリまみれの物置からキーボードを引っ張り出してくるというめんどくさいことになるので。
おまけ
DDNSを利用して外部へサーバ公開をする
サーバ公開をはじめるにあたって、固定IPアドレスを契約しようと当初は考えていたけれど、できるだけ安くcentOS用のサーバを購入し、ありものだけで自宅のネットワーク環境をそれに合わせて変更をしていると、ここで月額でいくらか払うのは「可能な限り安くやり遂げる」という路線を最後の最後で外れてしまうような気がしていて、そもそも月額1000円近く固定IPアドレスに払うのであれば、はじめからServerManやさくらでVPSでサーバ借りたほうがよっぽどかお値打ちであることは間違いない。
ということで、DDNSを利用して外部公開をすることにしました。
どのDDNSにしようかな
今回は自身がお名前.comで取得した独自ドメインであるno1497.comを自宅サーバに割り当てたい。
どうやらお名前.comもDDNSには対応しているらしいけど、クライアントソフトがWindowsにしか対応していない時点でNG。
過去にieServerを利用していたけど、自宅の動的グローバルIPアドレスをieServerが準備したドメインとしか紐付けできないのでNG。
となるとmyDNSとNo-IPの比較になる。
サービス内容はほぼほぼ変わらないけれど、myDNSはシェルスクリプトをcronでまわすことでIPアドレスの更新ができそうなのでmyDNSにすることに決定。
No-IPもできるみたいだけど、制限がどんどんきつくなっているみたいなので避けておく。
ドメイン構成図を決める
ドメインツリー構造をどうしようか悩む。
no1497.comのZone ApexをそのままmyDNSに移管することは避けたい。なぜなら、AWS上で遊ぶために利用するaws.no1497.comであるとか、ブログ用のサブドメインであるとか、いろいろとお名前.comのネームサーバ上で動いているためです。
なので、ひとまずはds.no1497.comというサブドメインを新規作成し、その配下をmyDNSのネームサーバ管理とすることにしました。no1497.com自体は引き続きお名前.com配下としました。将来的にはno1497.com自体を自宅サーバ用に割り当てる予定。
こういうツリーから
こう変えます。
早速設定してみました
流れとしては以下の感じ。
- myDNSでアカウント登録。
- お名前.com上で、NSレコードを追加。ds.no1497.comとmyDNS指定のネームサーバを紐付けるようなNSレコードです。
- 自宅のcentOSサーバが定期的にmyDNSのログインページをwgetするスクリプトをcronにより現在の動的グローバルIPアドレスを定期通知させるように設定。
定期更新スクリプト
以下が参考になる。
1時間に一回くらいの更新でいいかな。上記サイトより引用。
# MyDNS
wget -O - --http-user=hogehoge --http-password=fugafuga http://www.mydns.jp/login.html
定期更新はいいけど・・・TTLはいくつなの?
myDNSで配布されるレコードのTTLが一体いくつなんだろうか。
更新しても、1日経たないとクライアントが再度レコードを取りに来てくれなければ意味がない。ということで調べてみました。
[root@localhost ~]# dig ds.no1497.com @ns0.mydns.jp
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> ds.no1497.com @ns0.mydns.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42948
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available;; QUESTION SECTION:
;ds.no1497.com. IN A;; ANSWER SECTION:
ds.no1497.com. 300 IN A 14.3.191.236;; Query time: 15 msec
;; SERVER: 210.197.74.200#53(210.197.74.200)
;; WHEN: Sun May 14 21:25:15 2017
;; MSG SIZE rcvd: 47
TTLは5分ですね。
【自宅サーバ】ネットワークの設定完了!
以前の記事で構想していた自宅ネットワーク改装が終わりました。
これです。
Cisco1812Jに行ったこと
基本的にCisco1812Jに設定を盛り込みまくることとなりました。
です。
上記のブロードバンドルータ機能は結構ネットに落ちてるね。
ブロードバンドルータとしての設定
PPPoE、NAPTの設定については以下のサイトを参照しました。
特に特筆すべき設定内容はなし。
セキュリティの設定
セキュリティはCBACを利用しました。
ip inspect name CBAC tcp router-traffic
ip inspect name CBAC udp router-traffic
ip inspect name CBAC ftp
ip inspect name CBAC icmp router-traffic!
ip access-list extended INTERNET
deny ip any any!
interface Dialer1
ip access-group INTERNET in
ip inspect CBAC out
CBACのrouter-trafficオプションは、ルータ自身が発信するパケットも監査の対象とします。
なので、このオプションがないとルータ自身から外部へpingを打っても、ダイナミックACLが作成されず復路の通信がdeny ip any anyによってはじかれます。
公開サーバの設定(ポートフォワーディング)
TCP/80でリッスンするWebサーバに192.168.1.1のアドレスを割り振って、外部公開する場合の例は以下の通り。
ip nat inside source static tcp 192.168.1.1 80 interface Dialer1 80
ip access-list extended INTERNET
permit tcp any any eq 80
deny ip any any
interface Dialer1
ip access-group INTERNET in
今後、外部からアクセスさせたい通信がある場合は以下のテンプレートを増やしていけばよい。
ip nat inside source static [tcp/udp/ip] [プライベートIPアドレス] [宛先ポート番号interface Dialer1 [宛先ポート番号]
ip access-list extended INTERNET
DNSサーバとしての役割
ルータを各クライアントのDNSサーバの宛先とします。
interface Dialer1
ppp ipcp dns request accept!
ip dns server
ISPよりPPPoEからDNSサーバ情報を受信し、サーバとしての役割を有効化しています。
その他
一旦、DMZ→Trustは全拒否、Trust→DMZは全許可としてます。
同じようにCBACを利用してます。
interface Vlan 10 ※DMZセグメント用SVI
ip access-group DMZ in
ip inspect CBAC out!
deny ip 192.168.0.0 0.0.0.255 ※Localアドレス
permit ip any any
つまり図にするとこんなイメージですね。
まとめ
というわけで、ネットワーク的には完成。
あとはDDNSの設定をして、外部公開できるようにするつもりです。
DeskMini110 組み立てました
ポチった翌日には到着したDeskMini110とゆかいなその他パーツ達ですが、届いたはいいものの仕事が忙しくて組み立てられなかったのですが、ちょっと時間があったので組み立てました。
開封の儀
こいつらです。やっぱり小さいです。
さぁ開封!
!!
想像以上にさらに小さかった・・・。
意味もなくスマホを上に鎮座させてみる。やはり小さい。
付属品も合わせて撮影。SATAケーブル2本と2.5インチHDD/SSD取り付け用ネジが入ってました。
早速組み立てる
順番としては
こんな順番です。
マザーボードを拝見する
あけてみました。マザーボード小さいですね。
CPUを取り付ける
CPUをそっと乗せます。
その上にファンを乗せます。
簡単です。
CPUとファンの間は熱伝導を高めるグリスを塗りたくりました。以前、PC自作したときのやつ残っててよかった。
メモリ取り付ける
パチン
簡単なもんです。
SSD取り付ける
SSDが一番めんどくさかったです。
マザーボードをひっくり返した裏の金属部分に取り付けられるみたい。
ただ、マザーボードそのものが邪魔でネジ止めできないのでマザーボードと裏手の金属を離します。
分離
SSD取り付け
この裏からネジ止めします。
こんな感じ
番外編
せっかく取り外したのでマザーボードの裏側を撮影。ちゃんとCPU留まってる感じです。
マザーボードと金属を元に戻したら付属のSATAケーブルでSSDとマザーボードを接続して完了!
完成
元に戻して・・・
完成です。
まとめ
すごい簡単だった。
時間ないので週末に電源入れてみます。
ネットワーク構成を考える
仕事が忙しくてなかなかサーバを組み立てられないが、サーバを組み立てて配置するに当たり家のネットワークの見直しを妄想している。
現在
現状図
1セグメント構成。
現在、我が家には名機Cisco1812Jが存在してます。
図には書いてないですが、ゲームをやる友人宅のCisco891JとIPsecを張るために存在していました。
フレッツ網へのアクセスはもちろんNTT ONUですが透過モードとして、もともと使っていたNECルータでPPPoE接続でISPの張り出しを担っています。
新しくポチった新サーバはDMZに置きたいので、今回はDMZセグメントを作る必要があるのでした。
DMZ作成予定案①
予定案1
NTT ONUにてPPPoEの張り出しを行うケース。
Cisco1812JのCBAC機能でステートフルファイアウォール制御を行うことになります。Untrust, DMZ, Trustを持つ機器をCisco1812Jにとどめる必要があり、この場合、NECルータは単純な無線ルータになり下がります。
ただ、一点気になるのは、グローバルとプライベートのNATポイントがNTT ONUになること。
DMZとグローバルIPで細かいことをやりたい場合にNTT ONUでどこまでできるのか、という点で不安。
DMZ作成案②
予定案2
予定案1との変更点は、PPPoEの張り出しをCisco1812Jで行う。
これにより予定案1での不安点は解消されるが、家の配置の関係上Cisco1812JまでPPPoEを伸ばすことにちょっと違和感を覚える。(ここの文章じゃ伝わらない)
あと、Cisco1812JでISP接続用のPPPoE設定を自宅のルータで書くのに違和感。
Cisco1812Jが全てを司るような役割になるだけですが、それに対する違和感でしかないです。
なぜなら、Cisco1812Jは保守未加入の前にとっくにEOLだから・・・。
でも予定案2が今後の拡張を考えると一番良さそう。
コールドスタンバイ購入を検討します・・・。