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

您的位置: 首页 > 文章列表 > 编程开发 > iptables如何进行IP地址转换

iptables如何进行IP地址转换

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

扫一扫,手机访问

iptables 是 Linux 系统里配置内核防火墙的老牌工具,简单说,它就是系统网络流量的守门员,让你能精准控制每个数据包的来去方向。今天咱们聊聊怎么用它做 IP 地址转换,包括源地址转换(SNAT)和目的地址转换(DNAT)——这两个操作几乎是局域网共享上网、端口转发场景里的标配。

iptables如何进行IP地址转换

下面直接进入操作流程,几个关键步骤走一遍,基本就能上手:

1. 启用 IP 转发

默认情况下,Linux 内核并不允许数据包跨网络接口转发——你得手动把开关打开,否则后面的 NAT 规则形同虚设。操作很简单:编辑 /etc/sysctl.conf 文件,找到下面这行:

net.ipv4.ip_forward=1

如果文件里没有,直接添上。然后运行这条命令让配置立刻生效:

sysctl -p

值得注意的是,这一步很容易被忘记,但它偏偏是所有 NAT 操作的前提,千万别跳过去。

2. 配置 SNAT

SNAT 要解决的是「数据包从内网出去时,把源 IP 改成公网 IP」的问题。举个例子,你想让局域网 192.168.1.0/24 内所有设备的对外访问,看起来都像是来自同一个公网地址 203.0.113.5,一条规则就能搞定:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 203.0.113.5

拆开来看:-t nat 是操作 nat 表;-A POSTROUTING 表示这条规则在路由器做出转发决策之后、数据包真正发出去之前生效;-s 192.168.1.0/24 匹配源地址为该网段的数据包;-o eth0 指定出口网卡;最后的 --to-source 203.0.113.5 就是要把源 IP 换成这个公网地址。一句话:数据包从内网钻出来时,披上了公网的外衣。

3. 配置 DNAT

DNAT 恰好相反——它改变的是数据包的目的地址。典型场景是:你的服务器在公网上有一个 IP,但真实服务跑在局域网的一台机器上,你需要把访问公网 IP 的流量“偷偷”转到内网那台机器。比如想把打到 203.0.113.5:80 的流量转给内网 192.168.1.10:80

iptables -t nat -A PREROUTING -d 203.0.113.5 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80

注意这里用的是 PREROUTING 链——它在路由器做路由决策之前先截住数据包,直接把目的地址和端口改了。参数 -d 203.0.113.5 匹配目的地址,-p tcp --dport 80 限定 TCP 协议和 80 端口,--to-destination 192.168.1.10:80 就是你要转到的内网目标。这样当外网用户访问你的公网 IP 时,流量会静静地被引导到内网服务器上,用户察觉不到任何区别。

4. 保存 iptables 规则

规则配置好之后,如果不主动保存,系统一重启就全丢了——这一点吃过亏的老手都深有体会。保存方式因发行版而异:

在 Debian/Ubuntu 等基于 Debian 的系统上,通常用:

iptables-sa ve > /etc/iptables/rules.v4

在 CentOS/RHEL 等基于 Red Hat 的系统上,可以直接用服务命令:

service iptables sa ve

或者手动保存到标准位置:

iptables-sa ve > /etc/sysconfig/iptables

不管用哪种方式,核心思路是一致的:把当前的内存中的规则集导出成一个文件,下次开机时自动加载。如果你的发行版没有自带持久化机制,可以装一个 iptables-persistent 工具,或者把恢复命令写进启动脚本里。具体命令以你实际系统为准,但原理就这么简单。

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

热门关注