配置Debian路由器双WAN接入
鉴于移动免费送了1年200M的一条宽带,没多犹豫决定还是要用起来。经过一番折腾,基本搞好了,目前的情况大概是这样的:
2年前也写过文章提到过家里的网络拓扑,大的变化没有,只是加了一些新设备。现在在原有电信宽带的情况下,新增一条移动宽带,主要就是把接入路由器换了,原本的TP-Link R470GP只能接入一个WAN,正好目前R86S比较火,买了个最便宜的版本,先不考虑自己折腾猫棒,能双线以太网口接入就行。另外从闲鱼收了一个TP-Link SG1210P,索性把所有面板都从同一个交换机连上,情况会简单很多。
TP-Link SG1210P有3种工作模式,其中VLAN模式和视频监控模式,LAN中的设备只能与上游接入设备通信,我这里客厅的HTPC要与主卧的诸多设备互通,所以要把TP-Link SG1210P切换到标准模式。
剩下的工作就是把R86S配置好,顺便把原来HTPC/Debian上的科学上网工作也移到R86S上。我给R86S装了最新的Debian 11,网上看其他做软路由的文章/视频99.9%是刷OpenWRT,我为什么不用呢,有几个原因:
- 首先最重要的是,Debian是我最喜欢的Linux发行版,没有之一。从图上可以看到,客厅的HTPC,主卧的曾经的主力旁路由,都是装的Debian,我所有的VPS上也都用的Debian。
- 其次,我觉得OpenWRT的可玩性不如Debian好,Debian做路由系统需要自己动手做的事更多,但另一方面讲也更自由。
- Debian官方仓库的软件包更多更可信,OpenWRT这方面差一点,系统和软件包的魔改版本太多,全都自己编译的话太费时费力。
- 最后,对OpenWRT的质量不太信任,之前买了个GL.iNet MT1300,刷的是厂商定制的OpenWRT,升级系统没一次是没问题的。而我这么多不同硬件环境下的Debian系统大版本升级没一次是有问题的。
再来讲如何将Debian配置成一个路由器。我的R86S是最低配的那款,只有3个以太网口,规划好3个口的用途,将外壳上标记的eth0和eth1作为WAN口,连接运营商的光猫,eth2作为LAN口,连接屋内的交换机。
首先,在sysctl中将包转发功能打开(我不使用IPv6,不实用),root打开文件/etc/sysctl.conf,顺便把BBR也打开:
net.ipv4.ip_forward=1
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
再运行一下sysctl -p使其生效。
然后配置网络连接,我有3个网口,分别是enp1s0,enp2s0,enp3s0,前2个分别接入电信和移动宽带,第3个作为LAN,编辑/etc/network/interfaces:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto enp1s0
iface enp1s0 inet dhcp
#iface enp1s0 inet6 dhcp
auto enp2s0
iface enp2s0 inet dhcp
#iface enp2s0 inet6 dhcp
auto enp3s0
iface enp3s0 inet static
address 192.168.233.1
netmask 255.255.255.0
如果想用IPv6,可以把inet6那两行注释去掉,我不用,所以就注释掉了,都使用DHCP从光猫获取IP。把内网网段设为192.168.233.x,本机作为路由器即网关,就用192.168.233.1。再设置一下iptables转发参数,运行命令:
1
2
iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE
这时已经可以上网了,比如敲个命令curl www.baidu.com看一下,可以得到返回的内容。如果有其他设备接入enp3s0的口,并手动将IP和子网掩码,网关分别设置到192.168.233.x,255.255.255.0,192.168.233.1,其中x是[2,255]间的整数。
接着使用dnsmasq作为DHCP服务器。安装好后编辑配置文件/etc/dnsmasq.conf:
interface=enp3s0
dhcp-range=192.168.233.200,192.168.233.250,255.255.255.0,12h
dhcp-option=option:router,192.168.233.1
dhcp-option=option:dns-server,192.168.233.1
内容很简单:第1行,将服务绑定到第3个网口,第2行,设定自由分由的IP地址池以及有效时间,第3行,告知客户端使用的网关IP,第4行,告知客户端使用的DNS服务器地址。还可以绑定IP和mac地址,这样可以在后续针对某个设备做些特殊的设置:
dhcp-host=00:e0:4c:68:2a:5f,192.168.233.166
dhcp-host=00:e0:4c:68:2a:60,192.168.233.66
dhcp-host=00:1E:65:41:73:C2,192.168.233.16...剩余内容已隐藏