Ubuntu

iptables 問題:將埠 x 轉發到網路上不同機器的 ssh 埠

  • August 29, 2009

我有一台 Ubuntu PC,有兩個網卡,充當路由器。一張卡 eth0 連接到網際網路,另一張 eth1 連接到 LAN。我想將 LAN 中不同主機的 ssh 埠暴露給外部世界的不同埠號。即“ssh user@router -p 1234”應該到host1的ssh埠,“ssh user@router -p 3456”應該ssh到host2。我為 host1 添加了以下 iptable 規則,但它不起作用:

iptables -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 1234 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A PREROUTING -t nat -p tcp -d $EXTIP --dport 1234 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j DNAT --to-destination 10.9.0.2:22

EXTIF是外部介面(eth0),INTIF是內部介面(eth1),EXTIP是eth0的IP地址。

有什麼幫助嗎?(不確定問題是否清楚,如果有人理解我的意圖,請用正確的行話編輯)

FORWARD 鏈的規則需要使用目標埠,因為它是在預路由鏈之後執行的,即在 DNAT 完成之後。

iptables -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

各種表和鏈如何連結在一起的一個很好的概覽圖在這裡: http ://www.csie.ntu.edu.tw/~b92035/cnl/hw1/Iptables.gif

開啟ip轉發了嗎?

引用自:https://serverfault.com/questions/57872