iptables 問題 - Linux

Table of Contents

目前架構是

PC3 ----- 小烏龜----switch-----PC1
Internet | 192.168.1.254 (撥接,NAT)
| eth0 ppp0
PC2
192.168.1.250(撥接)
eth0 ppp0

PC1 和 PC2 系統都是 centos
PC1 用 @ip.hinet.net 撥接、然後負責 NAT 和 DHCP
PC2 用 @hinet.net 撥接

現在 PC3 要透過 PC1 的 9999 port 的 IP 連進 PC2 的 port 3306

我在 PC1 設 iptables ,把 port 9999 都導到 PC2 的 port 3306 ,但是一直無法連線

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 9999 -j DNAT
--to-destination 192.168.1.250:3306

請問有那個地方該修改的嗎?

個人思考應該是和 PC2 也有撥接的關係、但不知道該怎麼改

--

All Comments

Vanessa avatarVanessa2013-10-27
這是 PC2 default gateway 的問題
Gary avatarGary2013-10-27
大概兩種解法.[1]PC1轉送PC2時做SNAT,但PC2無法得知真正來源.
Jacob avatarJacob2013-10-31
[2]PC2對特定port用policy route,但外面無法直接連PC2該port.
Robert avatarRobert2013-11-05
policy route 應該沒用, 只能 SNAT.
Frederic avatarFrederic2013-11-07
PC2看到同內網連線就直接回, 但PC3不認帳, drop 掉...
Selena avatarSelena2013-11-11
等等...... PC3 是內網吧?? @@
Jake avatarJake2013-11-14
-i ppp0 你的 interface 是 ppp0 嗎? 能否貼個 ifconfig
Olga avatarOlga2013-11-19
另外貼一下 iptables-save
Bethany avatarBethany2013-11-19
看到最底下PC2也撥接? 既然和PC1是同網段怎麼不是把default
Sierra Rose avatarSierra Rose2013-11-24
gateway 設定在 PC1 呢?
Elizabeth avatarElizabeth2013-11-27
所以 PC2 因為有跑撥接的關係,192.168.1 的網段也是 nat 來
Belly avatarBelly2013-11-29
的嗎? 還是說是另外接網卡在 switch 上?
Sarah avatarSarah2013-12-04
換個問法, PC1和 PC2 192.168.1的ip是可以互相ping有回應?
Susan avatarSusan2013-12-08
回四樓rick大, 看原po的iptables rule, 是從ppp0來的才DNAT,
不是內網,所以 policy route 不會不 work.
另外, 關於SNAT的部分, 在PC2只會看到是192.168.1.254連過來;
作法最好搭配 mangle table 及 fwmark 來做:
Sierra Rose avatarSierra Rose2013-12-11
iptables -t mangle -A PREROUTING -i ppp0 -p tcp \
--dport 9999 -j MARK --set-mark 0x1/0x1 ;
iptables -t nat -A PREROUTING -m mark --mark 0x1/0x1 \
-j DNAT --to-destination 192.168.1.250:3306 ;
iptables -t nat -A POSTROUTING -d 192.168.1.250 \
-m mark --mark 0x1/0x1 -j MASQUERADE ;
Andrew avatarAndrew2013-12-14
上面的 -j MASQUERADE 也可改為
-j SNAT --to-source 192.168.1.254
效果相同, 但用 -j MASQUERADE 較方便.
當然, -d 192.168.1.250 在這情況下改用 -o eth0 也可以.
Delia avatarDelia2013-12-15
若按上面的設定, 原 po 原來的那一筆 DNAT 就要拿掉.
Una avatarUna2013-12-17
其實 -d 192.168.1.250 或 -o eth0 不寫應該也 OK.
Linda avatarLinda2013-12-18
一時不查. 有設定 port (像上述 DNAT) 時就要加上 protocol.