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命令的一处参数错误