debian防火墙端口转发怎么弄
导读:Debian 防火墙端口转发实操指南 一、前置准备 开启内核转发(IPv4): 临时生效:echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward 永久生效:在 /etc/sysctl.conf 添...
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 等)。
- 开启转发:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: debian防火墙端口转发怎么弄
本文地址: https://pptw.com/jishu/749400.html
