把树莓派改造成NAT软路由器 |
您所在的位置:网站首页 › 树莓派4B刷OpenWRT软路由做dhcp › 把树莓派改造成NAT软路由器 |
本文目录
1、查看网卡情况2、配置WAN口静态ip和LAN口上的DHCP server3、配置IP转发和SNAT功能3.1、开启Linux的报文转发功能
3.2、开启SNAT功能3.3、测试网速4、进阶配置4.1、如果WAN口(上行接口)eth0是动态分配的IP地址4.2、在LAN口上,给下游主机开启自动分配IP地址功能4.3、永久保存iptables, SNAT配置,并设置成开机自动启动4.4、其它
根据Linux NAT软路由的简介、入门与配置这个文章,我们已经知道了如何将一台Linux主机改造成一台NAT软路由。树莓派预装了raspberry pi OS是Debian Linux的一个衍生版本,加上树莓派的低待机功耗,刚好合适用来作一个NAT软路由。 这里我们以“树梅派zero w + 一块带二个网卡的底板” 构成的硬件为例来说明如何将树莓派配置成NAT软路由。 见:树莓派配置静态IP地址,或者禁止掉网卡通过DHCP申请IP地址,简单起见,把上行的WAN口的网卡eth0配置成固定IP地址(请参照上述文章中的systemd-networkd的方式来配置),在下行的LAN口eth1上配置dhcp server自动给下游主机分配网络的功能(见本文4.2章节)。 3、配置IP转发和SNAT功能 3.1、开启Linux的报文转发功能打开配置文件 sysctl.conf sudo vi /etc/sysctl.conf找到net.ipv4.ip_forward这一行,去掉最前面的#号,打开IPv4转发功能(默认情况下每个网卡只接收发给自己这个网卡的ip地址的报文,即使目标地址为本网卡IP地址的报文,其它目标地址的报文都丢弃,打开后这个选项后,Linux会收到源IP地址不是自己网卡IP地址的报文,并交给内核做IP转发)。 # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 3.2、开启SNAT功能这个很简单,一句命令:这样就开启了NAT路由器功能,构成了如上图所示的网络。 iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to 192.168.3.66然后我们在下游主机10.0.0.2打开浏览器,就可以发现可以打开csdn.net了。 用以下命令可以看到nat table的POSTROUTING chain里已经增加了一条开启了SNAT功能的规则。 xxx@raspberrypi:~ $ sudo iptables -t nat -L Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT all -- 10.0.0.0/24 anywhere to:192.168.3.66 3.3、测试网速如下图我们可以看到下行最大大约可以达到45Mbps,达不到网卡的限速100Mbps,此时我们发现树莓派zero w的CPU占用率已经达到了100%,所以受限于CPU处理能力,只能达到这个速度了,如果要更快的速度就要更换更快的CPU的型号。可见SNAT还是很耗费CPU资源的。 上述说明就完成了配置,但实际使用过程中还有很多问题,比如我们要给LAN口上的下游主机开启DHCP自动分配IP的功能,我们上行的WAN口是通过DHCP自动分配 IP的,而不是固定IP的,比如开机后iptables规则就丢失了,怎么保存下来,并在开机时自动配置好等等。 4.1、如果WAN口(上行接口)eth0是动态分配的IP地址可以使用IP MASQUERADE(IP伪装)功能代替SNAT功能则可以。用命令 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE代替上述的 iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to 192.168.3.66 4.2、在LAN口上,给下游主机开启自动分配IP地址功能 安装软件包dnsmasq sudo apt install dnsmasq配置dnsmasq 前面安装的dnsmasq提供了DHCP和DNS服务, 默认的配置文件模板很大,但我们其实只需要其中很小的功能,所以这里我们选择从空文件开始添加配置,这样还更容易一些。 备份原始的配置模板文件,并新建一个空的配置文件: sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig sudo vi /etc/dnsmasq.conf写入以下配置: interface=eth1 # Listening interface dhcp-range=10.0.0.2,10.0.0.10,255.255.255.0,24h # Pool of IP addresses served via DHCP domain=eth1 # Local DNS domain address=/gw.eth1/10.0.0.1 # Alias for this router 重启生效 sudo reboot 4.3、永久保存iptables, SNAT配置,并设置成开机自动启动这里有很多办法,比如将规则用iptables-save保存后,在系统启动时通过/etc/rc.local脚本起增加iptables-restore命令的自动 执行引入开机自动设置SNAT规则,或者/etc/network/interfaces脚本里加入pre-up iptables-restore命令恢复SNAT规则等,但最简单的方式还是通过iptables-persistent软件来恢复。 第一步,安装iptables-persistent软件(本质上是安装了systemd下的iptables.services): sudo apt install iptables-persistent安装过程中会跳出以下窗口信息告诉你ipv4, ipv6的转发规则分别被保存在/etc/iptables/rules.v4和/etc/iptables/rules.v6下。 待更新 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |