tmux2.4をcentOS6.9にインストールした

tmuxを入れました。yumにあるけど古いので、手動でインストールします。

バージョンはtmux 2.4です。

tmuxとは?

 仮想端末の一種で、一つのセッションでCLI画面を分割したりタブ化したりできる。実行中のプロセスがsshの切断によって終了することも防げるのもメリット。(viで開いていたファイルを保存できず、viが終了することもない)

CLIを触っていく意気込みはあるので、まずは使いこなせるように入れてみました。 

 

インストールの手順

まずはコンパイル環境を整える

 yum installでは最新版は入らない。

C言語で作られているので、コンパイルして結合の作業が要る。

また、コンパイル中参照するライブラリの中に、centOSのデフォルト構成では入っていないライブラリがあるので、それを事前に使えるようにしておく必要がある。

 

sudo yum -y install gcc ncurses-devel

 gccは、コンパイルするためのパッケージ。これがないとそもそもコンパイルできないので必須。

ncurses-develは、tmuxコンパイルに必要なライブラリ。

 

一つだけかんたんには手に入らないライブラリが・・・

libeventというライブラリもncurses-develと同じように導入する必要があるけど、yumだとバージョンが古いせいかtmuxコンパイル中にエラーになる。

そのため、手動でlibeventを導入しておく必要がある。

 

wget 

https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz

tar -zxvf libevent-2.1.8-stable.tar.gz

cd ./libevent-2.1.8-stable

./configure

make

make install

これでlibeventがサーバに導入できたけれど、C言語コンパイル時に参照できる状況になっていない。

 

  1. C言語コンパイルしようとする
  2. /etc/ld.so.cache/にライブラリ置き場が書かれているので、そこからライブラリを探そうとする
  3. コンパイルする

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をインストールする 

準備が整ったので以下、

wget 

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番ポートから変更するのを忘れていた。

 

やったこと

  1. ユーザーを追加 (useradd)、追加したユーザーにroot権限を追加
  2. /etc/ssh/sshd_configのPermitRootLoginとPortの値を変更
  3. /etc/sysconfig/iptablesでPortの値をTCP/22許可から「2」で設定したものに変更

 

★注意★

service sshd restart、service iptables restartをかける際には現在のssh接続している端末の窓は閉じないように!

設定間違ってて新規sshがつながらないとホコリまみれの物置からキーボードを引っ張り出してくるというめんどくさいことになるので。

 

おまけ

ちなみにufwという便利なツールもあるようで、かなり直感的にiptablesを変更できるらしい。そのうちいじりたい。

DDNSを利用して外部へサーバ公開をする

サーバ公開をはじめるにあたって、固定IPアドレスを契約しようと当初は考えていたけれど、できるだけ安くcentOS用のサーバを購入し、ありものだけで自宅のネットワーク環境をそれに合わせて変更をしていると、ここで月額でいくらか払うのは「可能な限り安くやり遂げる」という路線を最後の最後で外れてしまうような気がしていて、そもそも月額1000円近く固定IPアドレスに払うのであれば、はじめからServerManさくらVPSでサーバ借りたほうがよっぽどかお値打ちであることは間違いない。

 

ということで、DDNSを利用して外部公開をすることにしました。

 

どのDDNSにしようかな

viral-community.com

 

今回は自身がお名前.comで取得した独自ドメインであるno1497.comを自宅サーバに割り当てたい。

どうやらお名前.comもDDNSには対応しているらしいけど、クライアントソフトがWindowsにしか対応していない時点でNG。

 

過去にieServerを利用していたけど、自宅の動的グローバルIPアドレスをieServerが準備したドメインとしか紐付けできないのでNG。

 

となるとmyDNSとNo-IPの比較になる。

サービス内容はほぼほぼ変わらないけれど、myDNSはシェルスクリプトをcronでまわすことでIPアドレスの更新ができそうなのでmyDNSにすることに決定。

www.mydns.jp

 

No-IPもできるみたいだけど、制限がどんどんきつくなっているみたいなので避けておく。

takuya-1st.hatenablog.jp

 

ドメイン構成図を決める

 ドメインツリー構造をどうしようか悩む。

no1497.comのZone ApexをそのままmyDNSに移管することは避けたい。なぜなら、AWS上で遊ぶために利用するaws.no1497.comであるとか、ブログ用のサブドメインであるとか、いろいろとお名前.comのネームサーバ上で動いているためです。

 

なので、ひとまずはds.no1497.comというサブドメインを新規作成し、その配下をmyDNSのネームサーバ管理とすることにしました。no1497.com自体は引き続きお名前.com配下としました。将来的にはno1497.com自体を自宅サーバ用に割り当てる予定。

 

こういうツリーから
f:id:no1497:20170514122834j:image

 

こう変えます。
f:id:no1497:20170514122849j:image

 

早速設定してみました

流れとしては以下の感じ。

  1. myDNSでアカウント登録。
  2. お名前.com上で、NSレコードを追加。ds.no1497.comとmyDNS指定のネームサーバを紐付けるようなNSレコードです。
  3. 自宅のcentOSサーバが定期的にmyDNSのログインページをwgetするスクリプトをcronにより現在の動的グローバルIPアドレスを定期通知させるように設定。

 定期更新スクリプト

以下が参考になる。

qiita.com

 

1時間に一回くらいの更新でいいかな。上記サイトより引用。

 

#!/bin/sh
#
# update ddns
#

# 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分ですね。

 

 

【自宅サーバ】ネットワークの設定完了!

以前の記事で構想していた自宅ネットワーク改装が終わりました。

 

f:id:no1497:20170510000711j:plain

これです。

Cisco1812Jに行ったこと

基本的にCisco1812Jに設定を盛り込みまくることとなりました。

 

 

です。

上記のブロードバンドルータ機能は結構ネットに落ちてるね。

 

ブロードバンドルータとしての設定

PPPoE、NAPTの設定については以下のサイトを参照しました。

blog.redbox.ne.jp

 

特に特筆すべき設定内容はなし。

 

セキュリティの設定

セキュリティは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

permit [tcp/udp/ip] any any eq [宛先ポート番号] log

 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

!

ip access-list extended DMZ

deny ip 192.168.0.0 0.0.0.255 ※Localアドレス
permit ip any any

 
f:id:no1497:20170513235101j:image

つまり図にするとこんなイメージですね。

まとめ

というわけで、ネットワーク的には完成。

あとはDDNSの設定をして、外部公開できるようにするつもりです。

DeskMini110 組み立てました

ポチった翌日には到着したDeskMini110とゆかいなその他パーツ達ですが、届いたはいいものの仕事が忙しくて組み立てられなかったのですが、ちょっと時間があったので組み立てました。

 

開封の儀


f:id:no1497:20170511224251j:image

こいつらです。やっぱり小さいです。

 

さぁ開封!

 

!!


f:id:no1497:20170511224329j:image

想像以上にさらに小さかった・・・。

任天堂ゲームキューブ本体くらいのサイズではなかろうか。

 


f:id:no1497:20170511224427j:image

意味もなくスマホを上に鎮座させてみる。やはり小さい。

 


f:id:no1497:20170511224841j:image

 

付属品も合わせて撮影。SATAケーブル2本と2.5インチHDD/SSD取り付け用ネジが入ってました。 

 

早速組み立てる

順番としては

  1. マザーボード拝見
  2. CPU取り付け
  3. メモリ取り付け
  4. SSD取り付け

こんな順番です。

 

マザーボードを拝見する


f:id:no1497:20170511224659j:image

あけてみました。マザーボード小さいですね。

 

CPUを取り付ける


f:id:no1497:20170511224744j:image

CPUをそっと乗せます。

 


f:id:no1497:20170511224812j:image

その上にファンを乗せます。

簡単です。

CPUとファンの間は熱伝導を高めるグリスを塗りたくりました。以前、PC自作したときのやつ残っててよかった。

 

メモリ取り付ける

パチン


f:id:no1497:20170511224812j:image

簡単なもんです。

 

SSD取り付ける

SSDが一番めんどくさかったです。


f:id:no1497:20170511225145j:image

マザーボードをひっくり返した裏の金属部分に取り付けられるみたい。

ただ、マザーボードそのものが邪魔でネジ止めできないのでマザーボードと裏手の金属を離します。

 

分離
f:id:no1497:20170511225326j:image

 

SSD取り付け
f:id:no1497:20170511225342j:image

この裏からネジ止めします。

 

こんな感じ
f:id:no1497:20170511225407j:image

 

番外編
f:id:no1497:20170511225438j:image

せっかく取り外したのでマザーボードの裏側を撮影。ちゃんとCPU留まってる感じです。

 


f:id:no1497:20170511225517j:image

マザーボードと金属を元に戻したら付属のSATAケーブルでSSDマザーボードを接続して完了!

 

完成

元に戻して・・・

f:id:no1497:20170511225609j:image

完成です。

 

まとめ

すごい簡単だった。

時間ないので週末に電源入れてみます。

ネットワーク構成を考える

仕事が忙しくてなかなかサーバを組み立てられないが、サーバを組み立てて配置するに当たり家のネットワークの見直しを妄想している。

 

現在

現状図


f:id:no1497:20170509235804j:image

1セグメント構成。

現在、我が家には名機Cisco1812Jが存在してます。

図には書いてないですが、ゲームをやる友人宅のCisco891JとIPsecを張るために存在していました。

フレッツ網へのアクセスはもちろんNTT ONUですが透過モードとして、もともと使っていたNECルータでPPPoE接続でISPの張り出しを担っています。

 

新しくポチった新サーバはDMZに置きたいので、今回はDMZセグメントを作る必要があるのでした。

 

 

DMZ作成予定案①

予定案1


f:id:no1497:20170510000114j:image

NTT ONUにてPPPoEの張り出しを行うケース。

Cisco1812JのCBAC機能でステートフルファイアウォール制御を行うことになります。Untrust, DMZ, Trustを持つ機器をCisco1812Jにとどめる必要があり、この場合、NECルータは単純な無線ルータになり下がります。

ただ、一点気になるのは、グローバルとプライベートのNATポイントがNTT ONUになること。

DMZグローバルIPで細かいことをやりたい場合にNTT ONUでどこまでできるのか、という点で不安。

 

DMZ作成案②

予定案2


f:id:no1497:20170510000711j:image

予定案1との変更点は、PPPoEの張り出しをCisco1812Jで行う。

これにより予定案1での不安点は解消されるが、家の配置の関係上Cisco1812JまでPPPoEを伸ばすことにちょっと違和感を覚える。(ここの文章じゃ伝わらない)

あと、Cisco1812JでISP接続用のPPPoE設定を自宅のルータで書くのに違和感。

Cisco1812Jが全てを司るような役割になるだけですが、それに対する違和感でしかないです。

なぜなら、Cisco1812Jは保守未加入の前にとっくにEOLだから・・・。

 

でも予定案2が今後の拡張を考えると一番良さそう。

 

コールドスタンバイ購入を検討します・・・。

ポチったものが届いた

日本の物流すごい。

そしてAmazonとTSUKUMOの発送早い。
f:id:no1497:20170508231513j:image

ベアボーンすごい小さい!

比較のためにスマホを置いてみた。

f:id:no1497:20170508231603j:image
分かりにくい。