Suse中的图形界面的YAST管理非常的友好,可以很方便直观的更改网卡IP,但是就是速度太慢了,对于象我这样需要频繁更换IP的网络管理员来说,实在是噩梦,所以图形的方式那是绝对效率过于低下了,必须使用命令的方式了。

Linux下的图形界面的系统管理操作实际上都是对命令的一些封装,界面友好与速度是有所冲突了,操作的简单,带来的速度的缓慢,所以Linux老鸟一般都不用图形界面修改配置的,Suse的网络配置文件存放在:/etc/sysconfig/network目录下,其中的类似ifcfg-eth-id-00:40:ca:c7:04:fc这样的文件是以太网卡的配置文件,文件名中的00:40:ca:c7:04:fc为网卡的MAC地址,类似ifcfg-wlan-id-00:0c:f1:1d:a5:6d这样的文件是无线网卡的配置文件,同样的文件名中的00:0c:f1:1d:a5:6d为无线网卡的MAC地址,而ifcfg-lo是本地环回的配置文件。ifcfg文件一般的配置格式如下:

 

BOOTPROTO='static'
BROADCAST=''
IPADDR='218.65.19.24'
MTU=''
NAME='FIRST INTERNATIONAL RTL-8139/8139C/8139C+'
NETMASK='255.255.255.224'
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
UNIQUE='JNkJ._Kgt7k3ca97'
USERCONTROL='no'
_nm_name='bus-pci-0000:02:05.0'

 

其中的IPADDR设置IP地址,而NETMASK为子网掩码。

routes文件是网关及路由表的配置文件,其格式一般如下:

 

0.0.0.0 192.168.1.254 0.0.0.0 wlan-id-00:0c:f1:1d:a5:6d
default 218.65.19.17 - -

 

第1行是,我们一条静态路由,格式为:目标子网 网关 掩码 网卡MAC ID,我的routes有这么一条,是我为了演示方便手工添加的,一般的routes没有这么一条。第2行为默认路由,也就是网关的设置,其中的IP就是网关的IP地址。

既然有这些文件,需要更改IP,只需要修改相应的配置文件(ifcfg和routes)就可以了,为了方便我们可以将我们需要经常更改IP的配置文件保存起来(注意不要保存在network目录下,如果保存在该目录下,系统启动的时候会去寻找ifcfg-eth-id-后面字符MAC的网卡,从而导致系统启动减慢,会导致进入XWINDOWS系统(KED、GNOME等)的速度都会变慢),在需要切换IP的时候,直接复制文件覆盖配置,然后使用/etc/init.d/network restart重新启动网络就可以。

比如,我现在两个需要经常相互切换的网络,一个IP是155.176.160.189/24,网关为155.176.160.254:用于业务网,另外一个IP是218.65.19.24/27,网关为218.65.19.17:用于上网,还有一个是家里的无线网络,因为不需要修改IP只是修改下网关就可以了,为了方便我分别为这两个网络作了两个配置文件,分别为ifcfg-eth-id-00:40:ca:c7:04:fc.abis/routes.abis,和ifcfg-eth-id-00:40:ca:c7:04:fc.internet/routes.internet,无线网关为:route.home另外在sbin目录下新建一个SHELL文件:chg_nets,方便切换IP:

 

! /bin/sh
config_path=/etc/sysconfig/network
config_path=/etc/sysconfig/network/custom
case "$1" in
       home)
                rm $config_path/ifcfg-eth-id-00:40:ca:c7:04:fc
                cp $custom_path/routes.home $config_path/routes
                cp $custom_path/ifcfg-wlan-id-00:0c:f1:1d:a5:6d.home $config_path/ifcfg-wlan-id-00:0c:f1:1d:a5:6d
                /etc/init.d/network restart
               ;;
       internet)
               cp $custom_path/routes.internet $config_path/routes
               cp $custom_path/ifcfg-eth-id-00:40:ca:c7:04:fc.internet $config_path/ifcfg-eth-id-00:40:ca:c7:04:fc
               /etc/init.d/network restart
               ;;
       abis)
               cp $custom_path/routes.abis $config_path/routes
               cp $custom_path/ifcfg-eth-id-00:40:ca:c7:04:fc.abis $config_path/ifcfg-eth-id-00:40:ca:c7:04:fc
               /etc/init.d/network restart
               ;;
       *)
               echo 'usage: chg_nets '
               ;;
esac

 

这样每次需要切换IP的时候,只需要在特权用户模式下,运行:chg_nets命令就可以了,如切换到上网地址:chg_nets internet