Debian 防火墙端口转发实操指南
一、前置准备
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forwardnet.ipv4.ip_forward=1,然后执行 sudo sysctl -psudo apt-get update && sudo apt-get install -y firewalld && sudo systemctl enable --now firewalld。二、使用 iptables 进行端口转发(通用、稳定)
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
sudo iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 203.0.113.10:80
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
sudo apt-get install -y iptables-persistent
sudo netfilter-persistent save # 或:sudo iptables-save > /etc/iptables/rules.v4
sudo netfilter-persistent reload
sudo iptables -t nat -L -v -n
sudo iptables -L -v -n
说明:PREROUTING 做目标地址转换(DNAT),POSTROUTING 做源地址伪装(MASQUERADE),FORWARD 放行转发流量。
三、使用 firewalld 进行端口转发(动态管理)
sudo firewall-cmd --permanent --add-masquerade
sudo firewall-cmd --permanent --add-forward-port=port=12345:proto=tcp:toaddr=192.168.1.100:toport=80
如需同时支持 UDP,再添加一条 proto=udp 的规则。sudo firewall-cmd --reload
sudo firewall-cmd --list-forward-ports
sudo firewall-cmd --query-masquerade
提示:firewalld 会自动处理 NAT 与转发所需的基础规则,适合需要动态变更的场景。
四、常见问题与排查
cat /proc/sys/net/ipv4/ip_forward 应为 1。ss -ltnp | grep :80)。sudo iptables -t nat -L -v -n、sudo iptables -L FORWARD -v -n。sudo iptables -t nat -A OUTPUT -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
echo 1 | sudo tee /proc/sys/net/ipv6/conf/all/forwarding