前几天拉了网,普通的 ADSL 宽带,由于没有路由器,因此只能通过自身的拨号。

在 Arch Linux 下,可以通过自带的 Netcfg 来连接,可以通过 RP-PPPoE 来连接,也可直接配置 pppd 实现拨号。

Netcfg

这款软件,从它需要安装,到 Arch 自带,功能不断地增强,使用越来越方便,现在已经支持 ADSL 拨号,简单快速。

从实例中复制 pppoe 作为 adsl 拨号的配置

# cp /etc/network.d/examples/pppoe /etc/network.d/fooleap

只需修改这两行中的用户名和密码

/etc/network.d/fooleap
USER='example@yourprovider.com'
PASSWORD='very secret'

尝试拨号

# netcfg fooleap

添加守护进程实现自动联网

# systemctl enable netcfg@fooleap

RP-PPPoE

安装 rp-pppoe

# pacman -S rp-pppoe

启动配置程序,按提示,一般填上用户名、密码、 DNS 服务器即可

# pppoe-setup

拨号

# pppoe-start

作为守护进程启动

# systemctl enable adsl

注:若在 pppoe-setup 没有设定 DNS 服务器,记得手动搞定 /etc/resolv.conf

pppd

仔细观察,不难发现,通过 Netcfg 及 RP-PPPoE 拨号后,都是启用了 pppd 进程,所以 Netcfg、RP-PPPoE 只是配角,提供自动化脚本方便使用 pppd,真正的主角是 pppd,手动配置 pppd 理论上更省资源。

在 /etc/ppp/peers 这个目录下创建一个文件,如 fooleap,内容如下,其实一般只需改“帐号”,即宽带帐号

/etc/ppp/peers/fooleap
plugin rp-pppoe.so
# 不需要安装 rp-pppoe 这个包
eth0
name "帐号"
usepeerdns
persist
defaultroute
hide-password
noauth

编辑 /etc/ppp/pap-secrets

/etc/ppp/pap-secrets
"帐号" * "密码"

pap-secrets 文件的权限设为 600

# chmod 600 /etc/ppp/pap-secrets

拨号,只需使用 pppd call your_provider,your_provider 即刚创建于 /etc/ppp/peers 下的文件名,此例中是

# pppd call fooleap

若没有连上,检查 eth0 端口有没激活

$ ifconfig eth0 | grep UP

没返回即没被激活,可以使用下面命令激活 eth0 端口

# ifconfig eth0 up

连接也可以使用 pon ( 这脚本藏在 /usr/bin/pon )

# pon fooleap

断开连接可以使用 poff

# poff fooleap

也可以直接 kill 它

# killall pppd

做软链接 /etc/ppp/peers/provider,就可以直接通过 pon 这个命令拨号,断开链接也就可以直接使用 poff 啦

# ln -s /etc/ppp/peers/fooleap /etc/ppp/peers/provider

设置为守护进程

自动加载 ppp_generic 模块

# echo "ppp_generic" > /etc/modules-load.d/ppp.conf

添加守护进程

# systemctl enable ppp@fooleap

注:可以用 systemd 将激活端口及拨号作为守护进程,实现自动拨号,参考 systemd 初体验

鄙人折腾了许久,还是没成功,不知道是 Arch 和 Gentoo 有区别,还是哪里出现问题,搞定告知哈~

参考资料

本文历史

  • 2013 年 01 月 02 日 完成初稿