linux都在内核集成了iptables,可以用其实现NAT转换

开启NAT网关需要设置两个部分

  • 在内核开启ip转发
  • 使用iptables开始snat转换

内核中开启ip转发也有几种方式

1.执行

sysctl -w net.ipv4.ip_forward=1

2.或者执行

echo 1 > /proc/sys/net/ipv4/ip_forward

3.或者修改 /etc/sysctl.conf 添加

# Enable packet forwarding
net.ipv4.ip_forward = 1

然后执行

/etc/init.d/networking restart

在iptables中添加snat转换

执行

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source your.public.ip.adderss

其中 - eth0 为连接公网的网络端口 - your.public.ip.adderss 为你的公网ip地址

完成后可以执行

iptables -L -t nat

可以查看到新的设置

另外一个开启snat的方法

Now you need to activate NAT itself in /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.255
up iptables -t nat -A POSTROUTING -o $IFACE -j SNAT

Now you need to restart your networking services using the following command

#/etc/init.d/networking restart

参考链接

update

  • 20110725:修正iptables命令的一处参数错误