最近刚好也在弄Archlinux上面连线种花PPPoE的事情,就顺便纪录一下好了
嗯虽然基本上就是照抄Archlinux Wiki…
https://wiki.archlinux.org/index.php/Ppp
事前准备:
能动的种花浮动ip
"By the way I use Arch"通行证
systemd
1. 安装ppp这个package,按照ppp的Archlinux Wiki
在/etc/ppp/peers底下写自己需要的连线设定档
个人额外设定了lcp-echo-interval、lcp-echo-failure、以及holdoff等判断
断线与否/重连方式等的设定
以下讨论假定设定档为/etc/ppp/peers/dsl_provider
2. 同样依照ppp的Arch Wiki页面指示,在/etc/ppp/chap-secrets写入PPPoE连线资讯
因为种花是种花,所以可能pap-secrets也要写
个人是没有后者就连不上,猜测是种花目前还是采pap方式认证的缘故
3. pppd call dsl_provider尝试连线
如果ip link指令有ppp0之类的新接口出现的话代表应该已经连线成功
若否则可以照Wiki指示,用journalctl查看错误原因
而若已经有了新的ppp0之类字眼的接口
但是ip仍然不是种花的固定ip时
可以确认ip route看看目前的routing是否有把该接口当作默认
而dsl_provider里加入defaultroute
则可以在pppd call dsl_provider建立PPPoE连线时
自动将该PPPoE虚拟接口作为默认routing
4. 如果需要开机自动连线,建立/etc/ppp/peers/dsl资料夹
在该资料夹下建立一个provider软连结,连到/etc/ppp/peers/dsl_provider
而后systemctl enable [email protected]_provider启用daemon
这样重开机后应该会自动连上
5. poff -a可以关掉目前所有PPPoE连线
没什么大问题的话,至此应该有了可以动、可以关掉的种花PPPoE固定IP连线了。
接下来谈几个可能会出现的问题
1. ip route里ppp0前面有default字样
但是IP仍然不是种花给的IP
并且ip route给出来的资料不只有一行有前缀default
linux下routing是看定义的先后顺序以及metric值(0~100,default=0)决定的
metric小则优先,metric同则先定义者优先
因此若原本的浮动IP连线之类就已经有一个default卡著的话
需要用ip route del default之类的删掉之,而后视需求重新加回
如果是其他发行版的话,ppp可能会有额外的模组
可以直接在dsl_provider设定档内加入replacedefaultroute选项
如此在PPPoE连线成功后,daemon会帮你踢掉原本的default连线。
可惜Archlinux的ppp没有编入这个选项的支援,因此需要使用其他脚本解决
同样按照wiki指示,建立/etc/ppp/ip-pre-up、/etc/ppp/ip-pre-up.d/
其下放脚本处理之
2. networkmanager的nmcli看不到这个PPPoE连线
个人只玩过单用ppp完成PPPoE,这部份我也不清楚怎么弄出来
要看楼上那篇之类的@@
总之ip指令确定是相容的
3. defaultroute没有metric设定选项,默认的0有些过强
这部份我是弄了个脚本解决丢到/etc/ip-up.d/解决
因为平常还会用到VPN的关系,而该vpn工具默认的metric在50
而我希望连上VPN后VPN的优先权大于种花固定IP
所以才有了脚本里60这个数字
大致上是在PPPoE连线建立后删掉所有default route
然后把个人会用到的vpn以及PPPoE加回来
脚本:
https://github.com/LIParadise/Archlinux-PPPoE-config
你说我的bash怎么那么丑?
https://i.imgur.com/2lADnNX.jpg