找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 36696|回复: 78

原创 单臂路由之openwrt vlan实现

 火.. [复制链接]
本帖最后由 heq 于 2019-8-26 18:23 编辑

家里的主路由Netgear WNDR4300刷了OpenWRT使用多年,质量稳定可靠。但随着家庭网络要求的提高渐不堪重负。去年买的Raspberry Pi 3B一直吃灰。遂打算将两者组合使用,利用RPi提升路由器的运算能力。奈何RPi只有一个有线网络接口,单臂路由(router-on-a-stick)就成了最佳选择。RPi的百兆有线网络应付当前的50M带宽带倒也够了。经过这种改造,带有线网口的电脑(比如淘汰下来的笔记本)都能胜任软路由,多线接入要求可以通过路由器vlan实现,。

下面是具体实现步骤,前几天经过实战试验成功。友情提醒:需要基本linux能力,熟悉CLI操作。

一、预备:
1 RPi刷raspbian,路由刷OpenWRT(支持vlan即可,对版本基本无要求)
2 RPi无线网络开启,便于进入系统更改调试。全部设定成功后可以关闭无线,统一使用WNDR4300的无线网络。
3 WAN口接光猫,LAN4接RPi3,如下图


二、 RPi3设置
1 增加vlan 11做为WAN界面,vlan 22 作为LAN界面
  1. # vconfig add eth0 11
  2. # vconfig add eth0 22
复制代码

2 确认上述设置生效
  1. $ ls -l /proc/net/vlan
  2. total 0
  3. -rw------- 1 root root 0 Dec  4 11:01 config
  4. -rw------- 1 root root 0 Dec  4 11:01 eth0.11
  5. -rw------- 1 root root 0 Dec  4 11:01 eth0.22
复制代码
3 设置vlan,假设光猫端完成PPPoE拨号,WAN端口通过DHCP获取IP信息。
3a create new file to config vlan
# vi /etc/network/interfaces.d/vlans
  1. # WAN
  2. auto eth0.11
  3.     iface eth0.11 inet dhcp
  4.     vlan-raw-device eth0

  5. # LAN
  6. auto eth0.22
  7.     iface eth0.22 inet static
  8.     address 192.168.100.1
  9.     netmask 255.255.255.0
  10.     vlan-raw-device eth0
复制代码
3b 更改原来eth0的设置
# vi /etc/network/interfaces
  1. allow-hotplug eth0
  2.     iface eth0 inet manual
复制代码
4 设置DHCP、DNS服务(自动分配网段为192.168.100.0/24)
# vi /etc/dnsmasq.conf
  1. ...
  2. interface=eth0.22
  3. dhcp-range=eth0.22,192.168.100.100,192.168.100.230,255.255.255.0, 24h
  4. ...
复制代码
5 设置masquerade
# vi /etc/rc.local
  1. ...
  2. iptables -t nat -A POSTROUTING -o eth0.11 -j MASQUERADE
  3. iptables -A FORWARD -i eth0.11 -o wlan0   -m state --state RELATED,ESTABLISHED -j ACCEPT  
  4. iptables -A FORWARD -i eth0.11 -o eth0.22 -m state --state RELATED,ESTABLISHED -j ACCEPT  
  5. iptables -A FORWARD -i wlan0   -o eth0.11 -j ACCEPT  
  6. iptables -A FORWARD -i eth0.22 -o eth0.11 -j ACCEPT
  7. ...
复制代码
6 确认系统允许ip forwarding
# vi /etc/sysctl.conf
  1. ...
  2. net.ipv4.ip_forward=1
  3. net.ipv6.conf.all.forwarding=1
  4. ...
复制代码
7 重启系统使得上述设定生效

三、 路由器设置
1 调整原有vlan设置,将WAN口与LAN4(RPi3接入口)绑定,其它LAN口与openwrt系统绑定。vlan ID与RPi3的设置相对应,取11与22
# vi /etc/config/network   更改原来的switch_vlan设置,注意CPU(openwrt系统)对应vlan 0#,WAN端口对应vlan 5#,LAN4端口对应vlan 1#
  1. ###### original setting, to modify ######
  2. config interface 'lan'
  3. ...
  4.         option ifname 'eth0.1'
  5. ...

  6. config interface 'wan'
  7. ...
  8.         option ifname 'eth0.2'
  9. ...
  10. config switch_vlan
  11.         option device 'switch0'
  12.         option vlan '1'
  13.         option ports '1 2 3 4 0t'

  14. config switch_vlan
  15.         option device 'switch0'
  16.         option vlan '2'
  17.         option ports '5 0t'
  18. ...
  19. ####### new settting ######
  20. config interface 'lan'
  21. ...
  22.         option ifname 'eth0.22'
  23. ...

  24. config interface 'wan'
  25. ...
  26.         option ifname 'eth0.11'
  27. ...
  28. config switch_vlan
  29.         option device 'switch0'
  30.         option vlan '11'
  31.         option vid '11'
  32.         option ports '1t 5'

  33. config switch_vlan
  34.         option device 'switch0'
  35.         option vlan '22'
  36.         option vid '22'
  37.         option ports '0t 1t 2 3 4'
复制代码

这个步骤更建议通过网页luci界面完成,因为openwrt vlan的端口与实际端口无直观对应,网页下设置不容易出错

2 取消LAN界面的DHCP服务

# vi /etc/config/dhcp
  1. ...
  2. config dhcp 'lan'
  3.     option interface 'lan'
  4.     option ignore '1'
  5. ...
复制代码



3 重启相应服务,使得上述更改生效
  1. # /etc/init.d/network restart
  2. # /etc/init.d/dnsmasq restart
复制代码



全部设定至此结束,RPi3的有线网口兼具WAN与LAN功能,其WAN端口eth0.11获得了上级光猫分配的IP地址,并由LAN端口eth0.22向接入路由的设备提供服务。连接到路由的设备可以正常上网,其分配的IP地址隶属RPi3指定的192.168.100.100/24网段。






补充内容 (2019-6-1 00:13):
Luci设置图片部分被遮挡,调整后的图片上传到53#。


更改内容(2019-8-26 18:15)
因为自己对设置内容很熟悉,就会忽略很多技术细节。原来的设定很容易导致路由器“失联”,因为路由器设置了新vlan ID(11, 22)而忘记同步更改原来LAN/WAN的VLAN ID(2, 1)。更改后就好了。

请大家设置时及时提出疑问,能让这篇指南帮到更多的人。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

你说的很对,我赞同你的说法。: 5.0
你说的很对,我赞同你的说法。: 5
干货赞一个  发表于 2019-9-15 11:09

评分

参与人数 1恩山币 +2 收起 理由
hc*** + 2 面对这种帖子,我内心复杂,真不知道说什么好……

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
 楼主| | 显示全部楼层

强烈推荐N1做主机替代RPi3:千兆网口,强劲CPU

本帖最后由 heq 于 2019-4-2 15:48 编辑

上述设置的主要亮点:
  • 全部操作对光猫透明,即光猫无须额外设置。
  • 路由支持vlan即可(基本能刷openwrt的多口路由均能使用,包括很多古董)
  • 特别适合单网口主机作软路由,一个网口同时实现WAN与LAN连接。通过规范的vlan隔离,进出数据不会冲突。
  • 如果主机有线网口速度够快(不建议使用本例中的RPi3,常见千兆网口在可预见的将来倒是足以应付宽带接入要求),单网口主机也能作为软路由实现多线接入。类似于WNDR4300的5口路由配上单网口主机,基本等同于4网口软路由。我本来打算买个4口工控小主机作为软路由提升家庭网络,目前看来已无必要。家里吃灰的联想A30电视盒子(CPU为VIA NANO  U3300,TDP 6.8W,主频1.2G,千兆有线网络)配合路由器完全可以替代。下步打算升级A30内存到8G,建立虚拟机平台后安装OpenWRT x86、ROS之类提升家用网络。
  • 设置后相当于用外部单网口主机与路由器合体,外置主机强大CPU替换路由器内部CPU。
  • 设置后另一个应用场景是双线接入:两个运营商的光猫均接入路由器,通过路由器与外部主机分别拨号建立两路外部通道,按不同去向进行分流。

实施的主要难点就是不太适合小白,需要具备linux基本知识并熟悉CLI操作。
答复几个回帖的质疑:

本帖的原创体现在vlan的实战操作,涉及路由器lan端口与vlan端口的不一致,外部主机的vlan对应设置。设置成功后路由器成为支持vlan的纯交换机,所有网络流量均经由RPi处理,单线复拨、多线接入都由RPi直接处理,方案复杂但基本一劳永逸。我看到的其它方案都是类似于路由器给RPi分配局域网的IP地址,再通过DHCP指定RPi为局域网内其它设备的gateway,简单方便。希望我的方案给大家多一种选择。

网上若有类似案例还请发出链接证明,我会修改标题的原创声明。

点评

写的很有参考价值,条理清楚,感谢! 不知道单臂路由和旁路由是否完全一样。感觉如果wndr4300负责拨号等一部分路由工作的话,这种是否叫旁路由更确切,(瞎猜啊)  详情 回复 发表于 2019-9-15 09:14
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

帅!
我也有个pi,可以拿出来耍了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
搞这么复杂。。才50M的宽带,加个USB有线网卡搞定。

点评

真相了hhh,不过生命在于折腾,加上有pi在手,大神肯定不能任由它吃灰的  详情 回复 发表于 2018-12-10 18:04
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

树莓派网卡性能着急,还是用斐讯N1吧
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

或者橙子派,有些型号有openwrt官方支持
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

标题不准确,容易误解。应该是单臂路由之 raspbian vlan 实现。或者叫 Raspberry Pi 3B 单臂路由设置。
至于 WNDR4300 刷 OpenWRT 当 具有 vlan 功能的交换机使用,是很常见的用法,不存在什么原创之说。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

不懂是什么意思,不是有路由了吗?还要个派是干啥用的。你也说了WNDR4300也能刷WRT的啊
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢楼主无私的分享与奉献!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

99010 发表于 2018-12-6 10:00
搞这么复杂。。才50M的宽带,加个USB有线网卡搞定。

真相了hhh,不过生命在于折腾,加上有pi在手,大神肯定不能任由它吃灰的

点评

C.w
50M小水管, 上面命令搞不定的可以用pi直接刷openwrt或许会简单点。  详情 回复 发表于 2018-12-16 07:41
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

我也用单臂路由,但没有用 vlan 划分 WAN 和 LAN ,所有流量都走 vlan0,ESXI下安装 OPENWRT 拨号。
不知道是否这个原因,拨号成功之后,大概1~2天在线时间,就offline了,看提示好像网卡有什么错误?
怀疑是电信机房重新分配 IP 的时候,OPENWRT 出错,这时重启网卡或系统可以重新分配到 IP。
暂时用脚本定时检测应对这个问题。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢楼主无私的分享与奉献!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

666666,不明觉厉
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

AK快递员 发表于 2018-12-10 18:04
真相了hhh,不过生命在于折腾,加上有pi在手,大神肯定不能任由它吃灰的

50M小水管
上面命令搞不定的可以用pi直接刷openwrt或许会简单点。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报


感谢楼主无私的分享与奉献!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 05:25

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表