linux启用NAT功能,双网卡共享网络,iptables简单实现

最近在研究linux双网卡共享网络的情况

简单来说就是一台linux有两块网卡,比如eth0及eth1,eth0可以正常连接外网,eth1连接内部网络,那么可以通过iptables实现eth1内部网络上的设备共享eth0的网络,即linux充当网关的作用

此处研究网络上的教程一大堆,利用iptables增加了很多条规则,但是每个教程还都不太一样,所以自己去研究了下iptables的具体教程,发现网上很多教程都是冗余了很多不相关的指令,真正有用的就是iptables的NAT启用,下面以图示拓扑说一下详细内容

vim /etc/sysctl.conf

将net.ipv4.ip_forward = 0修改为1

这样重启系统以后每次都是默认开启了

上图就是iptables的数据流转链的介绍,iptables是内核的功能设置,INPUT和OUTPUT针对的是应用层程序

2、开启linux的NAT功能

这个NAT功能就是将非本机地址的ip包修改源地址后从连网的网口发出去

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

这个-t nat的意思是下面操作nat的表

-A POSTROUTING的意思是在POSTROUTING的链上增加此规则

-o eth0 的意思是设置包的出口为eth0(此处可依据实际的网卡名称来填写)

-j MASQUERADE 的意思是动态源地址转换

3、在内网的电脑上设置网关地址

上述1、2步骤是设置此linux电脑,第3步是设置内网需要共享网络的其他电脑,IP地址不用变,网关地址设成linux电脑的eth1的ip地址。

例如linux的eth1的地址

ip:192.168.1.100
掩码:255.255.255.0

那同网域的其他电脑,比如A电脑地址设置

IP:192.168.1.110
掩码:255.255.255.0
网关:空(或者其他)

那么手动把A电脑的地址改成如下即可

IP:192.168.1.110
掩码:255.255.255.0
网关:192.168.1.100
DNS: 8.8.8.8(或者114.114.114.114)

需要注意的是DNS一定不要忽略掉,因为linux是没有配置dns解析服务的

经验分享 程序员 微信小程序 职场和发展