CentOS 开启 NAT 路由转发功能

一、拓扑图

学习 linux 的网络框架 netfilter,想用 centos 作为路由器,在下面接 PC 产生流量测试。

默认情况下 linux 是没有开启数据包转发功能的,需要手动配置,linux 使用 centos6.9,网络拓扑图如下:

路由器的 eth0 口接外网,IP 地址 192.168.123.102,内网口 eth0 地址 10.0.0.x/24,希望 PC 通过路由 nat 上网。

二、转发配置

开启路由转发首先检查好防火墙配置,清空原有的 nat 规则:iptables -F,然后添加 nat 规则,一共有两种方式:

第一种:iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to 192.168.123.102

第二种:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

其中的部分参数含义为:

  • -t: 类型为 nat
  • -A: 添加新规则到规则链的末尾
  • POSTROUTING: 在包就要离开防火墙之前改变其源地址
  • -s: 源地址段,这里设置我的内网地址网段 10.0.0.0/24
  • -j SNAT: 满足 snat 条件的时候跳转
  • --to: 跳转时设置的 Ip 地址
  • -o: 跳转时的出口设备为 eth0

具体可参考防火墙规则,这里设置好后,开启设备的数据包转发:

转发永久生效

上面的 echo 开启数据包转发只是临时生效,下次重启后就失效了,如果需要永久生效,得修改/etc/sysctl.conf 文件,把 net.ipv4.ip_forwar 设置为 1 。

三、生效性测试

检测是否生效,给 PC 配置好 IP,然后 ping 百度,同时设备上也开启抓包:

发表评论