阅读量:4
Debian 防火墙端口转发实操指南
一、前置准备
- 开启内核转发(IPv4):
- 临时生效:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward - 永久生效:在 /etc/sysctl.conf 添加
net.ipv4.ip_forward=1,然后执行sudo sysctl -p
- 临时生效:
- 选择工具:Debian 常见为 iptables/nftables 或 firewalld。若使用 firewalld,需先安装并启动:
sudo apt-get update && sudo apt-get install -y firewalld && sudo systemctl enable --now firewalld。
二、使用 iptables 进行端口转发(通用、稳定)
- 场景A 本机监听端口转发到后端主机(DNAT)
- 将本机 8080/TCP 转发到 192.168.1.100:80/TCP:
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
- 将本机 8080/TCP 转发到 192.168.1.100:80/TCP:
- 场景B 本机作为网关/NAT,转发到外部主机
- 将本机 8080/TCP 转发到外部 203.0.113.10:80/TCP:
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
- 将本机 8080/TCP 转发到外部 203.0.113.10:80/TCP:
- 持久化与验证
- 持久化(Debian 常用 iptables-persistent):
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
- 持久化(Debian 常用 iptables-persistent):
说明:PREROUTING 做目标地址转换(DNAT),POSTROUTING 做源地址伪装(MASQUERADE),FORWARD 放行转发流量。
三、使用 firewalld 进行端口转发(动态管理)
- 启用转发与伪装(masquerade)
sudo firewall-cmd --permanent --add-masquerade - 添加端口转发规则(示例:本地 12345/TCP → 192.168.1.100:80/TCP)
如需同时支持 UDP,再添加一条sudo firewall-cmd --permanent --add-forward-port=port=12345:proto=tcp:toaddr=192.168.1.100:toport=80proto=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。 - 检查本机/上游防火墙是否放行对应端口(如 8080/TCP 或 12345/TCP)。
- 确认后端服务在目标主机监听正确端口与地址(如
ss -ltnp | grep :80)。 - 查看 NAT/转发链是否命中:
sudo iptables -t nat -L -v -n、sudo iptables -L FORWARD -v -n。
- 确认内核转发已开启:
- 本机访问自身公网 IP 的转发不生效
- 多数情况下需额外添加 OUTPUT 链规则(DNAT 对本机发出的包不生效):
sudo iptables -t nat -A OUTPUT -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
- 多数情况下需额外添加 OUTPUT 链规则(DNAT 对本机发出的包不生效):
- IPv6 转发
- 开启转发:
echo 1 | sudo tee /proc/sys/net/ipv6/conf/all/forwarding - 规则使用 ip6tables,思路与 IPv4 一致(DNAT/POSTROUTING 等)。
- 开启转发:
以上就是关于“debian防火墙端口转发怎么弄”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm