2017-03-24 61 views
-2

我使用Linux路由器通過PPPoE訪問互聯網。這個盒子有兩個接口:eth0用於內部LAN,eth1用於在PPPoE-Modem上建立ppp0接口。對於防火牆和端口轉發,我使用iptables和nat。 此作品爲期待:我可以去從LAN互聯網,我可以從外面通過端口轉發的LAN訪問某些服務:iptables端口轉發方向

iptables -t nat -A PREROUTING -p tcp --dport 9999 -DNAT --to 192.168.2.10:22 

(作爲一個例子,用於訪問一定的SSH端口我的局域網內機器從外)
但我想從LAN內部的WAN端口eth1的訪問一臺機器(192.168.8.2): 爲此,eth1的配置爲: ip addr add 192.168.8.1 dev eth1

所以我可以從路由器上的控制檯上ssh 192.168.8.2。這按預期工作。但我想從局域網中的機器訪問它。

iptables -t nat -A PREROUTING -p tcp --dport 9997 -DNAT --to 192.168.8.2:22 

但是這不起作用。我看到來自LAN端計算機的數據包進入eth0並尋址192.168.8.2,但我沒有得到答案。 有人可以指我,我的錯誤在哪裏?

在此先感謝 馬爾科

回答

0

除非服務器(192.168.8.2)知道如何找回電腦在局域網上(必須檢查從服務器回來的流量路由),則必須在路由器上添加一個-t n POSTROUTING規則,使它看起來像看起來像這是從路由器發出的流量(我猜測它已經可以從192.168.8.2訪問)。當服務器響應時,該流量將能夠返回到路由器,並且路由器將處理它的取消註冊它。

+0

'''iptables -t nat -A POSTROUTING -o interface-toward-ssh-server -d 192.168.28.2 -dport 22 -j MASQUERADE -m comment --comment「僞裝ssh流量去192.168.8.2 so它回到了我們身邊......「」......或者其他的東西。 – eftshift0