新しくサーバをセットアップするにあたって、sshdのポート番号をデフォルトの22から他のものに変えようとしたところ、外部から接続できない、という症状に見舞われました。
症状から考えれば何らかのファイアウォール装置によって弾かれていることは明らかだったのですが、iptablesの設定内容の確認方法を間違えていたため、無駄な時間を費やしてしまいました。
この記事は、そのときのメモです。
環境情報
- さくらのVPS http://vps.sakura.ad.jp/
- Ubuntu 16.04
正しいやり方
正しいやり方は何通りか考えられますが、root権限で iptables -L
または iptables-save
を実行するのが手早いでしょう。
例1
$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere (以下略)
例2
$ sudo iptables-save # Generated by iptables-save v1.6.0 on Tue May 30 20:58:01 2017 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [332395:196375507] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT (以下略)
間違えたやり方
非root権限で iptables-save
コマンドを実行しました。
イメージ
$ iptables-save
何も出力されません。終了ステータスも0です。
間違えないための知識
例えば、非root権限で iptables -L
を実行すると、エラーになります。
$ iptables -L iptables v1.6.0: can't initialize iptables table `filter': Permission denied (you must be root) Perhaps iptables or your kernel needs to be upgraded.
手早く手堅く、設定内容を確認したいときは、 iptables -L
の方が間違いリスクが低いのでしょう。きっと。
あと、何かを調査する際には複数の調査方法を試してみるべき、ということも言えそうです。
間違いに気づいたときのぼやき
非root権限で iptables -L やるとpermissionの問題を吐いてくれるけど、非root権限で iptables-save しても空っぽ吐くだけでエラーにならないのか…。。それを以って「設定空っぽやん」と勘違いした俺がバカだった。
— 自宅適合者 T.Motooka (@t_motooka) 2017年5月26日
(環境:Ubuntu16.04)
@t_motooka 「フツー、設定空っぽだったとしてもINPUTとかのチェインのデフォルトの挙動の行くらい吐くよなー」というところまで気付いて不審に思いながらも、自分の操作の不備に気付かなかったの、ほんとセンス無い…。
— 自宅適合者 T.Motooka (@t_motooka) 2017年5月26日
関連してそうな本
- 作者: 日経Linux
- 出版社/メーカー: 日経BP社
- 発売日: 2016/09/27
- メディア: Kindle版
- この商品を含むブログを見る