西澤と申します。
以下のようなローカルのネットワークがあります。
出口のマシンは IP alias でグローバルIPを2つ持っています。(aaa.aaa.aaa.1 aaa.aaa.aaa.2)
そのうちの1つ(aaa.aaa.aaa.2)はローカルのhostA(bbb.bbb.bbb.2)に
フォーワードしています。
iptables -t nat -A PREROUTING -d aaa.aaa.aaa.2 -j DNAT --to bbb.bbb.bbb.2
このような構成の時にもう一台のローカルのhostB(bbb.bbb.bbb.3)から
aaa.aaa.aaa.2 にTCPコネクションを試みてもつながりません。(icmpはいけます)
おそらく返ってきたパケットのソースアドレス(bbb.bbb.bbb.2)が
投げた宛先の(aaa.aaa.aaa.2)とは異なるのでコネクションが成立しないのだと思います。
なにか良い手はないでしょうか。
hostB における tcpdump の出力です
18:08:22.510101 hostB.39095 > aaa.aaa.aaa.2.ssh: S 2696032511:2696032511(0) win 5840 <mss 1460,sackOK,timestamp 1387456 0,nop,wscale 0> (DF)
18:08:22.510811 hostA.ssh > hostB.39095: S 1094784001:1094784001(0) ack 2696032512 win 4096 <mss 1460>
18:08:22.510862 hostB.39095 > hostA.ssh: R 2696032512:2696032512(0) win 0 (DF)
18:08:25.502540 hostB.39095 > aaa.aaa.aaa.2.ssh: S 2696032511:2696032511(0) win 5840 <mss 1460,sackOK,timestamp 1387756 0,nop,wscale 0> (DF)
18:08:25.503178 hostA.ssh > hostB.39095: S 1095232001:1095232001(0) ack 2696032512 win 4096 <mss 1460>
18:08:25.503219 hostB.39095 > hostA.ssh: R 2696032512:2696032512(0) win 0 (DF)
構成
Internet
|
aaa.aaa.aaa.1 | aaa.aaa.aaa.2 ----> bbb.bbb.bbb.2にフォーワード
+---------------------------+
| gw Vine2.5 |
+---------------------------+
| bbb.bbb.bbb.1
|
+---------+
| HUB |
+---------+
| |
bbb.bbb.bbb.3 | | bbb.bbb.bbb.2
+----------+ +----------+
| hostB | | hostA |
+----------+ +----------+
----------
Seiya Nishizawa
seiya@xxxxxxxxxxxxxxxxxx