JuncoJet 发表于 2019-8-17 12:56:51

用CentOS做一台单网卡单线10拨路由器,榨干某信带宽

  自从家里宽带升级到了200M就捣腾这捣腾那的,因为原先用的MikroTik(ROS系统)路由器是个百兆的,虽然能够使用单线4拨,但速度也上不了100M了。于是破解光猫超管密码,使用光猫直接路由,下行230M上行40M左右速度挺满意的。毕竟相比去年家里30M带宽多拨后达到98M强太多了。用了没过多久抑制不住一颗蠢蠢欲动的心,想当年30M多拨能达到接近100M,要是200M多拨,这还不逆天!于是网上目测了几款千兆路由,首选的还是MikroTik的路由,毕竟用了多年,对功能和性能了如指掌。备选的是D525/N2600的软路由,J1900的软路由主板太新可玩性差暂不考虑。还有就是新路由3(Newifi 3),因为之前玩过Newifi Y1,刷breed和潘多拉,单线4拨,给爸妈用了。功能方面的话不是很强,性能和稳定性还行,内存大、不到100元价格,性价比极高。
https://attach.52pojie.cn/forum/201908/16/172705gblaqplzabupbrzb.jpg
  还有就是自己组装一台软路由的想法,网上目测主板、电源、千兆网卡等。最初的想法是弄一个D2550的主板,主板带PCIE 1X槽,可以扩充多口的千兆网卡,链路聚合啥的。而且听说D2550是D525的升级版,比之前观望的D252/N2600软路由都会强不少,并且二手主板价格相当的便宜。直到一块华擎的APU主板出现在我的面前,通体漆黑上一抹蓝凸显雍容华贵惊艳四方的一块主板。这主板拥有PCIE 16X扩展槽,9路音频输出,SPDIF输出,USB3.0。更主要的是D2550主板只有两个SATA,这主板拥有了4个SATA,更适合装在NAS机箱。并且使用的是台式机的大内存条,稳定性和速度(可能一样,但作者持怀疑态度)应该更高于小内存条。店家宣称支持自由超频(当时没仔细研究这是啥,以为可以随便超频的意思,结果入了坑),更重要的是什么还支持虚拟化(给万一搞不了CentOS,还能虚拟话成ROS、iKuai、LEDE之类的留了退路,单单装这些路由系统的话,个人感觉是不怎么值的可玩性太低)
https://attach.52pojie.cn/forum/201908/16/172707yhlzzuols2z4suhi.jpg
  经过漫长的几个星期的纠结,茶饭不思,日渐消瘦,哎。到处借钱骗红包,终于攒足了钱,买下了机箱和E350主板。如下图,花了一小时组装好,装系统开机。不得不说这机箱的硬盘架,只能支持螺丝屁股小于6mm的沉孔螺丝,由于没有这种规格的螺丝,硬盘没法固定在硬盘架上,插上主机的时候也插不紧,差点以为主板是坏的,因为开机就只会卡在BIOS的界面。重新插了硬盘之后正常使用,主板上面的CPU的风扇插错的通道,插在机箱风扇上,没法自动控制,实在是声音大找了一圈终于找到了一个没有字的插针。
https://attach.52pojie.cn/forum/201908/16/174331k8szdcgljlgg8be1.jpg
https://attach.52pojie.cn/forum/201908/16/172752rvzzlmjpmk6nelmm.jpg
https://attach.52pojie.cn/forum/201908/16/173648idwjh8pddzabarra.jpg
  接下来进入正题,如何进行拨号上网?yum install –y rp-pppoe先安装Linux通用拨号程序,几乎所有的Linux都是用这个拨号程序的。安装好rp-pppoe之后,可以使用pppoe-setup进行账号密码和DNS设置,这边怎么设置的省略,按照提示输入就行了。完成之后会保存成配置文件/etc/sysconfig/network-script/ifcfg-ppp0,可以简单的使用ifup ppp0命令来直接进行拨号连接。下面这张简易拓扑图(伪拓扑图)大致的讲解下结构。
https://attach.52pojie.cn/forum/201908/16/172745a3gucnfzu3c3wc30.jpg
  拨号后设置nat转发,就能实现简易路由,代码如下
  echo 1 > /proc/sys/net/ipv4/ip_forward
  iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
  实测网速下行大概在190M左右,上行在34M左右,网速有点缩水。查看网卡的工作模式确实是在1000M模式的,只不过网卡驱动是RTL8169的,网上搜索了下,有很多人反应,8169的网卡驱动在RTL8111的网卡上存在不兼容无法使用的问题。于是下载驱动源码(RTL8168)、下载内核头文件、编译器,重新编译内核,装上驱动后问题依旧。猜测可能螃蟹厂的RTL 8111E网卡不行(网上说E和F是这个系列里最好的,G、H啥的都是阉割的),于是作者又买了块Intel 82576的4口网卡,挺贵的艹艹艹,舍不得孩子套不着狼。到手后装上立马测试,还是达不到预期的速度,top命令查看pppoe的资源情况,单个进程的占用CPU比较高,能达到98左右。但总体CPU占用情况12%,并不很高。然后又测试了网卡的转发性能,并没有问题,可以排除掉南北桥性能问题。那剩下的唯一可能就是APU上的pppoe程序没有优化,于是放弃yum上安装的成品rp-pppoe 3.10二进制包,从网上下载3.13的源码自行编译安装,性能稍微有些提升。先将就着用吧,万一多拨之后能比较大的提升呢(然并软)。
https://attach.52pojie.cn/forum/201908/16/173245beddgua7c8eytqed.jpg
  rp-pppoe存在一个流弊的BUG,就是单网卡(同MAC地址)多播,这个特性可以突破我这个地区4拨(在MikroTik上使用VRRP最多只能4拨)的限制,甚至100拨都不是问题。本文下面内容就是讲4拨和10拨下的测试。rp-pppoe多拨设置,命令如下
  pppoe-content /etc/sysconfig/network-script/ifcfg-ppp0
https://attach.52pojie.cn/forum/201908/16/174106mq7el67c864uqlz8.jpg 多拨之后别的电脑可能就无法再拨号了
  需要几拨就执行几次,然后设置iproute2的负载均衡。这貌似是个新特性,相当的不错,配置起来so easy。妈妈再也不用担心我玩游戏卡(大雾)。下面一句话搞定
  ip route replace default equalize nexthop dev ppp0 weight 1 nexthop dev ppp1 weight 1
  有几路就连续写几个nexthop,weight 1就是权重一样,平均分配带宽。最后我们要设置nat转发,和上面的差不多,只不过也是有几拨就要设置几个转发。
  iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
  iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE
  …
  完成后简易的路由器就成了,不过目前只有路由功能,DHCP和DNS功能我们稍后再加上。我已经迫不及待的想要来跑个分了。下面是4拨的情况下相关数据,某信的官方测试客户端不支持多线程,所以使用这个网站进行测试。测试结果应该算是比较准的吧,实际情况可能比测试更高些。签约带宽上行30M,测试下来114M的上行可以看出,应该是配置成功了。测试过程中用sar命令监控各路拨号的负载情况如下图。
https://attach.52pojie.cn/forum/201908/16/172926h8nh7l8nm37n753e.jpg
https://attach.52pojie.cn/forum/201908/16/172921m09a8fj859agdd59.jpg
https://attach.52pojie.cn/forum/201908/16/172923xi3oaoawilqpwi3l.jpg
  把剩下的事做完,关闭掉光猫自带的DHCP,并自建DHCP和DNS服务器。一句话安装dnsmasq,公司的DNS服务器我就用这个,400多人使用,做了2000条缓存,性能和可靠性杠杠的。为手艺人点赞,不对,为这软件和作者点赞。
https://attach.52pojie.cn/forum/201908/16/173138s4gtrgzvqjewrjbt.jpg
  yum install –y dnsmasq
  vim /etc/dnsmasq.conf 编辑配置文件,我的配置如下图
https://attach.52pojie.cn/forum/201908/16/172958vkkiicnihvxqcnit.jpg
  /etc/init.d/dnsmasq start
  完成之后,重启自己电脑网卡就能从配置的DHCP服务器上获取到信息,并且UBNT的无线AP也能正常的使用了。实测跑分是差了点,但两台小米电视看4K毫无压力。Intel这网卡支持多队列(mq),听说性能是螃蟹厂的网卡所不能比拟的。以作者人品担保,带机500台肯定是没有问题的(瞎说)。
https://attach.52pojie.cn/forum/201908/16/173009yc7j3q3thw3zjv55.jpg
https://attach.52pojie.cn/forum/201908/16/173217cam5raoghhrbhged.jpg
eth0-3 intel 网卡支持mq,eth4 rtl8111e 网卡不支持
https://attach.52pojie.cn/forum/201908/16/174026llfol0fbfkwfff0o.jpg
  最终的所有配置是这样的
https://attach.52pojie.cn/forum/201908/16/174229znbouwb0u3z0sabz.jpg
https://attach.52pojie.cn/forum/201908/16/174233rhe9j4rjzh9zrlzh.jpg
  安装transmission下两部片,草鸡快。做种上传更是达到了惊人的144M。不知什么时候家里的宽带某信给恢复了公网IP,真是业界良心啊。拥有10个公网IIP就是一个字爽。
https://attach.52pojie.cn/forum/201908/16/173032wncda3ddo8d48zvm.jpg
https://attach.52pojie.cn/forum/201908/16/173038gwztadwaywbtdidd.jpg
  大功告成,再为我的小路由器安装个花生壳。方便上班的时候投递种子(大雾),我说我只是为了远程管理,你们信吗。
https://attach.52pojie.cn/forum/201908/16/173052guz7egdxupebcg2g.jpg
  总结,这个廉价的方案比较适合单网卡的NAS来做软路由,树莓派也可以,系统不一样,方法同理。性能能不能提升还得看人品,并且这是最简单的配置方法,正规的配置会用到nth来负载均衡,这里没有介绍可以看下面参考文献(因为太复杂我也懒得调)。其他NAS的功能无非是网络共享之类的,可以装SAMBA服务,视频转流媒体转换可以用FFMPEG+NGINX来实现HLS,部署起来也不是很难的。

参考文献
https://blog.csdn.net/com_stu_zhang/article/details/7815775
https://blog.csdn.net/l1902090/article/details/25780231
https://blog.csdn.net/wdscq1234/article/details/52643637
https://blog.csdn.net/bupt_tinyfisher/article/details/10255393

JuncoJet 发表于 2019-8-17 13:02:23

负载均衡配的简单,也有可能配的是有问题的。下行缩水一半,只有100M,上行可达144M。
用nth来配可能是有必要的,暂且先娱乐下。

Zephyr1996 发表于 2019-8-17 20:01:11

这才是大佬玩法

guolin 发表于 2019-8-17 21:18:22

这是真大佬......你那能多拨真是爽呆了

nnsat 发表于 2019-9-18 20:26:10

大神牛啊,就凭这大凶之罩,借500都得{:7_200:}

qyz3006 发表于 2019-9-21 11:27:38

mule007 发表于 2019-9-24 16:09:57

多wlan上网拨号软件或者多口拨号路由器就可以了 电信带宽是针对单机拨号 下发数据VLAN一样的情况下 宽带账号支持多终端拨号 就可以玩 我之前50M带宽最高可达200M 然后就被上门维修了 后台检测数据不正常

FXian 发表于 2019-11-14 11:14:44

我们这早就封了多拨了

houjievip 发表于 2019-11-22 10:09:28

早就不能玩了

墨ēnG 发表于 2020-3-10 16:52:24

大神,请收下俺的膝盖
页: [1] 2
查看完整版本: 用CentOS做一台单网卡单线10拨路由器,榨干某信带宽