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}

Linux网络配置_第1张图片

ip addr: 管理协议地址

    ip addr {show|flush} [dev DEVICE] 查看网卡的IP地址

Linux网络配置_第2张图片

    ip addr {add|del} ADDRESS dev DEVICE  [label IFALIAS] [broadcast BCAST_ADDRESS],为一个网卡添加多个IP地址

Linux网络配置_第3张图片

    

ip route: 管理路由:

    ip route list

Linux网络配置_第4张图片

    ip route flush 

    ip route add DESTINATION [via NEXT_HOP] [src SOURCE_ADDRESS] [dev DEVICE]

Linux网络配置_第5张图片

    ip route del DESTINATION

Linux网络配置_第6张图片

    

    ip命令还有其他子命令,读者可自行查阅 man 手册。


五、网络管理工具


测试网络的连通属性:

    ping 命令,实现的ICMP协议

    常用参数:

        -W timeout: 一个报文等待响应报文的超时时长

        -c #:报文个数

        -w time:一共持续的时间

Linux网络配置_第7张图片


追踪网络路由:

    就是显示出我们到达一个网络所经过的路由信息。常用的命令有traceroute 和 mtr。

Linux网络配置_第8张图片

    mtr命令式实时监测显示的:

Linux网络配置_第9张图片


查看网络状态:

    常用命令是:netstat和ss。

    netstat常用选项:

        -t: tcp协议相关

        -u: udp协议相关

        -n: 显示数字格式的地址

        -l: listen,显示处于监听状态的连接

        -p: 显示会话中的进程程序名及进程号

Linux网络配置_第10张图片

         -a: 所有状态的连接

Linux网络配置_第11张图片

        -r: routing,显示路由表

Linux网络配置_第12张图片


    ss命令也可以显示这些状态:

    常用选型:

        -t: tcp相关

        -u: udp相关

        -p: 显示进程号

        -l: listen,显示处于监听状态的连接

        -n: 显示数字格式的地址

        -m: 套接字相关的内存使用信息

Linux网络配置_第13张图片

        -a: all

        -e: 扩展信息

        -o state {established,fin_wait_1, fin_wait_2, listening}

        '( dport =   or sport =  )'

        只显示指定状态的连接,还可以指定过滤条件

wKiom1PGhtKhUDxWAAEX4TsUcVk012.jpg


显示网络接口设备的属性信息:

    ethtool:查看网路接口设备本身的属性

Linux网络配置_第14张图片


    本文主要介绍主机名,ip地址,路由的查看与设置、网路管理的工具。对于网络知识原理的部分没有深入讲解,对于原理不懂的读者可自行查阅相关资料。