Ubuntu
iptables 問題:將埠 x 轉發到網路上不同機器的 ssh 埠
我有一台 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轉發了嗎?