什么是端口转发?

端口转发(Port Forwarding)是将外部网络流量路由到本地服务器内部服务的技术。常用于穿透防火墙、实现内网服务暴露等场景。
👉 点击了解基础概念


高级技巧与配置方法

1. 使用 iptables 实现动态转发

# 示例:将外部端口8080转发到本地服务
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
sudo iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT

📌 注意:需确保 ip_forward 已启用

sudo sysctl -w net.ipv4.ip_forward=1

2. 通过 socat 实现灵活转发

socat TCP-LISTEN:8080,fork TCP:192.168.1.100:80

🧠 适合需要双向通信或协议转换的场景
👉 深入探索 socat 工具

3. 配置 nginx 作为反向代理

location / {
    proxy_pass http://192.168.1.100;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

📦 适用于Web服务转发,需安装并启动nginx


常见应用场景

  • 🏠 内网穿透:将本地服务暴露给公网
  • 🌐 服务负载均衡:分配流量到多个后端节点
  • 🔐 安全隔离:通过转发规则限制访问来源

注意事项

⚠️ 安全第一:开放端口可能带来风险,建议结合防火墙规则(如 ufwfirewalld
⚠️ 端口冲突:避免与现有服务端口重复
⚠️ 持久化配置iptables 规则需保存以保持重启后生效

sudo iptables-save > /etc/iptables/rules.v4

图解说明

Linux_port_forwarding_diagram
💡 上图展示了典型NAT转发流程,包含公网IP、路由器和内网服务器的交互关系

扩展阅读