商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何利用iptables进行端口转发

如何利用iptables进行端口转发

  发布于2026-07-13 阅读(0)

扫一扫,手机访问

说到Linux下的端口转发,很多人第一反应是装个nginx或者用socat之类的东西。但其实,系统自带的iptables就能把这事儿干得漂漂亮亮的,而且性能损耗极低。今天就聊聊怎么用iptables做端口转发,从最基础的安装配置到规则保存,一步不落。

如何利用iptables进行端口转发

1. 确保iptables已安装

先确认一下系统里有没有iptables。大部分Linux发行版默认都带了,如果没有,装一下也很简单:

sudo apt-get update
sudo apt-get install iptables

2. 启用IP转发

Linux内核默认是关掉IP转发这个功能的——毕竟普通电脑不需要当路由器。要打开它,需要修改一个内核参数。

编辑 /etc/sysctl.conf 文件:

sudo nano /etc/sysctl.conf

找到这一行,把注释去掉,值改成1:

net.ipv4.ip_forward=1

保存退出后,让配置立即生效:

sudo sysctl -p

3. 配置iptables规则

假设你要把外部端口8080上的流量,转发到内网一台服务器的80端口。这就需要在NAT表里加两条规则。

3.1 添加PREROUTING规则

这条规则告诉iptables:凡是目标端口是8080的TCP包,通通改掉目标地址,扔给内网的192.168.1.100:80。

sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

3.2 添加POSTROUTING规则

光改目标地址还不够,回包还得知道从哪回来。所以需要加一条MASQUERADE(伪装)规则,让数据包看起来就像是从这台路由器本身发出去的。

sudo iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 80 -j MASQUERADE

4. 保存iptables规则

重启之后规则就没了,这可是个坑。得把它们存起来。

4.1 用iptables-persistent(Debian/Ubuntu)

装一个工具就能自动保存:

sudo apt-get install iptables-persistent

安装过程中会问你“是否保存当前规则”,选“是”就行。

4.2 手动保存规则

如果不想多装东西,直接手动导出也行:

sudo sh -c "iptables-sa ve > /etc/iptables/rules.v4"

5. 验证端口转发

规则配好之后,拿telnet或者curl试试看:

telnet your-router-ip 8080

或者

curl http://your-router-ip:8080

要是能看到内网服务器的响应,说明成了。

注意事项

  • 别忘了检查防火墙有没有拦住这些流量——规则生效的前提是包能进来。
  • 如果你用的是云服务器,光配iptables还不够,云控制台的安全组也得放行对应端口。
  • 定期看看iptables规则列表,确保没有莫名其妙的多余规则,安全这事不能偷懒。

按上面这些步骤走下来,iptables端口转发基本就稳了。下次再遇到类似需求,完全可以抛弃那些花里胡哨的方案,内核原生能力往往才是最靠谱的。

本文转载于:https://www.yisu.com/ask/1007294.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注