在 Ubuntu 系統中,你可以使用 iptables
命令來實現端口轉發。以下是一個基本的步驟指南:
打開終端。
確保 iptables 已安裝:
sudo apt update
sudo apt install iptables
啟用 IP 轉發:
編輯 /etc/sysctl.conf
文件,找到并取消注釋以下行:
net.ipv4.ip_forward=1
然后運行以下命令使更改生效:
sudo sysctl -p
設置端口轉發規則: 假設你想將外部端口 8080 轉發到內部 IP 地址 192.168.1.100 的端口 80,可以使用以下命令:
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
sudo iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 80 -j MASQUERADE
解釋:
-t nat
:指定使用 NAT 表。-A PREROUTING
:在 PREROUTING 鏈中添加規則。-p tcp --dport 8080
:匹配 TCP 協議,目標端口為 8080。-j DNAT --to-destination 192.168.1.100:80
:將數據包的目標地址和端口修改為 192.168.1.100:80。-A POSTROUTING
:在 POSTROUTING 鏈中添加規則。-p tcp -d 192.168.1.100 --dport 80
:匹配 TCP 協議,目標地址為 192.168.1.100,目標端口為 80。-j MASQUERADE
:進行源地址轉換(SNAT),以便返回的數據包能夠正確路由回外部網絡。保存 iptables 規則:
為了確保重啟后規則仍然有效,可以使用 iptables-persistent
工具來保存規則。
sudo apt install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
完成以上步驟后,你的端口轉發規則應該已經生效。你可以通過訪問外部 IP 地址的 8080 端口來測試端口轉發是否正常工作。
請注意,這些步驟假設你的系統有一個外部 IP 地址,并且你的網絡配置允許進行端口轉發。如果你在云服務器上操作,還需要確保安全組或防火墻規則允許相應的流量通過。