せっかくさっきまで、iptablesと格闘していたので、残しておきます。久々にiptablesを触ったのですが、iptables-saveやらあるし、さらにここ何年もポートフォワーディングについて大きく勘違いをしていたことに気がつきました。いや、おはずかいし・・・
で、今回はいたってフツーのこんな感じの構成なんです。

ようは、外部からxxx.xxx.xxx.xxx:3000とwebrickへのアクセスがあった場合、LAN内の192.168.0.2:3000に転送してあげようって感じです。192.168.0.2では、実際に3000番を開放しwebrickが稼動しています。この192.168.0.2のiptablesの設定は、
『192.168.0.0/24からはいかなるINPUTも受け付ける』
と、なっていますので、xxx.xxx.xxx.xxxのマシーンのPREROUTINGは、以下のように3000に対するフォワーディングを設定しました。
iptables -t nat -A PREROUTING -p tcp –dport 3000 -i ppp0 \
-j DNAT –to-destination 192.168.0.2:3000
iptables -A FORWARD -p tcp –dport 3000 -i ppp0 -j ACCEPT
これで、OKでしょって思ったのが甘かったです。まったく接続が出来ず、1時間たっても、2時間たっても全く解決しない。 iptablesで、 -j LOG やら、tcpdump やら、駆使した挙句、
『あれ!?フォワードのSIPって、生?』。。。 このログで、気がつきました。
Oct 24 00:27:12 hoge kernel: IN=eth2 OUT=eth2 xsrc=aaa.bbb.ccc.ddd DST=192.168.0.2 LEN=312 TOS=0×00 PREC=0×00 TTL=127 ID=14352 DF PROTO=TCP SPT=1927 DPT=3000 WINDOW=16586 RES=0×00 ACK PSH URGP=0
てっきり、この2時間IPマスカレードと同じ考えでIPアドレスはルーターによって上書きされるため、SIPは192.168.0.1になっているものかと思い込んで作業をしていました。。。
よく考えたら、んなわけないですよね。もしそうなら、サーバーのアクセスログは全てルーターからのものになってしまうし^^
と、言うことで、webrickサーバーで、
iptables -A INPUT -p tcp –dport 3000 -j ACCEPT
を追加して、無事完了した。早速はじめてのiptables-saveをつかって、しっかり保存もして見ました。iptables-saveって、昔からあったのだろうか・・・・?ま、とりあえず結果オーライです。
今日の作業で現場を離れると感が鈍るもだなと感じました。なんとか、上手く両立して行きたいな・・・
早くパケットを手でつかみたいな・・・・

