家庭网络布局之群晖虚拟机安装OpenWrt作旁路由
踩了不少坑,记录一下最后各个设置参数和避雷手段,希望能帮到大家。
首先,我家里的网络布局如图所示,只有IPV4——
来说下为啥这样做,首先入户盒子小,想平时关闭盒子保持大厅的整洁美观,即不想放在外面还摆个凳子、桌子放一堆路由器、NAS啥的。
光猫性能较弱,能桥接就尽量桥接,让自己的路由器拨号,而且光猫如果关闭DHCP万一出了问题很难登陆处理(特别我这种始终保持光猫wifi关闭的选手),所以我是光猫直接一个网段192.168.1.1,然后桥接到路由器复制拨号,网段另设为192.168.2.1(第三位随便2-255的数字都可以)。
路由器性能仍较弱,无法满载挂酸酸乳Clash之类的,所以需要用到软路由,但是软路由又多一个设备和跳线,性价比和美观实用方面完全不如群晖NAS做虚拟旁路由。(NAS单线即可)
首先群晖安装VMM,设置网络打开Open vSwitch功能。
下载OpenWrt固件,群晖是amd64或者x86_64,我这次找到的这里下载,推荐直接Plus版,https://openwrt.mpdn.fun:8443/?dir=lede%2Fx86_64
下载好后,在群辉VMM里面,映像——硬盘映像(导入)——虚拟机(新增往下拉有个“导入”)
用户电源管理也不用打钩,直接安装后启动——连接——当屏幕打印如下图所示信息,按回车键。
运行命令修改网络配置:
vi /etc/config/network
默认配置如下:
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.1.1' #默认openwrt ip地址
option netmask '255.255.255.0'
option ip6assign '60'
修改为:
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.2.2' #主路由192.168.2.1,旁路由我设置192.168.2.2
option netmask '255.255.255.0'
option ip6assign '60'
按 ESC
输入:wq
保存并退出。运行下面命令,重启网络使配置生效,当然你也可以群晖VMM重启虚拟机都行:
/etc/init.d/network restart
重启后即可以用你刚才设置的ip进入路由器进行管理了——
修改网关、DNS为主路由ip、关闭DHCP、关闭ipV6、取消桥接(如果不能上网再——添加防火墙规则)
到这里,如果你已经能上网,那么恭喜你,端口转发相关的设置你就只需要在主路由进行设置即可!
如果不能,试着在防火墙自定义规则下添加如下句段——
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
如果不取消桥接,则添加的防火墙规则改为
iptables -t nat -I POSTROUTING -o br-lan -j MASQUERADE
“不加防火墙规则不能上网的,一般是华为、小米、360(其实基本都必须要加才能上网)等主路由器,原因是,这些路由器会校验数据包的ip和mac地址的对应关系。国内包的上行经过旁路由转发给主路由时,主路由发现旁路由发过来的数据包ip不是它自己的,校验失败,所以网络不通了。
然后加了防火墙规则,上边那条规则的意思是执行SNAT功能,就是把数据包的源ip改成当前机器的,也就是旁路由的ip。这样ip和mac地址对应,网络通了。
所以个人总结,先不加规则,如果网络能通,恭喜你,最佳性能。如果必须加规则网络才能通,那么勉强用着吧,所有流量都要经过旁路由,非最佳。
个人网上看到的一些情况,本人也是一知半解,说错也不复杂,不要喷我。”
登陆主路由设置网关和DNS为虚拟机(即OpenWrt)地址,以我的华硕路由器为例——
登陆群晖,重新设置网关和DNS(有强迫症可以设置完后再自动获取一下也可以)——
至此就设置完成,顺利的话用手机连一下wifi点下详细信息就可以看到网关变成了192.168.2.2,DNS服务器则是192.168.2.2/192.168.2.1两个。
另外再补充一下加入了那句话两层nat后,具体如何进行端口转发,以及这种情况下群晖创建SMTP服务无法发信或者无法收信的解决方法(想了3个晚上,试了很多方案最后终于成功了,呜呜呜),直接上图吧——
主路由:(均指向OpenWrt地址)
虚拟路由:
DNS解析:
群晖的域和主机名(FQDN)都直接填sirongzi.xyz的原始域名,你的发件人也是[email protected]这样。
——————————————————
以下运行OpenClash避坑指南:
需要自己安装内核,推荐自己下载后再上传,毕竟启动第一步如果自动下载的话,那速度,根本下不下来。
Clash内核https://github.com/vernesong/OpenClash/releases/tag/Clash
TUN模式内核https://github.com/vernesong/OpenClash/releases/tag/TUN-Premium
下这个版本的,别下v3会报错(惨痛经历)clash-linux-amd64.tar.gz
请解压后确认名称为Clash(无后缀名)再上传,上传位置(不好找……)
会提示文件已成功上传到 “/etc/openclash/core/”,进群晖VMM点连接,按enter进入命令模式
cd /etc/openclash/core/
chmod 777 clash
如果传错了可以这样删除——
TUN的也一样(也是命名为Clash上传,会自动识别的,但是上传的时候记得选TUN)——
另外,订阅地址不是ssr订阅地址,可以直接用Clash托管链接很方便。
其他具体设置就各凭喜好了,下面给出本人的推荐,马上用手机连wifi试试效果吧~
——————————————————————————————————————————
这里再给出一种你OpenClash配置好后只使用一层NAT不伪装IP,而通过OpenClash实现伪装IP顺利上网的方法:
同时防火墙删掉那句伪装IP的话iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
然后在主路由进行端口转发直接转到目标地址如NAS之类的,好处:看似只用一次转发,坏处:OpenClash挂了或者配置文件/远程服务器有问题就直接全家断网。
所以,不推荐,不如上面两层NAT,就端口转发需要设置两次比较麻烦,当然你路由器直接不加那句话能上网就是无敌的,比如N1、AX86U(都是网上看到的,不一定保证可以)之类的。
参考引用:
https://www.cnblogs.com/osnosn/p/14253536.html
https://codeantenna.com/a/L0EYdJ6au4
https://adao.me/ruanjian/216.html