2008年12月29日星期一

linux网络设置


1
关于网络接口及配置工具说明;








网络接口(interface)是网络硬件设备在操作系统中的表示方法,比如网卡在Linux操作系统中用
ethX,是由0开始的正整数,比如eth0eth1......
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 ifupifdown








2
关于网络硬件设备的驱动;








我在以前的文档中有写过,网络硬件,比如网卡(包括有线、无线),猫包括普通猫和ADSL猫等,都是需要内核支持的,所以我们首先得知道自己的网络设备是不是已经被硬内核支持了。如果不支持,我们得找驱动(或通过内核编译)来支持它;





请参考:








3ifconfig
配置网络接口的工具介绍;








ifconfig
是一个用来查看、配置、启用或禁用网络接口的工具,这个工具极为常用的。比如我们可以用这个工具来临时性的配置网卡的IP地址、掩码、广播地址、网关等。也可以把它写入一个文件中(比如/etc/rc.d/rc.local),这样系统引导后,会读取这个文件,为网卡设置IP地址;不过这样做目前看来没有太大的必要。主要是各个发行版本都有自己的配置工具,无论如何也能把主机加入到网络中;





下面我们看看ifconfig
用法;








3.1 ifconfig
查看网络接口状态;








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.2 ifconfig
配置网络接口;








ifconfig
可以用来配置网络接口的IP地址、掩码、网关、物理地址等;值得一说的是用ifconfig
为网卡指定IP地址,这只是用来调试网络用的,并不会更改系统关于网卡的配置文件。如果您想把网络接口的IP地址固定下来,目前有三个方法:一是通过各个发行和版本专用的工具来修改IP地址;二是直接修改网络接口的配置文件;三是修改特定的文件,加入ifconfig
指令来指定网卡的IP地址,比如在redhatFedora中,把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
~]# ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask
255.255.255.0


[root@localhost
~]# ifconfig eth0 up


[root@localhost
~]# ifconfig eth0


eth0 Link
encap:Ethernet HWaddr 00:11:00:00:11:11


inet
addr:192.168.1.99 Bcast:192.168.1.255 Mask:255.255.255.0


UP
BROADCAST MULTICAST MTU:1500 Metric:1


RX
packets:0 errors:0 dropped:0 overruns:0 frame:0


TX
packets:0 errors:0 dropped:0 overruns:0 carrier:0


collisions:0
txqueuelen:1000


RX
bytes:0 (0.0 b) TX bytes:0 (0.0 b)


Interrupt:11
Base address:0x3400





注解:
上面的例子我们解说一下;





第一行:ifconfig
eth0 down
表示如果eth0是激活的,就把它DOWN掉。此命令等同于
ifdown eth0


第二行:用ifconfig
来配置 eth0IP地址、广播地址和网络掩码;


第三行:用ifconfig
eth0 up
来激活eth0
; 此命令等同于
ifup eth0


第四行:用
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地址);





比如我们设置网卡eth1IP地址、网络掩码、广播地址,物理地址并且激活它;








[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
~]# ifconfig eth1 hw ether 00: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
ARCnetnetrom等,详情请查看
man ifconfig








3.3
如何用ifconfig
来配置虚拟网络接口;








有时我们为了满足不同的需要还需要配置虚拟网络接口,比如我们用不同的IP地址来架运行多个HTTPD服务器,就要用到虚拟地址;这样就省却了同一个IP地址,如果开设两个的HTTPD服务器时,要指定端口号。





虚拟网络接口指的是为一个网络接口指定多个IP地址,虚拟接口是这样的
eth0:0 eth0:1eth0:2
... .. eth1N
。当然您为eth1
指定多个IP地址,也就是
eth1:0eth1:1eth1: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
~]# ifconfig eth1 hw ether 00: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 命令,后面接网络接口,然后加上
downup参数,就可以禁止或激活相应的网络接口了。当然也可以用专用工具ifupifdown
工具;








[root@localhost
~]# ifconfig eth0 down


[root@localhost
~]# ifconfig eth0 up


[root@localhost
~]# ifup eth0


[root@localhost
~]# ifdown eth0





对于激活其它类型的网络接口也是如此,比如
ppp0wlan0等;不过只是对指定IP的网卡有效。








注意:对DHCP自动分配的IP,还得由各个发行版自带的网络工具来激活;当然得安装dhcp客户端;这个您我们应该明白;








比如Redhat/Fedora








[root@localhost
~]# /etc/init.d/network start





Slackware
发行版;








[root@localhost
~]# /etc/rc.d/rc.inet1








4DebianSlackwareRedhat/FedoraSuSE等发行版专用网络接口配置工具;








由于
ifconfig
用起来比较麻烦,而且是用来测试网络之用,但这个工具并不能修改网络接口的相应配置文件。虽然也能通过把ifconfig配置网络接口的语句写入类似/etc/rc.d/rc.local
文件中,但相对来说还是写入关于网络接口的配置文件中更为安全和可靠;但对于虚拟网络接口写入类似/etc/rc.d/rc.local
中还是可以的;





下面我们介绍一下各个发行版的网络接口配置工具;








4.1 Debian
网络接口配置文件和专用配置工具;








正在增加中;








4.2
Redhat/Fedora
网络接口的配置文件和网络接口专用配置工具;








Redhat/Fedora
中,与乙太网卡相关的配置文件位于
/etc/sysconfig/network-scripts目录中,比如
ifcfg-eth0ifcfg-eth1
.... ....








4.21
Redhat/Fedora
或类似这样的系统,网卡的配置文件;








比如在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.22
Redhat/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.23
Redhat/Fedora
系统中的netconfig
特别介绍;








netconfig这个工具,在Redhat/Fedora
或类似于它们的系统中都是存在的,这个工具比较强大。所以特别介绍一下。但在SlackwarenetconfigTEXT模式下有一个图形模式,但不能象ifconfig一样用命令来操作网卡接口;





netconfig
的用法如下:








[root@localhost
~]# netconfig --help
注:帮助;



--bootproto=(dhcp|bootp|none) Boot protocol to use


--gateway=STRING
Network gateway
(指定网关)


--ip=STRING
IP address
(指定IP地址)


--nameserver=STRING
Nameserver
(指定DNS客户端)


--netmask=STRING
Netmask
(指定网络掩码)


--hostname=STRING
Hostname
( 指定主机名)


--domain=STRING
Domain name
(指定域名)


-d,
--device=STRING Network device
(指定网络设备)


--nodns No
DNS lookups
(没有DNS查询)


--hwaddr=STRING
Ethernet hardware address
(指定网卡的物理地址)


--description=STRING
Description of the device
(描述性文字)


Help options:
(
帮助选项)


-?, --help
Show this help message


--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.3
Slackware
网卡配置文件和配置工具;








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





下面是一个例子,比如此机器有两个网卡eth0eth1eth0DHCP获得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服务器;


# Config
information for eth1:
注:网卡eth1的配置;


IPADDR[1]="192.168.1.33"
注:指定IP地址;


NETMASK[1]="255.255.255.0"
注:指定掩码;


USE_DHCP[1]="no"
注:不用DHCP获得IP


DHCP_HOSTNAME[1]=""


# Config
information for eth2:


IPADDR[2]=""


NETMASK[2]=""


USE_DHCP[2]=""


DHCP_HOSTNAME[2]=""


# Config
information for eth3:


IPADDR[3]=""


NETMASK[3]=""


USE_DHCP[3]=""


DHCP_HOSTNAME[3]=""


# Default
gateway IP address:


GATEWAY="192.168.1.1"
注:指定网关;








4.4
SuSE
OpenSuSE网卡配置文件和配置工具;








正在更新之中;








5、关于拔号工具的介绍;








有的弟兄可能需要ADSL猫和普通猫的拔号工具;现在我们分别介绍一下;








5.1 ADSL
pppoe
拔号工具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、红旗、SlackwareDebianSuSE等系统,都是采用这个拔号软件,所以您大可不必为下载源码编译安装。只需要在各大发行版的安装盘中就可以找得到;请用各大发行版自带的软件包管理工具来安装此软件包;






如果您用的是各大发行版提供的
rp-pppoe软件包





比如
RPM包的系统是用
rpm -ivh rp-pppoe*.rpm


Slackware
系统是用 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
~]# cd rp-pppoe-3.8


[root@localhost
rp-pppoe-3.8]# ./go


Welcome to
the Roaring Penguin PPPoE client setup. First, I will run


some checks
on your system to make sure the PPPoE client is installed


properly...


Looks good!
Now, please enter some information:


USER NAME


>>>
Enter your PPPoE user name (default bxxxnxnx@sympatico.ca):
在这里添写你的拔号用户名;就是服务商提供的;


>>>
Enter the Ethernet interface connected to the DSL modem


For Solaris,
this is likely to be something like /dev/hme0.


For Linux, it
will be ethn, where 'n' is a number.


(default
eth0): eth0
如果是乙太接口的ADSL,就要在这里写上接猫的那个网络接口号。此处是eth0


Do you want
the link to come up on demand, or stay up continuously?


If you want
it to come up on demand, enter the idle time in seconds


after which
the link should be dropped. If you want the link to


stay up
permanently, enter 'no' (two letters, lower-case.)


NOTE:
Demand-activated links do not interact well with dynamic IP


addresses.
You may have some problems with demand-activated links.


>>>
Enter the demand value (default no):
注:默认回车


>>>
Enter the DNS information here: 202.96.134.133
注:在这里写上DNS服务器地址;可以和提供商要,也可以用我写的这个;


Please enter
the IP address of your ISP's secondary DNS server.


If you just
press enter, I will assume there is only one DNS server.


>>>
Enter the secondary DNS server address here: 202.96.128.143
这是第二个DNS服务器地址;


>>>
Please enter your PPPoE password:
在这里输入用户的密码;


>>>
Please re-enter your PPPoE password:
确认密码;


The firewall
choices are:


0 - NONE:
This script will not set any firewall rules. You are responsible


for
ensuring the security of your machine. You are STRONGLY


recommended
to use some kind of firewall rules.


1 -
STANDALONE: Appropriate for a basic stand-alone web-surfing
workstation


2 -
MASQUERADE: Appropriate for a machine acting as an Internet gateway


for
a LAN


>>>
Choose a type of firewall (0-2): 2
注:在这里写上2,可以共享上网的;当然还得加一条防火墙规划


Ethernet
Interface: eth0


User name:
dxxx


Activate-on-demand:
No


Primary DNS:
202.96.134.133


Secondary
DNS: 202.96.128.143


Firewalling:
MASQUERADE


>>>
Accept these settings and adjust configuration files (y/n)? y
注:是不是保存配置;





关于共享上网,请参考:《ADSL共享上网的解决办法》








5.2
普通猫的拔号工具介绍;








普通猫分为串口和PCI的,请查看
《关于网络设备概述





普通猫的拔号工具主要有kpppwvdial;在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、无线网卡;








正在更新之中;由于我没有这样的网卡,是否有弟兄写一篇详尽一点的?在所有涉及无线网卡的文档中,这块都是空白。缺的就是这个。





看来我是得弄一块无线网卡了。。。。。。








7DNS客户端配置文件/etc/resolv.conf








本来不应该把DNS客户端配置文件放在这里来说,但由于新手弟兄上网时,虽然能拔号,但不能以域名访问。究其原因是由于没有修改
/etc/resolv.conf 文件;


/etc/resolv.conf
里面存放的是各大通信公司DNS服务器列表;下面的三个地址可以用一用;当然您可以打电话问你的服务商;








nameserver
202.96.134.133


nameserver
202.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








11、相关文档;








Linux
网络基础》


《改变网络接口的速度和协商方式的工具miitool
ethtool








没有评论: