杂谈

家庭网络布局之群晖虚拟机安装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

留言

您的电子邮箱地址不会被公开。 必填项已用 * 标注