再说Archlinux的网络配置(netcfg) » 荒野无灯weblog

Keep It Simple, Stupid.

荒野无灯weblog

再说Archlinux的网络配置(netcfg)

前言

前面写过关于Archlinux下面连接无线AP(http://ihacklog.com/?p=5741 , http://ihacklog.com/?p=4516 )和设置无线共享( http://ihacklog.com/?p=4923 )的文章。
其实Archlinux自带的netcfg包提供的更为便捷的网络配置和管理方式。因此,这里主要是说一下netcfg包及相关工具的使用,而不是介绍一些比较底层的命令。
默认的Archlinux使用的是network 这个daemon,而我这里要讲的是使用net-profiles 这个daemon.
这里都是讲的基于命令的网络配置,如果你喜欢GUI方式的,可以去这里看看。

Tip: 如果使用net-profiles/net-auto-wireless/net-auto-wired守护进程之一,你可以移除DAEMONS 中的 network 守护进程。
如果你挂载 NFS 启动,请确保 netfs 守护进程被保留,否则关机时,网络连接将在卸载 NFS 之前断开。

前面发文说了,netcfg有了比较大的改进(移动到[core]里了,并且增加了pppoe支持,不再在rc.local中进行配置…)。现在是全面支持各种类型的网络配置方案了。
根据连接类型与安全模式,在/etc/network.d/examples里包含了几乎所有日常生活和工作中要用到的网络连接方式。
在/usr/lib/network/connections 目录中,定义了所有由netcfg支持的连接类型。

┌─[admin@huangye] - [/usr/lib/network/connections] - [Sat Jun 02, 09:15]
└─[$] <> ls
bond  bridge  ethernet  openvpn  ppp  pppoe  tunnel  tuntap  vlan  wireless

因此,利用netcfg,我们可以在Archlinux下面方便的连接以太网/vpn/ppp,进行ADSL拨号,进行桥接,连接无线AP或路由,建立隧道链路等。

netcfg is used to configure and manage network connections via
profiles. It has pluggable support for a range of connection types,
such as wireless, ethernet, ppp. It is also capable of
starting/stopping many to one connections, that is, multiple
connections within the same profile, optionally with bonding.

It may be run at boot, by enabling the /etc/rc.d/net-profiles daemon in
/etc/rc.conf DAEMONS line. After boot time, it may be used to start
profiles, simply by passing only the profile name.

When run without options, netcfg profile is equivalent to netcfg -u
profile.

安装

pacman -S --needed netcfg
pacman -S --needed wpa_actiond ifplugd wpa_supplicant dialog bridge-utils

注:

wpa_actiond 用于自动连接无线网络(Wireless Roaming/autoconnect )
ifplugd 用于自动连接以太网(Wired link detection )。
wpa_supplicant: 用于无线网络认证
dialog: 菜单支持
bridge-utils: 用于建立桥接

netcfg常用命令参数

#列出当前可用profile(netcfg配置)
netcfg -l
netcfg list
#查看当前所用的配置
netcfg current
#启用配置(相当于netcfg profile-name)
netcfg -u profile-name
netcfg up profile-name
#重新连接
netcfg -r profile-name
netcfg reconnect profile-name
#断开连接
netcfg -d profile-name
netcfg down profile-name
#断开所有连接
netcfg -a
#或
netcfg all-down

配置文件位置

启动参数配置文件:
/etc/conf.d/netcfg
用户定义配置:
/etc/network.d/
当前支持的连接配置类型:
/usr/lib/network/connections/
示例连接配置:
/etc/network.d/examples/

用到的环境变量:
NETCFG_DEBUG
设置它为1后可以观察到详细的调试信息。
关于/etc/network.d/目录下面的连接配置文件参数的详细解释,可见:

man netcfg-profiles

Tips:
可用ip link 或 iwconfig 检查是否将INTERFACE设置为了正确的无线网络接口。
注意 WEP 字符密钥(wireless-wep-string-key) (不是 16进制 密钥) 必须在前面指定 s: (例 KEY=”s:somepasskey”).


连接无线网络

搜集网络信息
无线网络接口: 可以用 ifconfig 显示或者查看 /proc/net/wireless
网络名称/ESSID: 检查无线网络是不是在’隐藏’状态 — 通过iwlist scan能否搜查到呢?
网络用什么样的加密系统 ?
支持的网络安全结构有:无加密,WEP加密,WPA加密.
网络密码是什么? 只有在网络使用加密时才需要知道
IP设置, dhcp(自动获取)/static(静态地址)
大部分无线网络使用DHCP. 如果不知道的话,使用DHCP就可以了.

创建配置文件

在 /etc/network.d/ 下建立一个新的网络配置。这个配置,实际上就是在 /etc/network.d 里面的一个文件. 这个文件的名字就是这个配置的名字, 你可以随意的起名, 名字是与连接的设置没有关系的。

建立一个配置的最简单的方法, 就是拷贝/etc/network.d/examples里和你所相似的配置范例。
示例(连接无线路由):

┌─[admin@huangye] - [/etc/network.d] - [Sat Jun 02, 09:36]
└─[$] <> cat wireless-wpa 
CONNECTION='wireless'
DESCRIPTION='连接 WPA 加密方式的WIFI'
INTERFACE='wlan0'
SECURITY='wpa'

ESSID='ChinaNet-5R3F'
## Uncomment if the supplied ESSID is hexadecimal
#ESSID_TYPE='hex'
KEY='字符串或hex密钥'

IP='dhcp' 

# Uncomment this if your ssid is hidden
#HIDDEN=yes

如将上述配置保存为mywifi 的话,可以通过 netcfg up mywifi来启用此连接。
可以通过netcfg down mywifi 来断开此连接。
其它配置,如ADSL拨号,同样只需要copy 示例目录中的pppoe文件到 /etc/network.d/目录下面,修改下用户名和密码就OK了。
这里就不一一讲述每种网络连接的配置了。


开机自动连网

这里有两种方式,一种是menu,一种是自动连接指定的网络。
前者只需要把NETWORKS=()的那一行中括号中的值设置为menu即可。在开机时,会让你从所有可用的profile中选择一个来进行启用.这个对于经常要切换不同的网络的人比较方便。

NETWORKS=(menu)

后者对于上网环境比较固定的人比较实用。如有一个名为home的配置,只需要设置

NETWORKS=(home)

即可。

另外,要想开机连接网络就必须确保net-profiles 已经添加到你的rc.conf中的 DAEMONS=()里了。

Tips:
在连接网络前给 iwconfig 传递启动参数(只适用于netcfg 2.1以及更高版本)
IWCONFIG=”
处可以是任何有效的 iwconfig参数。程序会运行”iwconfig $INTERFACE $IWCONFIG
例如,设置bssid/ap mac(如果遇到一个变态,把ap的ssid设置为了中文,这个就相当有用了。没有测试过是否支持中文的ssid,不过,用中文的ssid总是比较蛋疼的事情):

IWCONFIG="ap 12:34:56:78:90:12"

好了,只说这么多了。
更多信息可以访问
https://wiki.archlinux.org/index.php/Netcfg
http://www.archlinux.org/netcfg/
http://www.archlinux.org/netcfg/features.html
man netcfg
man netcfg-profiles 或http://www.archlinux.org/netcfg/netcfg-profiles.5.html
Archlinux的网络配置wiki: https://wiki.archlinux.org/index.php/Configuring_Network

Tagged in : network,netcfg,net-profiles

All Comments (0)
Gravatar image
No Comments