Linux网络设置高级指南

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

准静态设置 静态设置适合于网络环境固定的情况,例如服务器、办公室电脑等。如果网络环境经常有变动,但是变动都是已知的,那么可以在/etc/network/interfaces文件中写入不固定的网络配置,这些配置不对应到具体的硬件设备名,例如: iface config1 inet dhcp iface config2 inet static address 192.168.11.100 netmask 255.255.255.0 gateway 192.168.11.1 dns-domain example.com dns-nameservers 192.168.11.1 可以手工运行ifupdown工具切换配置,例如将eth0切换到config1: ifup eth0=config1 将eth0切换到config2: ifdown eth0=config1 ifup eth0=config2 动态设置 如果网络环境经常变动而且是未知的,或者为了使用脚本等自动化工具达到完全驾驭网络的能力,那么静态和准静态设置就捉襟见肘了。 动态设置依赖iproute、isc-dhcp-client、wireless-tools、wpasupplicant等软件包,直接使用命令行,以达到最大的灵活性。 首先,/etc/network/interfaces文件仅保留回环设备lo的配置信息: auto lo iface lo inet loopback iproute替代了过时的net-tools等工具(ifconfig)。 通过“ip link”命令可以查询到当前所有网络设备的状态和参数,例如: root@X230:~# ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether 3c:97:0e:6d:e9:7c brd ff:ff:ff:ff:ff:ff 3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether 84:3a:4b:5b:7b:c8 brd ff:ff:ff:ff:ff:ff 可以看到当前eth0和wlan0设备都是处于关闭状态(这是显然的,因为/etc/network/interfaces文件中已经没有它们的配置信息了)。 使用“ip link set 设备名 up”命令可以启动设备,使用“ip link set 设备名 down”命令可以关闭设备。 对于有线(Wired)设备,上面讲过,无须做额外设置,链路层就可以正常工作了。 对于无线(Wireless)设备,需要使用wireless-tools、wpasupplicant完成链路层的连接。 例如扫描当前可用都无线连接,可以使用wavemon工具,或者使用“iwlist scan”命令。 例如连接Ad-Hoc。双方的essid、channel、cell(也就是iwconfig中的ap)均必须一致。双方创建连接谁先谁后都没有关系。例如: iwconfig wlan0 mode ad-hoc essid test channel 7 ap 0E:0E:0A:3A:10:3B key off 以上命令即刻生效。 例如连接WEP认证的无线网络: iwconfig wlan0 essid “myhome” key 0123-4567-89 如果要连接WPA认证的无线网络,wireless-tools就无可奈何了,必须使用wpasupplicant。 wpasupplicant并不是像wireless-tools一样简单地用命令行配一配就可以了,它必须先启动一个服务进程,然后使用另外一个命令行工具对服务进程进行设置,而且在WIFI连接期间该服务进程必须始终运行着。 为什么不和wireless-tools做在一起呢?真怪异,真恶心! 服务进程可以以后台方式启动,也可以以前台方式启动。 后台方式: wpa_supplicant -i wlan0 -D nl80211,wext -s -B -P /var/run/wpa_supplicant.wlan0.pid -C /var/run/wpa_supplicant 其中:-i指定设备名;-D指定认证协议;-s -B指定在后台运行,并且调试输出到syslog中;-C参数指定“ctrl_interface”的位置,注意,wpa_supplicant是可以有配置文件的,而且配置文件中可以记录WIFI的静态配置,类似于/etc/network/interfaces的功能,但是我们这里用不到,在没有配置文件的情况下,“ctrl_interface”是必不可少的,wpa_cli通过它与之交互。 前台方式: wpa_supplicant -i wlan0 -D nl80211,wext -dd -P /var/run/wpa_supplicant.wlan0.pid -C /var/run/wpa_supplicant 其中,-dd表示输出更详细的调试信息。 然后使用wpa_cli进行设置。wpa_cli可以工作在交互模式,也可以命令行模式。例如在交互模式下执行如下命令加入并启用网络: > add_network 0 > set_network 0 ssid “ChinaUnicom-Me” OK > set_network 0 key_mgmt WPA-PSK OK > set_network 0 psk “密码” OK > enable_network 0 OK 到上面为止,无论是有线网络还是无线网络,链路层已经连通了。下面就要使用iproute等工具进行网络层的设置。 如果要设置DHCP,很简单。例如: dhclient wlan0 -r dhclient wlan0 如果要手工设置地址,那么,例如: ip address add 192.168.1.3/24 dev wlan0 ip route add default via 192.168.1.1 dev wlan0 第一行增加IP地址,第二行设置默认路由。 最后,使用文本编辑器或者脚本修改/etc/resolv.conf的DNS设置,例如: echo nameserver 221.6.4.66 > /etc/resolv.conf 搞定,可以使用iwconfig和ifconfig查看当前设置。例如: iwconfig wlan0 && ifconfig wlan0 现在,写脚本就游刃有余了,例如下面就是我的笔记本电脑在家里的设置脚本: #!/bin/sh echo 清理工作 sudo killall wpa_supplicant sudo ip link set eth0 down sudo ip link set wlan0 down sudo ip addr flush eth0 sudo ip addr flush wlan0 echo 启用wlan0 sudo ip link set wlan0 up echo 链路层连接 sudo wpa_supplicant -i wlan0 -D nl80211,wext -s -B -P /var/run/wpa_supplicant.wlan0.pid -C /var/run/wpa_supplicant sudo wpa_cli add_network # 注意单引号套双引号 sudo wpa_cli set_network 0 ssid ‘”ChinaUnicom-Me”‘ sudo wpa_cli set_network 0 key_mgmt WPA-PSK sudo wpa_cli set_network 0 psk ‘”……..”‘ sudo wpa_cli enable_network 0 echo 网络层设置:IP地址和默认路由 sudo ip addr add 192.168.1.3/24 dev wlan0 sudo ip route add default via 192.168.1.1 dev wlan0 echo DNS设置 # 此处不能使用>符号,否则权限不够 sudo echo nameserver 221.6.4.66 | sudo tee /etc/resolv.conf

[1][2]

海阔凭鱼跃,天高任鸟飞。我要加油,冲向我的理想。

Linux网络设置高级指南

相关文章:

你感兴趣的文章:

标签云: