Linux 网络接口配置文件及相关工具
1、 关于网络接口及配置工具说明;
网络接口(interface)是网络硬件设备在操作系统中的表示方法,比如网卡在Linux操作系统中用 ethX,是由0开始的正整数,比如eth0、eth1...... ethX。而普通猫和ADSL的接口是 pppX,比如ppp0等;
在Linux操作系统中配置网络接口,一般是通过网络配置工具实现的,但最终目的还是通过网络配置工具来达到修改与网络相关的配置文件而起作用的。由此说来,我们配置网络可以直接修改配置文件。比如网络网络接口(网卡)的IP地址、子掩码、网关,在Slackware 中只需修改一个配置文件就行了 /etc/rc.d/rc.inet1 ,而在 Redhat/Fedora 等或以Redhat/Fedora 为基础的发行版中,一般要涉及到好几个文件,比如包括 /etc/sysconfig/network-scripts/ifcfg-eth0在内等。
了解Linux网络配置文件是极为重要的,我们通过工具修改了什么,是怎么生效的,只有了解网络配置文件才能搞清楚。做个不恰当的比喻:Linux 系统是一个透明的盒子,至于盒子里装的是什么都是一目了然的。而闭源操作系统,我们没有机会知道这些,更不知道他是怎么实现的。
对于复杂的网络模型,Linux 是有极大的优势,可能在我们看看man 和help,修改修改配置文件,在几分钟就可以搞定。但闭源图形界面的操作系统就没有这么幸运了,反复的点鼠标,点了几十次上百次也解决不了一个问题,这是极为常见的。
由于Linux存在很多的发行和版本,大多发行版本都有自己的专用配置工具。主要是为了方便用户配置网络;但也有通用的配置工具,比如 ifconfig 、ifup、ifdown;
2关于网络硬件设备的驱动;
我在以前的文档中有写过,网络硬件,比如网卡(包括有线、无线),猫包括普通猫和ADSL猫等,都是需要内核支持的,所以我们首先得知道自己的网络设备是不是已经被硬内核支持了。如果不支持,我们得找驱动(或通过内核编译)来支持它;
请参考:
3、ifconfig配置网络接口的工具介绍;
ifconfig 是一个用来查看、配置、启用或禁用网络接口的工具,这个工具极为常用的。比如我们可以用这个工具来临时性的配置网卡的IP地址、掩码、广播地址、网关等。也可以把它写入一个文件中(比如/etc/rc.d/rc.local),这样系统引导后,会读取这个文件,为网卡设置IP地址;不过这样做目前看来没有太大的必要。主要是各个发行版本都有自己的配置工具,无论如何也能把主机加入到网络中;
下面我们看看ifconfig 用法;
3.1ifconfig查看网络接口状态;
ifconfig 如果不接任何参数,就会输出当前网络接口的情况;
[root@localhost ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:C0:9F:94:78:0E inet addr:192.168.1.88 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::2c0:9fff:fe94:780e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:850 errors:0 dropped:0 overruns:0 frame:0 TX packets:628 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:369135 (360.4 KiB) TX bytes:75945 (74.1 KiB) Interrupt:10 Base address:0x3000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:57 errors:0 dropped:0 overruns:0 frame:0 TX packets:57 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:8121 (7.9 KiB) TX bytes:8121 (7.9 KiB)
解说:eth0 表示第一块网卡, 其中 HWaddr 表示网卡的物理地址,我们可以看到目前这个网卡的物理地址(MAC地址)是 00:C0:9F:94:78:0E ; inet addr 用来表示网卡的IP地址,此网卡的 IP地址是 192.168.1.88, 广播地址, Bcast:192.168.1.255,掩码地址Mask:255.255.255.0
lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如我们把HTTPD服务器的指定到回坏地址,在浏览器输入 127.0.0.1 就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道;
如果我们想知道主机所有网络接口的情况,请用下面的命令;
[root@localhost ~]# ifconfig -a
如果我们想查看某个端口,比如我们想查看eth0 的状态,就可以用下面的方法;
[root@localhost ~]# ifconfig eth0
3.2ifconfig配置网络接口;
ifconfig 可以用来配置网络接口的IP地址、掩码、网关、物理地址等;值得一说的是用ifconfig 为网卡指定IP地址,这只是用来调试网络用的,并不会更改系统关于网卡的配置文件。如果您想把网络接口的IP地址固定下来,目前有三个方法:一是通过各个发行和版本专用的工具来修改IP地址;二是直接修改网络接口的配置文件;三是修改特定的文件,加入ifconfig 指令来指定网卡的IP地址,比如在redhat或Fedora中,把ifconfig 的语名写入/etc/rc.d/rc.local文件中;
ifconfig 配置网络端口的方法:
ifconfig 工具配置网络接口的方法是通过指令的参数来达到目的的,我们只说最常用的参数;
ifconfig 网络端口 IP地址 hw <HW> MAC地址 netmask 掩码地址 broadcast 广播地址 [up/down]
* 实例一:比如我们用ifconfig 来调试 eth0网卡的地址
[root@localhost ~]# ifconfig eth0 down
[root@localhost~]#ifconfigeth0192.168.1.99broadcast192.168.1.255netmask255.255.255.0
[root@localhost~]#ifconfigeth0up
[root@localhost~]#ifconfigeth0
eth0Linkencap:EthernetHWaddr00:11:00:00:11:11
inetaddr:192.168.1.99Bcast:192.168.1.255Mask:255.255.255.0
UPBROADCASTMULTICASTMTU:1500Metric:1
RXpackets:0errors:0dropped:0overruns:0frame:0
TXpackets:0errors:0dropped:0overruns:0carrier:0
collisions:0txqueuelen:1000
RXbytes:0(0.0b)TXbytes:0(0.0b)
Interrupt:11 Base address:0x3400
注解: 上面的例子我们解说一下;
第一行:ifconfig eth0 down 表示如果eth0是激活的,就把它DOWN掉。此命令等同于 ifdown eth0;
第二行:用ifconfig来配置eth0的IP地址、广播地址和网络掩码;
第三行:用ifconfigeth0up来激活eth0;此命令等同于ifupeth0
第四行:用 ifconfig eth0 来查看 eth0的状态;当然您也可以用直接在指令IP地址、网络掩码、广播地址的同时,激活网卡;要加up参数;比如下面的例子;
[root@localhost ~]# ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 up
* 实例二:在这个例子中,我们要学会设置网络IP地址的同时,学会设置网卡的物理地址(MAC地址);
比如我们设置网卡eth1的IP地址、网络掩码、广播地址,物理地址并且激活它;
[root@localhost ~]# ifconfig eth1 192.168.1.252 hw ether 00:11:00:00:11:11 netmask 255.255.255.0 broadcast 192.168.1.255 up
或
[root@localhost~]#ifconfigeth1hwether00:11:00:00:11:22
[root@localhost ~]# ifconfig eth1 192.168.1.252 netmask 255.255.255.0 broadcast 192.168.1.255 up
其中 hw 后面所接的是网络接口类型, ether表示乙太网, 同时也支持 ax25 、ARCnet、netrom等,详情请查看 man ifconfig ;
3.3如何用ifconfig来配置虚拟网络接口;
有时我们为了满足不同的需要还需要配置虚拟网络接口,比如我们用不同的IP地址来架运行多个HTTPD服务器,就要用到虚拟地址;这样就省却了同一个IP地址,如果开设两个的HTTPD服务器时,要指定端口号。
虚拟网络接口指的是为一个网络接口指定多个IP地址,虚拟接口是这样的 eth0:0 、 eth0:1、eth0:2 ... .. eth1N。当然您为eth1 指定多个IP地址,也就是 eth1:0、eth1:1、eth1:2 ... ...以此类推;
其实用ifconfig 为一个网卡配置多个IP地址,就用前面我们所说的ifconfig的用法,这个比较简单;看下面的例子;
[root@localhost ~]# ifconfig eth1:0 192.168.1.251 hw ether 00:11:00:00:11:33 netmask 255.255.255.0 broadcast 192.168.1.255 up
或
[root@localhost~]#ifconfigeth1hwether00:11:00:00:11:33
[root@localhost ~]# ifconfig eth1 192.168.1.251 netmask 255.255.255.0 broadcast 192.168.1.255 up
注意:指定时,要为每个虚拟网卡指定不同的物理地址;
在 Redhat/Fedora 或与Redhat/Fedora类似的系统,您可以把配置网络IP地址、广播地址、掩码地址、物理地址以及激活网络接口同时放在一个句子中,写入/etc/rc.d/rc.local中。比如下面的例子;
ifconfig eth1:0 192.168.1.250 hw ether 00:11:00:00:11:44 netmask 255.255.255.0 broadcast 192.168.1.255 up
ifconfig eth1:1 192.168.1.249 hw ether 00:11:00:00:11:55 netmask 255.255.255.0 broadcast 192.168.1.255 up
解说:上面是为eth1的网络接口,设置了两个虚拟接口;每个接口都有自己的物理地址、IP地址... ...
3.4如何用ifconfig来激活和终止网络接口的连接;
激活和终止网络接口的用 ifconfig 命令,后面接网络接口,然后加上 down或up参数,就可以禁止或激活相应的网络接口了。当然也可以用专用工具ifup和ifdown 工具;
[root@localhost ~]# ifconfig eth0 down
[root@localhost~]#ifconfigeth0up
[root@localhost~]#ifupeth0
[root@localhost ~]# ifdown eth0
对于激活其它类型的网络接口也是如此,比如 ppp0,wlan0等;不过只是对指定IP的网卡有效。
注意:对DHCP自动分配的IP,还得由各个发行版自带的网络工具来激活;当然得安装dhcp客户端;这个您我们应该明白;
比如Redhat/Fedora
[root@localhost ~]# /etc/init.d/network start
Slackware 发行版;
[root@localhost ~]# /etc/rc.d/rc.inet1
4、Debian、Slackware、Redhat/Fedora、SuSE等发行版专用网络接口配置工具;
由于 ifconfig 用起来比较麻烦,而且是用来测试网络之用,但这个工具并不能修改网络接口的相应配置文件。虽然也能通过把ifconfig配置网络接口的语句写入类似/etc/rc.d/rc.local 文件中,但相对来说还是写入关于网络接口的配置文件中更为安全和可靠;但对于虚拟网络接口写入类似/etc/rc.d/rc.local 中还是可以的;
下面我们介绍一下各个发行版的网络接口配置工具;
4.1Debian网络接口配置文件和专用配置工具;
正在增加中;
4.2Redhat/Fedora网络接口的配置文件和网络接口专用配置工具;
在Redhat/Fedora 中,与乙太网卡相关的配置文件位于 /etc/sysconfig/network-scripts目录中,比如 ifcfg-eth0、ifcfg-eth1 .... ....
4.21Redhat/Fedora或类似这样的系统,网卡的配置文件;
</FONT?< p>比如在Fedora 5.0中,ifcfg-eth0 ;
如果您用DHCP服务器来自动获取IP的,一般情况下ifcfg-eth0的内容是类似下面这样的;
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
TYPE=Ethernet
如果您是指定IP的,一般内容是类似下面的;
DEVICE=eth0 注:网络接口
ONBOOT=yes注:开机引导时激活
BOOTPROTO=static注:采用静态IP地址;
IPADDR=192.168.1.238注:IP地址
NETMASK=255.255.255.0注:网络掩码;
GATEWAY=192.168.1.1 注:网关;
下面的几个选项也可以利用;
HOSTNAME=linxsir03 注:指定主机名;
DOMAIN=localdomain注:指定域名;
HWADDR=00:00:11:22:00:aa 注:指定网卡硬件地址 (MAC地址), 也可以省略,不过这在这里来更改MAC地址一般是不能生效的。还是通过前面所说的ifconfig的办法来更改吧;
4.22Redhat/Fedora或类似系统,配置网络的工具介绍;
在Redhat早期的版本中, 有linuxconf 、redhat-config-network 、netconfig 等工具;
在Redhat/Fedora 最新的版本有 system-config-network-tui (文本模式的) 、system-config-network (图形模式的),netconfig(文本模式的)。
这些工具都会直接修改Linux系统中关于网络接口的配置文件;这是 ifconfig 所不能比的;
其中 redhat-config-network 和system-config-network工具不仅仅是配置网卡的工具,还有配置ISDN和普通猫、ADSL的工具、网络硬件的添加、主机名字的配置、DNS各客户端的配置等。其实是一个工具组的集成;
这些工具比较简单,以root权限运行命令就能调用,比如:
[root@localhost ~]# /usr/sbin/system-config-network
[root@localhost ~]# system-config-network
如果您设置了可执行命令的环境变量,不用加路径就可以运行,但前提是您得安装这个网络管理工具;
不过值得一说的是netconfig 工具是一个在文本模式比较好的工具,推荐大家使用;理由是这个工具在文本模式下,也有一个简单的图形界面;还有命令模式;功能强着呢;
[root@localhost ~]# netconfig -d eth0 注:配置eth0
[root@localhost ~]# netconfig -d eth1 注:配置eth1
4.23Redhat/Fedora系统中的netconfig特别介绍;
netconfig这个工具,在Redhat/Fedora 或类似于它们的系统中都是存在的,这个工具比较强大。所以特别介绍一下。但在Slackware中netconfig是TEXT模式下有一个图形模式,但不能象ifconfig一样用命令来操作网卡接口;
netconfig 的用法如下:
[root@localhost ~]# netconfig --help 注:帮助;
--bootproto=(dhcp|bootp|none)Bootprotocoltouse(
--gateway=STRINGNetworkgateway(指定网关)
--ip=STRINGIPaddress(指定IP地址)
--nameserver=STRINGNameserver(指定DNS客户端)
--netmask=STRINGNetmask(指定网络掩码)
--hostname=STRINGHostname(指定主机名)
--domain=STRINGDomainname(指定域名)
-d,--device=STRINGNetworkdevice(指定网络设备)
--nodnsNoDNSlookups(没有DNS查询)
--hwaddr=STRINGEthernethardwareaddress(指定网卡的物理地址)
--description=STRINGDescriptionofthedevice(描述性文字)
Helpoptions:(帮助选项)
-?,--helpShowthishelpmessage
--usage Display brief usage message
实例一:设置网卡的DHCP模式自动获得IP
[root@localhost ~]# netconfig -d eth0 --bootproto=dhcp
实例一:手动设置网卡的IP等
[root@localhost ~]# netconfig -d eth0 --ip=192.168.1.33 --netmask=255.255.255.0 --gateway=192.168.1.1
4.3Slackware网卡配置文件和配置工具;
Slackware 有关网卡的配置文件是/etc/rc.d/rc.inet1.conf , 这个文件包括乙太网接口的网卡和无线网卡的配置。Slackware 还是比较纯净的,网络配置也较简单;在Slackware中也有netconfig 配置工具,也是text模式运行的,人机交互界面,这个设置比较简单;
Slackware 用netconfig 配置网卡完成后,其实质是修改了/etc/rc.d/rc.inet1.conf 文件。Slackware是源法原味的Linux系统,他的配置文件比较标准 ,所以我推荐您在生产型的系统,不妨尝试一下Slackware ;
配置好网卡后,我们还得运行下面的命令,才能激活网卡;
[root@localhost ~]# /etc/rc.d/rc.inet1
下面是一个例子,比如此机器有两个网卡eth0和eth1,eth0用DHCP获得IP地址,eth1指定IP地址;
# Config information for eth0:
IPADDR[0]=""
NETMASK[0]=""
USE_DHCP[0]="yes"注:在这里写上yes,表示用DHCP获得IP;
DHCP_HOSTNAME[0]="linuxsir01"注:DNS服务器主机名,也可以用IP来指定DNS服务器;
#Configinformationforeth1:注:网卡eth1的配置;
IPADDR[1]="192.168.1.33"注:指定IP地址;
NETMASK[1]="255.255.255.0"注:指定掩码;
USE_DHCP[1]="no"注:不用DHCP获得IP;
DHCP_HOSTNAME[1]=""
#Configinformationforeth2:
IPADDR[2]=""
NETMASK[2]=""
USE_DHCP[2]=""
DHCP_HOSTNAME[2]=""
#Configinformationforeth3:
IPADDR[3]=""
NETMASK[3]=""
USE_DHCP[3]=""
DHCP_HOSTNAME[3]=""
#DefaultgatewayIPaddress:
GATEWAY="192.168.1.1" 注:指定网关;
4.4SuSE或OpenSuSE网卡配置文件和配置工具;
正在更新之中;
5、关于拔号工具的介绍;
有的弟兄可能需要ADSL猫和普通猫的拔号工具;现在我们分别介绍一下;
5.1ADSLpppoe拔号工具rp-pppoe;
如果您的ADSL不是路由的,如果是路由的,在路由路就能设置好自动拔号。只要把机器接上就能用了,这个咱们不说了,路由器大家都会用;但如果您的ADSL不支持路由,或您想用您当前所用的主机来做路由器;这就需要一个拔号软件;
目前国内大多城市都用的是pppoe协议 ,所以我们有必要介绍 pppoe 拔号软件,在Linux中,这个软件的名字是 rp-pppoe ;
rp-pppoe 主页;
http://www.roaringpenguin.com/penguin/open_source_rp-pppoe.php
5.11各大发行版自带的rp-pppoe的安装和使用;
rp-pppoe 目前在各大发行版本都是存在的,比如Redhat/Fedora、红旗、Slackware、Debian、SuSE等系统,都是采用这个拔号软件,所以您大可不必为下载源码编译安装。只需要在各大发行版的安装盘中就可以找得到;请用各大发行版自带的软件包管理工具来安装此软件包;
* 如果您用的是各大发行版提供的rp-pppoe软件包
比如 RPM包的系统是用 rpm -ivh rp-pppoe*.rpmSlackware 系统是用 installpkg rp-pppoe*.tgz
在Redhat/Fedora 中可以通过图形配置工具来完成,redhat-config-network 命令,调用配置网络,要通过XDSL来添加拔号,比较简单;
所有发行版通用的方法是adsl-setup 命令来配置ADSL;
[root@localhost ~]# adsl-setup 注:配置pppoe拔号,请文档下面,都差不多;
[root@localhost~]#adsl-start注:启动拔号;
[root@localhost ~]# adsl-stop 注:断开连接;
5.12如果是源码包安装,我们要自己来编译安装;
[root@localhost ~]# tar zxvf rp-pppoe-3.8.tar.gz
[root@localhost~]#cdrp-pppoe-3.8
[[email protected]]#./go
WelcometotheRoaringPenguinPPPoEclientsetup.First,Iwillrun
somechecksonyoursystemtomakesurethePPPoEclientisinstalled
properly...
Looksgood!Now,pleaseentersomeinformation:
USERNAME
>>>EnteryourPPPoEusername([email protected]):在这里添写你的拔号用户名;就是服务商提供的;
>>>EntertheEthernetinterfaceconnectedtotheDSLmodem
ForSolaris,thisislikelytobesomethinglike/dev/hme0.
ForLinux,itwillbeethn,where'n'isanumber.
(defaulteth0):eth0如果是乙太接口的ADSL,就要在这里写上接猫的那个网络接口号。此处是eth0;
Doyouwantthelinktocomeupondemand,orstayupcontinuously?
Ifyouwantittocomeupondemand,entertheidletimeinseconds
afterwhichthelinkshouldbedropped.Ifyouwantthelinkto
stayuppermanently,enter'no'(twoletters,lower-case.)
NOTE:Demand-activatedlinksdonotinteractwellwithdynamicIP
addresses.Youmayhavesomeproblemswithdemand-activatedlinks.
>>>Enterthedemandvalue(defaultno):注:默认回车
>>>EntertheDNSinformationhere:202.96.134.133注:在这里写上DNS服务器地址;可以和提供商要,也可以用我写的这个;
PleaseentertheIPaddressofyourISP'ssecondaryDNSserver.
Ifyoujustpressenter,IwillassumethereisonlyoneDNSserver.
>>>EnterthesecondaryDNSserveraddresshere:202.96.128.143这是第二个DNS服务器地址;
>>>PleaseenteryourPPPoEpassword:在这里输入用户的密码;
>>>Pleasere-enteryourPPPoEpassword:确认密码;
Thefirewallchoicesare:
0-NONE:Thisscriptwillnotsetanyfirewallrules.Youareresponsible
forensuringthesecurityofyourmachine.YouareSTRONGLY
recommendedtousesomekindoffirewallrules.
1-STANDALONE:Appropriateforabasicstand-aloneweb-surfingworkstation
2-MASQUERADE:AppropriateforamachineactingasanInternetgateway
foraLAN
>>>Chooseatypeoffirewall(0-2):2注:在这里写上2,可以共享上网的;当然还得加一条防火墙规划;
EthernetInterface:eth0
Username:dxxx
Activate-on-demand:No
PrimaryDNS:202.96.134.133
SecondaryDNS:202.96.128.143
Firewalling:MASQUERADE
>>> Accept these settings and adjust configuration files (y/n)? y 注:是不是保存配置;
关于共享上网,请参考:《ADSL共享上网的解决办法》
5.2普通猫的拔号工具介绍;
普通猫分为串口和PCI的,请查看 《关于网络设备概述 》
普通猫的拔号工具主要有kppp和wvdial;在Redhat/Fedora中,用system-config-network 或redhat-config-network 也能设置ppp拔号;
在KDE桌面环境下,大家一般都用kppp拔号工具,点鼠标就可以完成;
wvdial工具是文本的,几乎在各大发行版都有。wvdial的配置文件是/etc/wvdial.conf 。如果您的猫已经驱动好了,运行一下wvdialconf命令就生成了/etc/wvdial.conf了 。当然您得查看一下它的内容;
[root@localhost ~]# wvdialconf
[root@localhost ~]# more /etc/wvdial.conf
关于wvdial工具的使用,请查看《普通 56K猫拔号上网工具 wvdial 介绍》
6、无线网卡;
正在更新之中;由于我没有这样的网卡,是否有弟兄写一篇详尽一点的?在所有涉及无线网卡的文档中,这块都是空白。缺的就是这个。
看来我是得弄一块无线网卡了。。。。。。
7、DNS客户端配置文件/etc/resolv.conf;
本来不应该把DNS客户端配置文件放在这里来说,但由于新手弟兄上网时,虽然能拔号,但不能以域名访问。究其原因是由于没有修改 /etc/resolv.conf 文件;/etc/resolv.conf 里面存放的是各大通信公司DNS服务器列表;下面的三个地址可以用一用;当然您可以打电话问你的服务商;
nameserver 202.96.134.133
nameserver202.96.128.143
nameserver 202.96.68.38
8、关于本文;
本文写了常用的乙太网接口的配置,介绍了ifconfig 、netconfig 等,我感觉最重要的还是配置文件,新手弟兄还是仔细看看配置文件吧。当您用工具配置完成后,不妨查看一下相应配置文件的变化。我认为这样的学习方式,能知其然,然后知所以然;
—— 北南南北 at LinuxSir.Org 2006-07-05
9、更新日志;
2006-07-05 v0.1b 初稿完成;
10、参考文档;
man 和help ;