moshを導入しようとして凡ミスでハマった
moshを導入しようとして凡ミスしてたのでメモしておきます.
クライアント側に出ていたエラー
http://tukaikta.blog135.fc2.com/blog-entry-210.html
上記のエントリを参考にさせていただきながらサーバ側( sakuraのVPS )とクライアント側( mac )の設定を行いました。 無事設定完了して、クライアント側のmacからmoshを起動しようとすると下記のようなエラーがでて起動できませんでした。
mosh: Nothing received from server on UDP port 60001.
Firewallの確認
サーバ側のFirewallはiptablesに以下のように設定していたのでポートは開いているような気がしていました。
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 60000:61000 -j ACCEPT
そこで、実際に通信が行われているか確認するためにサーバ側でtcpdumpを実行して確認してみました。
tcpdump host (クライアント側のhostname) and not (SSHのポート) # sshのpacketが邪魔なのでフィルタリングしておく 22:53:19.477223 IP (クライアント側のhostname).60950 > (サーバ側のhostname).60001: UDP, length 71 22:53:19.477271 IP (サーバ側のhostname) > (クライアント側のhostname): ICMP host (サーバ側のhostname) unreachable - admin prohibited, length 107
あぁ。。。と思いiptablesの設定を見直してみると icmp-host-profibitedの設定がmoshのポート設定の上にきてしまっていました。。
iptablesは上からフィルタが適応されているので、これでは当然動かないですね。凡ミス。
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited .... # 先にicmp-host-prohibitedの設定が適応されてしまているので動かない -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 60000:61000 -j ACCEPT
以下のように順番を逆にすると無事動いた。
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 60000:61000 -j ACCEPT ... -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
凡ミスでタイムロスしないように気をつけます。
それにしてもmosh、快適ですね・・・!
回線がe-mobileしかない貧民なので、感動しました。