とりあえず8080番ポートを使おうと思ったのですが、iptalbesをオフにしたらdockerの設定が使えなくなってしまう関係でオフに出来ない状況に陥りました。
ローカルの開発環境でiptablesとかで接続出来ないと、面倒なので今までは設定オフにしちゃってたんですが、
dockerを使っている関係でそういう訳にもいかず、iptablesの設定でハマっていたのですが、同僚の人に便利なコマンドを教えてもらいました。
watch iptables -xnvL
というコマンド。今まで使ったことないコマンドだったのですが、パケットがどの段階でどこに行っているのかが分かります。
watch iptables -xnvL
Every 2.0s: iptables -xnvL Wed Feb 17 10:25:31 2016
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
19053 1507938 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
14 2264 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
24 1408 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
1012 84278 IN_LOGGING all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
見るべき点はpktsとbytes部分を特に注目してみる。iptablesは順番が結構シビアで、間違えると思うように動いてくれないのですが、このコマンドを使うと、どこで落ちているのかよく分かる。
修正前は、
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere tcp dpt:webcache
となっていたのですが、自分の認識だと上に書いた設定を下に書いた設定で上書き出来るんじゃなかったかなという朧気な記憶を元に記述したのですが、案の定間違っていました・・・。修正前の状態を見てみると、REJECTされているパケットが・・・。
watch iptables -xnvL
Every 2.0s: iptables -xnvL Wed Feb 17 10:21:20 2016
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
19053 1507938 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
14 2264 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
0 94822 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
0 0 IN_LOGGING all -- * * 0.0.0.0/0 0.0.0.0/0
設定の上書きではなく、条件にマッチしなかったものが順次下に行くといった挙動でした・・・。うろ覚えで作業するものではありませんでした・・・。