先看概念
路由器(Router)
将数据包从一个网络转发到另一个网络的网络设备。基于内部路由表,路由器读取每个传入的数据包并决定如何转发它,将数据传送到指定的IP地址。
数据在一个子网中传输到另一个子网中,可以通过路由器的路由功能进行处理。在网络通信中,路由器具有判断网络地址以及选择IP路径的作用,可以在多个网络环境中,构建灵活的链接系统,通过不同的数据分组以及介质访问方式对各个子网进行链接。路由器在操作中仅接受源站或者其他相关路由器传递的信息,是一种基于网络层的互联设备。
网关(Gateway)
又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。
网关实质上是一个网络通向其他网络的IP地址。
比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;
网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0;
在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)与主机的IP 地址作 “与” 运算的结果不同判定两个网络中的主机处在不同的网络里。
而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。这就是网络A向网络B转发数据包的过程。
所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。
DNS
是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。
比如:把 xiaolaiwo.com 转换为 139.198.11.208 的IP地址;
DNS服务器可以有很多层,下层代理和缓存上层数据,接下来就会配置一个本地的DNS服务解决某些域名无法直链访问的问题。
无线路由器(Wireless Router)
无线路由器是一个综合性硬件设备,具备拨号上线、路由、网关、DNS、防火墙、无线网络等功能。
简单点也可以说是家庭上网的一体化软硬件解决方案。
安装网关服务器
硬件
系统安装
Openwet 固件地址Release openwrt-bcm27xx-bcm2710 · SuLingGG/OpenWrt-Rpi (github.com)
下载固件 immortalwrt-bcm27xx-bcm2710-rpi-3-ext4-sysupgrade.img.gz
安装烧录工具balenaEtcher – Flash OS images to SD cards & USB drives
固件刷入到 SD 卡
SD卡插回到树莓派,插电开机,开机过程中我们先看下openwrt固件的文档
确认初始设置这里的用户名和密码
通过网线连接电脑和树莓派,浏览器打开http://192.168.1.1;
输入密码 password 登陆
配置
首先拔掉网线,让电脑连入无线路由器网络;
设置IP为自动获取模式,登陆无线路由器后台。
进入DHCP服务器设置
设置开始地址为60,保存。
断开无线,插入网线,手动设置电脑的IP;
192.168.1.59 与 网关服务器的IP 192.168.1.1 在同一网段;
浏览器访问http://192.168.1.1 登陆网关服务器;
进入 网络 – 接口 菜单,找到LAN 网络 ,点击修改
传输协议为静态地址;
IP地址设置一个和现有局域网同网段的静态 IP 地址,注意不要和现有设备的 IP 地址冲突; 192.168.1.6
将 LAN 网络接口的“默认网关”设为主路由的 IP 地址;192.168.1.1
使用自定义的 DNS 服务器”设为主路由的 IP 地址;192.168.1.1
禁用IPv6分配服务。
然后应用 设置。注意是应用,不是保存并应用。
物理设置的接口选择 eth0,多网口网线接哪个口选择哪个
忽略DHCP
禁用所有IPV6设置
点击保存,不是保存并应用。
进入 网络 – 防火墙,不启用“ SYN-flood防御”;
不启用 “IP 动态伪装”
点击保存并应用。
用网线链接把无线路由器的LAN口和树莓派的有线网口链接。
电脑连接到无线,并测试网络是否连通;
修改电脑的网关和 DNS 为 192.168.1.6,再次测试网络连通性。这种设置方法只对当前设备有效,比如你只想自己的设备走代理的话可以这么设置。调试时也建议使用这种。
另一种全局的设置方法,直接修改无线路由器的 DHCP
修改网关和 DNS 后若无法上网,说明网关服务器配置有错误,可以把网关和DNS改回192.168.1.1,浏览器访问http://192.168.1.6 登陆到网关服务器检查配置。
部分无线路由器会校验数据包的ip和mac地址的对应关系,由于网关转发数据时的mac是网关服务器自己的与数据的IP不一致,所以校验失败。
解决办法是增加一个防火墙规则
如果你的路由器不需要这么设置是最好的,这样做的后果就是所有的流量都会经过树莓派的网关服务器,树莓派只有百兆的网络带宽,降低了网络性能。
网络
理想情况旁路网关不会影响局域网性能,也不会影响广域网下行性能。
因此,使用旁路网关的主要目的如果只是用来转发代理上网的流量,旁路网关的性能并不重要。
- 局域网互访,不经过网关
- 广域网下行,不经过旁路网关
- 广域网上行,经过旁路网关再经过上级网关
- 代理无论上行下行都经过旁路网关
注意设置了防火墙规则后全部流量经过网关。
代理
代理的安装和配置部分参考谷歌教程,网关服务器的代理设置和软路由代理设置相同。
只试用了 PassWall 下中国列表,代理正常运行。
另外 FRP 也可以正常使用,有需要可参考另一篇文章。
要所有设备走代理记得改无线路由器DHCP服务器的网关和DNS。
参考文章:
Openwrt 作为旁路网关(不是旁路由、单臂路由)的终极设置方法,破解迷思 – 少数派 (sspai.com)