Linux主机在局域网或者互联网上通信的时候,需要设置IP地址,网关,DNS,路由等相关属性。在Linux中这些设置有2种方式:
命令行设置
此设置会立即生效,但系统重新登录后不会生效。
配置文件设置
此设置不会立即生效,但系统再次登录后会生效,所谓永久生效。
以下所有设置均以CentOS6系列为例:
一、设置主机名
临时设置:
hostname [USER_NAME]
# hostname 直接使用就是查看当前系统的主机名 [root@server ~]# hostname server.example.com # hostname USER_NAME 如果后面有用户名则是修改当前系统的主机名 [root@server ~]# hostname alex.example.com [root@server ~]# hostname alex.example.com [root@server ~]#
永久设置:
配置文件的路径是:/etc/sysconfig/network,如下:
# 这个文件是Linux网络的“总开关”,像网关,DNS等属性都可以在这里设置 [root@server ~]# cat /etc/sysconfig/network # 这个选项是是否启动网络服务,如果是 no 即使你的其他配置都正确,也不能上网 NETWORKING=yes # HOSTNMAE 关键字就是设置主机名的,设置格式如下: HOSTNAME=server.example.com
二、设置主机的IP地址
临时设置:
ifconfig [options] [IFNMAE [IP netmask MASK]]
# ifconfig 查看当前处于激活状态的网卡配置信息 # ifconfig -a 查看系统中所有的网卡配置信息 [root@server ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:9E:A3:0E inet addr:172.16.9.10 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fe9e:a30e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:273411 errors:0 dropped:0 overruns:0 frame:0 TX packets:2495 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:17152580 (16.3 MiB) TX bytes:297433 (290.4 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:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:330 (330.0 b) TX bytes:330 (330.0 b) # ifconfig DEVICE 查看系统中特定网卡配置信息 [root@server ~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:9E:A3:0E inet addr:172.16.9.10 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fe9e:a30e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:273444 errors:0 dropped:0 overruns:0 frame:0 TX packets:2510 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:17155146 (16.3 MiB) TX bytes:299847 (292.8 KiB) [root@server ~]# ifconfig eth1 eth1 Link encap:Ethernet HWaddr 00:0C:29:9E:A3:18 inet addr:172.16.9.18 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fe9e:a318/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:704 errors:0 dropped:0 overruns:0 frame:0 TX packets:22 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:60911 (59.4 KiB) TX bytes:1468 (1.4 KiB) # 临时修改网卡的IP地址,修改完成时候会立即生效 # ifconfig eth1 192.168.0.55/24 up中的up是启用网卡,如果不启用可以使用down # 启动和关闭一个网卡,例如:启动eth1网卡 # igconfig eth1 up # 或者 ifup eth1 (ifdown eth1 关闭) [root@server ~]# ifconfig eth1 192.168.0.55/24 up [root@server ~]# ifconfig eth1 eth1 Link encap:Ethernet HWaddr 00:0C:29:9E:A3:18 inet addr:192.168.0.55 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe9e:a318/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:844 errors:0 dropped:0 overruns:0 frame:0 TX packets:22 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:72758 (71.0 KiB) TX bytes:1468 (1.4 KiB) [root@server ~]# # ifconfig设置网卡别名 [root@server ~]# ifconfig eth1:0 192.168.0.58/24 up [root@server ~]# ifconfig eth1:0 eth1:0 Link encap:Ethernet HWaddr 00:0C:29:9E:A3:18 inet addr:192.168.0.58 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 [root@server ~]#
永久设置:
配置文件在 /etc/sysconfig/network-scripts/ 目录下:每个网卡对应一个配置文件(包括网卡别名的) ifcfg-IFNAME。例如:eth0网卡的配置文件是 ifcfg-eth0。
这个配置文件中的一些关键字和意义如下:
DEVICE=IFNAME 此配置文件所关联到的设备,设备名称要与本文件名ifcfg-后面保持一致
BOOTPROTO={bootp|dhcp|static|none} IP地址配置协议,常用的是dhcp和none(static)
HWADDR=11:22:33:44:55:66 当前设备的MAC地址,用六个字节标识
NM_CONTROLLED={yes|no} 是否接受NetworkManager服务脚本来配置此设备,CentOS6建议关闭,因为其不支持桥接模式。CentOS7中已经支持。
ONBOOT={yes|no} 是否在开机过程中,自动激活此接口
TYPE={Ethernet|Bridge} 网络接口类型
UUID= 设备标识号
IPADDR=IP地址 设定IP地址,只有在BOOTPROTO={none|static}设置才有效
NETMASK= 掩码地址,此设置也可用 PREFIX=n (n为掩码位数)
GATEWAY= 网关地址,要与IP地址属于同一网段
DNS1= DNS服务器地址地址
DNS2=
IPV6INIT={yes|no} 是否支持IPV6
USERCTL={yes|no} 是否允许普通用控制此接口
PEERDNS={yes|no} 不接受DHCP服务器指派的DNS服务器地址
要想永久设置有效的话,将这些信息写到对应网卡的配置文件中,然后重新启动网络服务即可,/etc/init.d/network restart。
三、设置路由信息
临时设置:
使用route [options] [add|del] [-net|-host IP gw NEXT_HOP] [dev DEVICE]命令设置。
# 查看路由表 [root@server ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface link-local * 255.255.0.0 U 1002 0 0 eth0 link-local * 255.255.0.0 U 1003 0 0 eth1 172.16.0.0 * 255.255.0.0 U 0 0 0 eth0 172.16.0.0 * 255.255.0.0 U 0 0 0 eth1 default server.magelinu 0.0.0.0 UG 0 0 0 eth0 # route -n 以数字形式显示路由表 [root@server ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1 172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 eth0 # 增加一条主机路由 [root@server ~]# route add -host 172.16.9.18 gw 172.16.0.1 dev eth0 # 增加一条网络路由 [root@server ~]# route add -net 10.0.0.0/8 gw 172.16.0.1 dev eth0 [root@server ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 172.16.9.18 172.16.0.1 255.255.255.255 UGH 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1 172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 10.0.0.0 172.16.0.1 255.0.0.0 UG 0 0 0 eth0 0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 eth0 # 设置默认路由 # route add default gw NEXT_HOP # 删除主机路由和网络路由 [root@server ~]# route del -net 10.0.0.0/8 dev eth0 [root@server ~]# route del -host 172.16.9.18 dev eth0 [root@server ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1 172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 eth0
永久生效:
配置文件在 /etc/sysconfig/network-scripts/ 目录下:每个网卡的路由信息对应一个配置文件(包括网卡别名的) route-IFNAME。例如:eth0网卡的配置路由文件是 route-eth0。
设置格式:
配置文件的格式1:每行一个路由条目
DESTINATION via NETX_HOP
192.168.0.0/24 via 172.16.0.1
配置文件格式2: 每三行一个路由条目
ADDRESS#=DESTINATION
NETMASK#=MASK
GATEWAY#=GW
# 要是设置主机路由的话,掩码位数是32位 ADDRESS0=192.168.0.0 NETMASK0=255.255.0.0 GATEWAY=172.16.0.1
四、ip命令
ip的命令功能比较强大。
ip命令常用选项:
ip link : 管理接口
show [IFNAME]
set IFNAME {up|down}
ip addr: 管理协议地址
ip addr {show|flush} [dev DEVICE] 查看网卡的IP地址
ip addr {add|del} ADDRESS dev DEVICE [label IFALIAS] [broadcast BCAST_ADDRESS],为一个网卡添加多个IP地址
ip route: 管理路由:
ip route list
ip route flush
ip route add DESTINATION [via NEXT_HOP] [src SOURCE_ADDRESS] [dev DEVICE]
ip route del DESTINATION
ip命令还有其他子命令,读者可自行查阅 man 手册。
五、网络管理工具
测试网络的连通属性:
ping 命令,实现的ICMP协议
常用参数:
-W timeout: 一个报文等待响应报文的超时时长
-c #:报文个数
-w time:一共持续的时间
追踪网络路由:
就是显示出我们到达一个网络所经过的路由信息。常用的命令有traceroute 和 mtr。
mtr命令式实时监测显示的:
查看网络状态:
常用命令是:netstat和ss。
netstat常用选项:
-t: tcp协议相关
-u: udp协议相关
-n: 显示数字格式的地址
-l: listen,显示处于监听状态的连接
-p: 显示会话中的进程程序名及进程号
-a: 所有状态的连接
-r: routing,显示路由表
ss命令也可以显示这些状态:
常用选型:
-t: tcp相关
-u: udp相关
-p: 显示进程号
-l: listen,显示处于监听状态的连接
-n: 显示数字格式的地址
-m: 套接字相关的内存使用信息
-a: all
-e: 扩展信息
-o state {established,fin_wait_1, fin_wait_2, listening}
'( dport = or sport = )'
只显示指定状态的连接,还可以指定过滤条件
显示网络接口设备的属性信息:
ethtool:查看网路接口设备本身的属性
本文主要介绍主机名,ip地址,路由的查看与设置、网路管理的工具。对于网络知识原理的部分没有深入讲解,对于原理不懂的读者可自行查阅相关资料。