Linux基础网络设置
Linux基础网络设置
1. 查看及测试网络
1.1 查看网络配置
1.使用ifconfig命令——查看网络接口地址
主机的网络接口卡(网卡)通常称为”网络接口“,在Linux系统中使用ifconfig命令可以查看网络接口的地址配置信息(Interface Configuration)。
1)查看活动的网络接口设备
当ifconfig命令不带任何选项和参数时,将显示当前主机中已启用(活动)的网络接口信息。例如,直接执行ifconfig命令后可以看到eth0,lo这两个网络接口的信息。
[root@sky ~]
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:FD:D8:65
inet addr:172.16.1.128 Bcast:172.16.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fefd:d865/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:393 errors:0 dropped:0 overruns:0 frame:0
TX packets:43 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:38617 (37.7 KiB) TX bytes:5004 (4.8 KiB)
eth1 Link encap:Ethernet HWaddr 00:0C:29:FD:D8:6F
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fefd:d86f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:559 (559.0 b) TX bytes:1110 (1.0 KiB)
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:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:720 (720.0 b) TX bytes:720 (720.0 b)
在上述输出结果中eth0对应为第1块物理网卡,lo对应为虚拟的回环接口。
➣ eth0:第1块以太网卡的名称。”eth0“中的“eth”是”ethernet”的缩写,表示网卡类型为以太网,数字“0“表示第几块网卡。由于大多数主机中只有一块物理网卡,因此”eth0“代表系统中唯一的网络接口。如果有多个物理网卡,则第2块网卡表示为”eth1”以此类推。
➣ lo:回环网络接口”lo“是"loopback"的缩写,它并不代表真正的网络接口,而是一个虚拟的网络接口,其IP地址默认是“127.0.0.1"。回环地址通常仅用于对本机的网络测试。
2)查看指定的网络接口信息
当只需要查看其中某一个网络接口的信息时,可以使用网络接口的名称作为ifconfig命令的参数(不论该网络接口是否处于激活状态)。例如,执行"ifconfig eth0”命令后可以只查看网卡eth0的配置信息。
[root@sky ~] # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:FD:D8:65 inet addr:172.16.1.128 Bcast:172.16.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fefd:d865/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1538 errors:0 dropped:0 overruns:0 frame:0 TX packets:70 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:140415 (137.1 KiB) TX bytes:8458 (8.2 KiB) |
从上述命令显示的结果中可以获知eth0网卡的一些基本信息,如下所述:
➣ ”HWaddr":表示网络接口的物理地址(MAC地址),如"00:OC:29:57:8B:DD"。网络接口的物理地址通常不能更改,是网卡在生产时确定的全球唯一的硬件地址。
➣ ”inetaddr“表示网络接口的IP地址,如”172.16.1.128“。
➣ "Beast":表示网络接口所在网络的广播地址如"172.16.1.255”。
➣ “Mask”:表示网络接口的子网掩码,如“255.255.255.0“。
除此以外还能够通过”TX“、“RX”等信息了解到通过该网络接口发送和接收的数据包个数,流量等更多属性。
2.使用hostname命令——查看主机名称
在Linux系统中相当一部分网络服务都会通过主机名来识别本机,如果主机名配置不当可能会导致程序功能出现故障。使用host name命令可以查看当前主机的主机名,不用添加任何选项或参数。
[root@sky ~]
# hostname
sky
3.使用route命令——查看路由表条目
Linux系统中的路由表决定着从本机向其他主机,其他网络发送数据的去向,是排除网络故障的关键信息,直接执行route命令可以查看当前主机中的路由表信息,在输出结果中,Destination列对应目标网段的地址,Gateway列对应下一跳路由器的地址,lface列对应发送数据的网络接口。
[root@sky ~] # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 * 255.255.255.0 U 1 0 0 eth1 172.16.1.0 * 255.255.255.0 U 1 0 0 eth0 default 172.16.1.1 0.0.0.0 UG 0 0 0 eth0 |
当目标网段为 ”Default“ 时,表示此行是默认网关记录;当下一跳为 ”*“ 时表示目标网段是与本机直接相连的。例如,从上述输出信息中可以看出当前主机与172.16.1.0/24网段直接相连,使用的默认网关地址是172.16.1.1。
若结合”-n“选项使用,可以将路由记录中的地址显示为数字形式,这可以跳过解析主机名的过程,在路由表条目较多的情况下能够加快执行速度。例如执行“route -n"命令后,输出信息中的”*”地址将显示为“0.0.0.0”,默认网关记录中的defaule也将显示为"0.0.0.0"。
[root@sky ~] # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1 172.16.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 0.0.0.0 172.16.1.1 0.0.0.0 UG 0 0 0 eth0 |
4.使用netstat命令——查看网络连接情况
通过netstat命令可以查看当前系统的网络连接状态、路由表、接口统计等信息,是了解网络状态及排除网络服务故障的有效工具。以下是netstat命令常用的几个选项:
➣ -a:显示当前主机中所有活动的网络连接信息(包括监听,非监听状态的服务端口)
➣ -n:以数字的形式显示相关的主机地址,端口等信息。
➣ -r:显示路由表信息。
➣ -l:显示处于监听(Listening),状态的网络连接及端口信息。
➣ -t:查看TCP协议相关的信息。
➣ -u:显示UDP协议相关的信息。
➣ -p:显示与网络连接相关联的进程号,进程名称信息(该选项需要root权限)。
通常使王”-ampt“组合选项,以数字形式显示当前系统中所有的TCP连接信息,同时显示对应的进程信息,结合命令管道使用"grep“命令,还可以在结果中过滤出所需要的特定记录,例如,执行以下操作可以查看本机中是否有监听”TCP 21“端口(即标准FTP服务)的服务程序。输出信息中包括PID号和进程名称。
[root@sky ~]
# netstat -anpt | grep ":21"
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 29785/vsftpd
1.2 测试网络连接
1. 使用ping命令——测试网络连通性
使用ping命令可以向目的主机持续地发送测试数据包,并显示反馈结果,直到按Ctrl+c组合键后中止测试,并显示最终统计结果,例如,以下操作将测试从本机到另一台主机172.16.1.22的连通性情况,连接正常时会收到返回的数据包。
[root@sky ~] # ping 172.16.1.22 PING 172.16.1.22 (172.16.1.22) 56(84) bytes of data. 64 bytes from 172.16.1.22: icmp_seq=1 ttl=64 time=0.249 ms 64 bytes from 172.16.1.22: icmp_seq=2 ttl=64 time=0.491 ms |
...... //按Ctrl+c组合键终止执行
执行ping测试命令时若不能获得从目标主机发回的反馈数据包,则表示在本机到目标主机之间存在网络连通性故障。例如,若看到”Destination Host Unreachable“的反馈信息则表示目的主机不可达,可能目标地址不存在或者主机已经关闭;若看到”Network is unreachable“的反馈信息,则表示没有可用的路由记录(如默认网关)无注达到目标主机所在的网络。
[root@sky ~] # ping 172.16.1.123 PING 172.16.1.123 (172.16.1.123) 56(84) bytes of data. From 172.16.1.128 icmp_seq=2 Destination Host Unreachable From 172.16.1.128 icmp_seq=3 Destination Host Unreachable |
当网络中存在影响通信过程稳定性的因素(如网卡故障,病毒或网络攻击等)时,使用plng命令测试可能会频繁看到”Request time out“的反馈结果,表示与目标主机间的连接超时(数据包响应缓慢或丢失)。除此以外当目标主机有严格的防火墙限制时,也可能收到发回“Request time out“的反馈结果。
2.使用traceroute命令一一跟踪数据包的路由途径
使用traceroute命令可以测试从当前主机到目的主机之间经过了哪些网络结点,并显示各中间结点的连接状态(响应时间)。对于无法晌应的结点,连接状态将显示为”*“。例如,通过以下操作结果可以看出从本机到目标主机192.168.3.1之间,中间需跨越一个路由器172.16.1.1。
[root@sky ~] # traceroute 192.168.3.1 traceroute to 192.168.3.1 (192.168.3.1), 30 hops max, 60 byte packets 1 172.16.1.1 (172.16.1.1) 2.653 ms 2.592 ms 2.530 ms |
traceroute命令能够比ping命令更加准确地定位网络连接的故障点(中断点),执行速度也因此会比ping命令稍慢。在网络测试与排错过程中通常会先使用ping命令测试与目的主机的网络连接,如果发现网络连接有故障再使用traceroute命令跟踪查看是在哪个中间结点存在故障的。
3. 使用nslookup命令——测试DNS域名解析
当域名解析出现异常时,将无法使用域名的形式访问网络中的Web站点、电子邮件系统等服务。nslookup命令是用来测试域名解析的专用工具,使用时只要指定要解析的目标域名作为参数即可。例如执行"nslookup www.baidu.com”命令后,nslookup程序将向默认的DNS服务器(由配置文件/etc/resolv.conf指定)提交查询请求,询问站点www.baidu.com对应的IP地址是多少。
[root@sky ~]
# nslookup www.baidu.com
Server: 114.114.114.114
Address: 114.114.114.114
#53
Non
-authoritative
answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 115.239.211.114
Name: www.a.shifen.com
Address: 115.239.210.25
若能够成功反馈要查询域名的IP地址,则表示域名解析没有问题。否则需要根据实际反馈情况来判断故障原因。例如,若出现”......no servers could be reached"的信息,表示不能连接到指定的DNS服务器;若出现"......can't find xxx.yyy.zzz :Non-existent domain"的信息表示要查询的域名不存在。
[root@sky ~] # nslookup www.google.com |
;; connection timed out ; no servers could be reached
2. 设置网络地址参数
在上节中已经学习了如何查看及测试网络地址。从本节开始将学习如何来修改Linux主机的各种网络地址参数。在Linux主机中,手动修改网络配置包括两种最基本的方法。
➣ 临时配置:通过命令行直接修改当前正在使用的网络地址,修改后立即可以生效,这种方式操作简单快速、执行效率高,一般在调试网络的过程中使用。但由于所做的修改并没有固定地存放在静态的文件中,因此当重启network服务或重启主机后将会失效。
➣ 固定配置:通过配置文件来存放固定的各种网络地址,需要重启network服务或重启主机后才会生效。这种方式操作上相对要复杂一些,但相当于“永久配置“,一般在需要为服务器设置固定的网络地址时使用。
2.1 使用网络配置命令
1.使用ifconfig命令——修改网卡的地址、状态
ifconfig命令不仅可以用于查看网卡配置还可以修改网卡的IP地址,子网掩码,也可以绨定虚拟网络接口,激活或停用网络接口。
1)修改网卡的IP地址,子网掩码
需要设管网卡的地址时,命令格式如下所示。
ifconfig 网络接口名称 IP地址 [ netmask 子网掩码 ]
或者
ifconfig 网络接口名称 IP地址 [/子网掩码长度]
通常后一种方式用得更多一些。当不指定子网掩码时将使用IP地址所在分类的默认子网掩码。指定新的IP地址和子网掩码以后,原有的地址将会失效。例如执行以下操作可以将网卡eth0的IP地址设置为192.168.168.1,子网掩码长度为24。
[root@sky ~]
# ifconfig eth0 192.168.168.1/24
或者
[root@sky ~] # ifconfig eth0 192.168.168.1 netmask 255.255.255.0 |
2)禁用,激活网络接口
需要临时禁用或者重新激活指定的网络接口时,需要结合"down"、”up“开关选项。网络接口被禁用以后,将无法使用该网络接口与其他主机进行连接。例如执行以下操作将会禁用网卡eth1。
[root@sky ~] # ifconfig eth0 down |
3)为网卡绨定虚拟接口
在对服务器网络进行调试的过程中,有时候需要临时在同一个网卡上使用一个新的IP地址,但是又不能覆盖原有IP地址而导致服务程序不可用。这时可以为网卡绑定一个虚拟的网络接口,然后再为虚拟接口设置新的IP地址(相当于一块网卡配多个IP地址)。
[root@sky ~] # ifconfig eth0:0 172.17.17.17 [root@sky ~] # ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:FD:D8:65 inet addr:172.16.1.128 Bcast:172.16.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fefd:d865/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:22068 errors:0 dropped:0 overruns:0 frame:0 TX packets:3641 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:7032666 (6.7 MiB) TX bytes:307143 (299.9 KiB) eth0:0 Link encap:Ethernet HWaddr 00:0C:29:FD:D8:65 inet addr:172.17.17.17 Bcast:172.17.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 |
可以根据需要添加更多的虚拟接口,如”eth0:1”、"eth0:2"......
2.使用route命令——添加、删除静态路由记录
route命令不仅可以用于查看路由表信息,还可用来添加,删除静态的路由表条目。其中当然也包括设置默认网关地址(默认网关记录是一条特殊的静态路由条目)。
1)添加,硎除到指定网段的路由记录
通过“route add“操作可以添加路由记录,结合”-net”选项指定目标网段的地址,结合“gw”选项指定下一跳路由器的P地址。例如,若要使本机访问另一个网段192.168.3.0/24的数据包都发给192.168.1.1可以执行以下操作。需要注意的是,默认网关的IP地址应该与本机其中一个接口的IP地址在同一个网段内。
[root@sky ~] # route add -net 192.168.3.0/24 gw 192.168.1.1 <==添加静态路由 [root@sky ~] # route -n <==确认添加的路由条目 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.3.0 192.168.1.1 255.255.255.0 UG 0 0 0 eth1 192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1 172.16.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 172.16.1.1 0.0.0.0 UG 0 0 0 eth0 |
通过"route del"操作可以删除路由记录,只要结合”-net“选项指定对应路由条目中目标网段的地址即可。例如,执行以下操作可以删除前面添加到192.168.3.0/24 网段的静态路由条目。
[root@sky ~] # route del -net 192.168.3.0/24 [root@sky ~] # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1 172.16.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 172.16.1.1 0.0.0.0 UG 0 0 0 eth0 |
2)添加,删除默认网关记录
添加,删除默认网关记录时与添加,删除静态路由记录的命令格式类似,但指定目标网段时只需简单地使用”default“表示即可,无须再使用”-net”选项指明网段地址。例如,执行以下操作将先删除已有的到192.168.1.1的默认网关记录,再添加到192.168.1.254的默认网关记录。
[root@sky ~] # route | grep "default" <==査看原路由表中的默认网关记录 default 172.16.1.1 0.0.0.0 UG 0 0 0 eth0 [root@sky ~] # route del default gw 172.16.1.1 <==删除默认网关记录172.16.1.1 [root@sky ~] # route | grep "default" [root@sky ~] # route add default gw 172.16.1.254 <==添加新的默认网关记录172.16.1.254 [root@sky ~] # route | grep "default" default 172.16.1.254 0.0.0.0 UG 0 0 0 eth0 |
需要注意的是,在同一个主机的路由表中只应有一条默认网关记录。若同时存在多条默认网关记录,可能会导致该主机的网络连接出现故障。
3.使用host name命令——修改主机的名称
[root@sky ~] # hostname <==査看原来的主机名 sky [root@sky ~] # hostname www.sky.com <==设置新的主机名 [root@sky ~] # hostname <==确认新的主机名 www.sky.com [root@sky ~] # bash <==启用新的Shell会话,査看变化 [root@www ~] # |
2.2修改网络配置文件
当需要为Linux服务器设置固定的网络地址时,若还是用ifconfig、hostname等网络命令来进行设置,将会大大降低服务器运行的可靠性。若要使Linux主机在重启系统以后仍然能够使用相同的网络配置那么直接修改配置文件是最好的方法。
下面将分别介绍最常见的几个网络配置文件。
1.网络接口配置文件
网络接口的配置文件默认位于目录“/etc/sysconfig/network-scrpts/中。文件名格式为“ifcfg-XXX”,其中XXX”是网络接口的名称。例如,网卡eth0的配置文件是"ifcfg-eth0”,回环接口lo的配置文件是“ifcfg-lo"。
[root@www ~] # ls /etc/sysconfig/network-scripts/ifcfg-* /etc/sysconfig/network -scripts /ifcfg-eth0 /etc/sysconfig/network -scripts /ifcfg-eth1 /etc/sysconfig/network -scripts /ifcfg -lo |
在网卡的配置文件ifcfg-eth0中,可以看到设置静态IP地址的典型内容如下。
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.1.128
NETMASK=255.255.255.0
GATEWAY=172.16.1.1
上述各配置项的含义及作用如下:
➣ DEVICE:网络接口名称
➣ ONBOOT:是否开机启动
➣ BOOTPROTO:设置网络接口的配置方式,值为“static”时表示使用静态指定的IP地址,为“dhcp”时表示通过DHCP的方式动态获取地址
➣ IPADDR:设置网络接口的IP地址
➣ NETMASK:设置网络接口的子网掩码
➣ GATEWAY:设置网络接口的默认网关地址
2.启用、禁用网络接口配置
在RHEL5系统中,当修改了网络接口的配置文件以后,若要使新的配置生效,可以重新启动network服务或者重启主机。默认情况下,重启network服务将会先关闭所有的网络接口,然后再根据配置文件重新启用所有的网络接口。
[root@sky ~] # service network restart |
如果只是想禁用,启用某一个网络接口(而不是所有接口) 可分别使用两个接口控制脚本ifdown、ifup。例如,执行以下操作将会先关闭eth0网卡’然后再根据配置文件启用eth0网卡。
[root@sky ~]
# ifdown eth0
[root@sky ~]
# ifup eth0
3.主机名称配置文件
若要修改Linux系统的主机名,可以修改配置文件/etc/sysconfig/network/,在此文件中”HOSTNAME”行用于设置主机名,而”NETWORKING”,‘NETWORKING_IPV6“行分别用于设置IPv4,1Pv6网络的默认启用状态。例如执行以下操作可以将主机名由默认的 localhost. localdomain 改为 www. sky. com。
[root@sky ~]
# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=www.sky.com
4.域名解析配置文件
1)指定为本机提供DNS解析的服务器地址
/etc/resolv.conf文件中记录本机默认使用的DNS服务器的地址信息,对该文件所做的修改将会立刻生效。Linux系统中最多可以指定3个(第3个以后的将被忽略) 不同的DNS服各器地址,优无使用第1个DNS服务器。例如执行以下操作可以指定默认使用的两个DNS服务器地址分别位于202.106.0.20和202.106.148.1。
[root@sky ~] # vim /etc/resolv.conf nameserver 202.106.0.20 nameserver 202.106.148.1 |
2)本地主机映射文件
etc/hosts文件中记录着一份主机名与IP地址的映射关系表,一般用来保存经常需要访问的主机的信息。当访问一个未知的域名时,先查找该文件中是否有相应的映射记录,如果找不到然后再去向DNS服务器查洵。
例如若在/etc/hosts文件中添加“119.75.218.70 www.baidu.com"的映射记录,则当访问网站www.baidu.com时,将会直接向IP地址119.75.218.70发送Web请求,省略了向DNS服务器解析IP地址的过程。
[root@sky ~]
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain
119.75.218.70 www.baidu.com
对于经常访问的一些网站可以通过在/etc/hosts文件添加正确的映射记录减少DNS查询过程,从而提高上网速度。当然,若添加了错误的映射记录则可能会导致网站访问出现异常。另外,正因为hosts文件只保存在本地,所以其中的映射记录也只适用于当前主机,而无法作用于整个网络。
3. 使用DHCP动态配置主机地址
当局域网络中有大量的主机时,如果逐个为每一台主机手动设置IP地址,默认网关、DNS服务器地址等网络参数,显然是一个费力也未必讨好的办法。而DHCP(Dynamic Configuration Protocol,动态主机配置协议)服务器的应用,正好可以解决这一问题。
DHCP的典型应用模式如下:在网络中架设一台专用的DHCP服务器,负责集中分配各种网络地址参数(主要包括IP地址、子网掩码、广播地址、默认网关地址,DNS服务器地址);其他主机作为DHCP客户机,将网卡配置为自动获取地址,即可与DHCP服务器进行通信,完成自动配置过程。
下面将分别介绍在Linux系统中构建DHCP服务器,使用DHCP客户端的过程。
3.1 配置DHCP服务器
1. 安装DHCP服务器软件
先执行“rpm -q dhcp”命令查看系统中是否已经安装dhcp软件包,如果还没有安装的话只要挂载RHEL5系统光盘安装其中的dhcp-3.0.5-23.el5.386.rpm软件包即可。安装dhcp软件包后系统将会自动复制相关程序并添加名为dhcpd系统服务。
[root@sky ~]
# mount /dev/cdrom /mnt/
[root@sky ~]
# rpm -ivh /mnt/Server/dhcp-3.0.5-23.el5.386.rpm
[root@sky ~]
# yum -y install dhcpd <==推荐使用yum方式安装
2.建立主配置文件dhcpd.conf
dhcpd服务的主配置文件位于/etc/dhcp/dhcpd.conf 但是该文件中默认并不包含任何有效配置,需要管理员手动建立。这时管理员可以根据文件中的提示,参考配置文件范本建立新的dhcpd.conf文件。
[root@sky ~]
# cat /etc/dhcp/dhcpd.conf
#
#
DHCP Server Configuration file.
#
see /usr/share/doc/dhcp*/dhcpd.conf.sample
[root@sky ~]
# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
cp
:是否覆盖
"/etc/dhcp/dhcpd.conf"
? y
1) /etc/dhcp/dhcpd.conf 文件的配置构成
在主配置文件/etc/dhcp/dhcpd.conf 中,可以使用声明,参数,选项这三种类型的配置,各自的作用和表现形式如下所述。
➣ 声明:用来描述dhcpd服务器中对网络布局的划分是网络设置的逻辑范围。较常见的声明是subnet,host,其中subnet声明用来约束一个网段,host声明用来约束一台特定的主机。
➣ 参数:由配置关键字和对应的值组成,总是以分号”;“结束,一般位于指定的声明范围之内,用来设置所在范围的运行持性(如默认租约时间,最大租约时间等)。
➣ 选项:由”option"引导,后面跟具体的配置关键字和对应的值,也是以分号";"结束,用于指定分配给客户机的各种地址参数(如默认网关地址,子网掩码,DNS服务器地址等)。
例如通过查看复制过来的范本配置内容,可以识别其主要配置构成如下所述。其中,不处于任何声明范围内的配置参数,配置选项,也称为全局配置。全局配置将会影响整个DHCP服务器。
[root@sky ~] # vim /etc/dhcp/dhcpd.conf |
ddns -update -style interim; <==全局配置参数 subnet 192.168.0.0 netmask 255.255.255.0 { <==网段声明 option routers 192.168.0.1; <==配置选项 ...... default -lease -time 21600; <==配置参数 ...... host ns { <==主机声明 ...... fixed -address 207.175.42.254; <==配置参数 } } |
2)确定dhcpd服务的全局配置
为了使配置文件的结构更加清晰,全局配置通常会放在配置文件/etc/dhcp/dhcpd.conf 的开头部分,可以是配置参数,也可以是配置选项。常用的全局配置参数和选项如下所述:
➣ ddns-update-style,动态DNS更新模式。用来设置与DHCP服务相关联的DNS数据动态更新模式:在实际的DHCP应用中很少用到该参数,将值设为“none”即可。
➣ default-lease-time,默认租约时间。单位为秒,表示客户端可以从DHCP服务器租用某个IP地址的默认时间。
➣ max-lease-time,最大租约时间。单位为秒,表示允许DHCP客户端请求的最大租约时间,当客户端未请求明确的租约时间时,服务器将采用默认租约时间。
➣ optiondomain-name,默认捜索区域。为客户机指定解析主机名时的默认捜索域,该配置选项将体现在客户机/ete/resolv.conf配置文件中。
➣ optiondomain-name-servers,DNS服务器地址。为客户机指定解析域名时使用的DNS服务器地址,该配置选项同样将体现在客户机的/etc/resolv.conf配置文件中(如nameserver 202.106.0.20)。需设置多个DNS服务器地址时因应以逗号进行分隔。
例如,若需要为局域网搭建一台DHCP服务器,所有网段使用相同的租约时间,默认搜索域为sky.com,DNS服务器地址为114.114.114.114和8.8.8.8,则可以修改dhcpd.conf配置文件,参考以下操作调整全局配置。
[root@sky ~] # vim /etc/dhcp/dhcpd.conf ddns -update -style none; <==禁用DNS动态更新 default -lease -time 21600; <==默认租约为6小时 max -lease -time 43200; <==最大租约为12小时 option domain -name “domain.org”; <==指定默认搜索域 option domain -name -servers 114.114.114.114,8.8.8.8; <==指定DNS服务器地址 |
3)确定subent网段申明
一台DHCP服务器可以为多个网段提供服务,因此subnet网段声明必须有而且可以有多个,例如,若要DHCP服务器为192.168.1.0/24网段提供服务,用于自动分配的IP地址范围为192.168.1.128~192.168.1.254,为客户机指定默认网关地址为192.168.1.1,则可以修改dhcpd.conf配置文件,参考以下内容调整subnet网段声明。
[root@sky ~] # vim /etc/dhcp/dhcpd.conf subnet 192.168.1.0 netmask 255.255.255.0 { <==声明网段地址 range 192.168.1.128 192.168.1.254; <==设置地址池,可以有多个 option subnet -mask 255.255.255.0; <==设置子网掩码 option routers 192.168.1.1; <==指定默认网关地址 } |
4)确定host主机声明(可选)
host声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固定的IP地址(保留地址),这些主机的共同特点是要求每次获取的IP地址相同,以确保服务的稳定性。
host声明通常会放在所在网段的subnet声明范围内,通过host关键字指定需要使用保留地址的客户机名称。并使用”hardware ethernet"参数指定该主机的MAC地址,使用”fixed-address“参数指定保留给该主机的IP地址。例如,若要为打印机prtsvr(MAC 地址为00:co:c3:22:46:81)分配固定的IP地址192.168.1.100,可以修改dhcpd.conf 配置文件,参考以下内容在网段声明内添加以下host主机声明。
host prtsvr { hardware ethernet 00:c0:c3:22:46:81; fixed -address 192.168.1.100; } |
3. 启动dhcpd服务
在启动dhcpd服务之前应确认提供DHCP服务器的网络接口具有静态指定的固定IP地址,并且至少有一个网络接口的IP地址与DHCP服务器中的一个subnet网段相对应,否则将无法正常启动dhcpd服务。例如,DHCP服务器的IP地址为192.168.1.10,用于为网段192.168.1.0/24内的其他客户机提供自动分配地址服务。
[root@sky ~] # vim /etc/dhcp/dhcpd.conf ddns -update -style none; default -lease -time 21600; max -lease -time 43200; option domain -name "sky.com" ; option domain -name -servers 114.114.114.114,8.8.8.8; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.128 192.168.1.254; option subnet -mask 255.255.255.0; option routers 192.168.1.10; host prtsvr { hardware ethernet 00:c0:c3:22:46:81; fixed -address 192.168.1.100; } } |
安装dhcp软件包以后,对应的系统服务脚本位于/etc/rc.d/init.d/dhcpd,可以使用标准的系统服务进行控制。例如,执行以下操作可以启动dhcpd服务,并检查DHCP协议的67端口是否在监听,以确认DHCP服务器是否正常。
[root@sky ~]
# service dhcpd start
启动 dhcpd: [确定]
[root@sky ~]
# netstat -anpu | grep :67
udp 0 0 0.0.0.0:67 0.0.0.0:* 4784/dhcpd
需要关闭、重启dhcpd服务时,只要将上述操作命令中的"start"改为”stop"、”restart“即可。如果dhcpd服务启动失败,可以检查日志文件/var/log/messages末尾的错误提示信息,并根据提示进行排锗。成功运行dhcpd服务以后,可以通过查看租约文件/var/lib/dhcpd/dhcpd.leases 了解服务器的IP地址分配情况。该租约文件中记录了分配出去的每个IP地址信息(租约记录) 包括IP地址,客户端的MAC地址,租用的起始时间和结束时间等。
[root@sky ~] # less /var/lib/dhcpd/dhcpd.leases …… lease 192.168.1.254 { starts 4 2015/02/24 20:15:20; ends 5 2015/02/25 02:15:20; binding state active; next binding state free; hardware ethernet 00:0c:29:ae:1c:25; } |
3.2 使用DHCP客户端
当局域网内有可用的DHCP服务器时,在Linux客户机中可以设置使用DHCP的方式获取地址。只需要编辑对应网卡的配置文件,修改或添加”BOOTPROTO=dhcp“配置行并重新加载配置文件或者重新启动network服务即可。例如,执行以下操作可修改网卡配置文件,并重新加载配置以通过DHCP方式自动获取地址。
[root@localhost ~]
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
[root@localhost ~]
# ifdown eth0 ; ifup eth0
Determining IP information for eth0… done.
在Linux客户机中,还可以使用dhclient工具来测试DHCP服务器,该命令程序由软件包dhclient-3.0.5-23.e15.i386.rpm提供。若直接执行dhclient命令,则dhclient将尝试为除回环接口lo以外的所有网络接口通过DHCP方式申请新的地址然后自动转入后台继续运行,当然,测试时可以指定一个具体的网络接口,并结合"-d“选项使其在前台运行,测试完毕后按Ctrl+c组合键终止.例如,执行“dhclient -d eth0"命令后,可以为网卡eth0自动获取新的IP地址,并显示获取过程.
[root@localhost ~]
# dhclient -d eth0
Internet Systems Consortium DHCP Client V3.0.5
-
RedHat
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Listening on LPF/eth0/00:0c:29:ae:1c:25
Sending on LPF/eth0/00:0c:29:ae:1c:25
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8 <==DHCP发现
DHCPOFFER from 192.168.1.10
<==DHCP提供DHCPREQUEST on eth0 to 255.255.255.255 port 67
<==DHCP请求DHCPACK from 192.168.1.10
<==DHCP确认bound to 192.168.1.254 -- renewal in 9220 seconds.
...... // 按Ctrl+c终止
需要通过dhclient命令释放获取的IP地址租约时,可以结合”-r“选项。例如,执行”dhclient -r eth0“将会释放之前为网卡eth0获取的IP租约。
[root@localhost ~]
# dhclient -r eth0 <==释放eth0获取的IP租约