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

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

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

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

1、首先linux默认是关闭ip包转发的功能,需要开启一下

vim /etc/sysctl.conf

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

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

正常来说一个电脑主机只接收目的地址是本机的地址,如果不是本机的ip包会被丢弃掉,开启这个ip包转发功能,就是说如果不是本机的ip包,也会接收并转发出去

 上图就是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 的意思是动态源地址转换

实测下来只增加此一条规则就行了,至于其他教程还会在INPUT链及FORWARD链增加ACCEPT规则,但是我看了默认规则其实都是ACCEPT的,单纯为了NAT转发的话没必要再额外增加,如果为了安全或者其他目的,大家可自行研究,此处不深入讨论

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解析服务的

  • 9
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以使用iptables工具来实现双网卡UDP转发。具体步骤如下: 1. 确认您的系统已经安装iptables工具。如果没有安装,可以使用以下命令进行安装: 对于Debian/Ubuntu系统: ``` sudo apt-get install iptables ``` 对于CentOS/RHEL系统: ``` sudo yum install iptables ``` 2. 配置双网卡。假设您已经有两个网卡,一个连接外部网络(eth0),另一个连接内部网络(eth1),您需要配置双网卡,使得这两个网卡可以相互通信。您可以使用以下命令配置双网卡: ``` sudo sysctl -w net.ipv4.ip_forward=1 sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT ``` 3. 配置UDP转发规则。假设您想将外部网络中的UDP流量转发到内部网络的某个主机(IP地址为192.168.1.10),可以使用以下命令: ``` sudo iptables -t nat -A PREROUTING -i eth0 -p udp --dport 1234 -j DNAT --to-destination 192.168.1.10:1234 sudo iptables -t nat -A POSTROUTING -o eth1 -p udp --dport 1234 -j MASQUERADE ``` 其中,--dport参数指定传输层目的端口,--to-destination参数指定目标主机和端口,-j MASQUERADE参数表示使用MASQUERADE方式进行NAT,以使得内部网络可以正确地响应外部网络中的UDP请求。 4. 验证UDP转发是否生效。您可以在内部网络中启动一个UDP服务,并在外部网络中使用UDP客户端向该服务发送数据包,验证数据包是否能够正确地转发到内部网络中的主机。如果转发规则配置正确,您应该能够成功地收到内部网络中的主机响应。 请注意,使用iptables进行网络配置需要谨慎操作,错误的配置可能导致网络不可用。在操作前,请确保您已经备份了重要的配置文件,并且已经了解了iptables的基本原理和用法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值