网络管理与配置

       网络管理可分为通过命令行命令实现和配置文件这两种方式来实现。但是大多数命令行命令配置的网络都是临时的,却是立即有效的,而通过配置文件配置的网络是永久有效的(当然意外事故就拉倒吧),却不能立即有效,这是因为网络管理是功能是由内核提供的,通过命令配置的网络能够直接被内核接受到,而我们知道在Linux中一切皆文件,网络也不外如是,只有写入与网络配置有关的文件中才能永久有效,但是这些配置文件却不能立即被内核识别,所以不会立即生效,那就得让内核重读配置文件才行。

创新互联长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为屯昌企业提供专业的成都做网站、成都网站设计、成都外贸网站建设屯昌网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。

     下面先说说命令行命令配置网络。

     ifcfg家族:

        ifconfig:用来显示和配置网络接口卡

          ifconfig或者ifconfig -a是显示所有网络接口信息的,不同的地方在于ifconfig只能显示已经开启的网卡信息,而ifconfig -a能真正显示所有包括开启的和没有开启的网卡信息

          ifconfig 网卡名:仅显示指定的网络接口卡的信息

          ifconfig 网卡名 ip地址/掩码(这是最简单的方式)

[root@localhost ~]# ifconfig eth2
eth2: flags=4163  mtu 1500
        inet 172.168.0.1  netmask 255.255.0.0  broadcast 172.168.255.255
        ether 00:0c:29:f8:b5:f8  txqueuelen 1000  (Ethernet)
        RX packets 25  bytes 3168 (3.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 1308 (1.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost ~]#

        ifconfig 网卡名 down或者up:关闭指定网卡;开启指定网卡

 [root@localhost ~]# ifconfig eth2 down
[root@localhost ~]# ifconfig eth2
eth2: flags=4098  mtu 1500
        inet 172.168.0.1  netmask 255.255.0.0  broadcast 172.168.255.255
        ether 00:0c:29:f8:b5:f8  txqueuelen 1000  (Ethernet)
        RX packets 28  bytes 3348 (3.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 1308 (1.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost ~]# 
虽然还显示有地址,但是已经没了UP这个标志了

        ifconfig 网卡名  [-]特性:开启和关闭一些特性,如下开启和关闭混杂模式

[root@localhost ~]# ifconfig eth2 promisc
[root@localhost ~]# ifconfig eth2
eth2: flags=4354  mtu 1500
        ether 00:0c:29:f8:b5:f8  txqueuelen 1000  (Ethernet)
        RX packets 28  bytes 3348 (3.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 1308 (1.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost ~]# ifconfig eth2 -promisc
[root@localhost ~]# ifconfig eth2
eth2: flags=4098  mtu 1500
        ether 00:0c:29:f8:b5:f8  txqueuelen 1000  (Ethernet)
        RX packets 28  bytes 3348 (3.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 1308 (1.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost ~]#

       route:显示和配置路由的

        route -n:不以反解的方式显示路由表(建议这样)

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eno16777728
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16777728
[root@localhost ~]#  
其中Destination为0.0.0.0的表示本机默认路由,而Gateway为0.0.0.0的目的网络就是本机所在的网络,因此不需要任何路由。

        route add  <-net|-host> <网络好|主机>/掩码 gw 吓一跳ip [dev] [网卡]

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eno16777728
0.0.0.0         192.168.1.1     0.0.0.0         UG    101    0        0 eth2
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16777728
192.168.1.0     0.0.0.0         255.255.255.0   U     101    0        0 eth2
[root@localhost ~]# route add -net 172.16.0.0/16 gw 192.168.1.1
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eno16777728
0.0.0.0         192.168.1.1     0.0.0.0         UG    101    0        0 eth2
172.16.0.0      192.168.1.1     255.255.0.0     UG    0      0        0 eno16777728
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16777728
192.168.1.0     0.0.0.0         255.255.255.0   U     101    0        0 eth2
[root@localhost ~]#  
需要注意的是下一跳地址(网关)必须在本机任一网卡的网络中,因为如果连网关都不在本机网络中那么何谈路由?那么就可以通过Gateway为0.0.0.0就可以知道本机任一网卡的网络了。

        route add default dev 网卡:添加默认路由

[root@localhost ~]# route add default gw 172.16.0.1 dev eth2
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.0.1      0.0.0.0         UG    0      0        0 eth2
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 eth2
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eno16777728
0.0.0.0         192.168.1.1     0.0.0.0         UG    101    0        0 eth2
172.16.0.0      192.168.1.1     255.255.0.0     UG    0      0        0 eno16777728
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16777728
192.168.1.0     0.0.0.0         255.255.255.0   U     101    0        0 eth2

        route del -net 路由/掩码 dev 网卡

[root@localhost ~]# route del -net 0.0.0.0/0 dev eth2
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eno16777728
0.0.0.0         192.168.1.1     0.0.0.0         UG    101    0        0 eth2
172.16.0.0      192.168.1.1     255.255.0.0     UG    0      0        0 eno16777728
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16777728
192.168.1.0     0.0.0.0         255.255.255.0   U     101    0        0 eth2
[root@localhost ~]#

        netstat:查看网络状态信息

         常用选项有:

            -t:显示tcp传输协议的

            -u:显示udp传输协议的

            -n:不以反解的方式显示(也就是数字格式)

            -l:处于监听状态的

            -p:显示相关进程和pid

            -e:扩展的格式显示

                   -a:显示所有状态

[root@localhost ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1324/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1425/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1324/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1425/master    省略。。。。
其他方式还请自行组合:比如tan,uan,tnl,unl

           ifup和ifdown命令是通过读取/etc/sysconfig/network-scripts/ifcfg-网卡名这个文件来开启关闭网卡的,如果没有就会报错

     iproute家族:

        ip link:显示和管理网卡信息

            ip link show(list):显示网卡信息

[root@localhost ~]# ip link show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777728:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:f8:b5:ee brd ff:ff:ff:ff:ff:ff
3: eth2:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:f8:b5:f8 brd ff:ff:ff:ff:ff:ff

            ip link set:

                ip link set [dev] 网卡 up(down):开启(关闭)网卡

[root@localhost ~]# ip link set eth2 down
[root@localhost ~]# ip link show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777728:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:f8:b5:ee brd ff:ff:ff:ff:ff:ff
3: eth2:  mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
    link/ether 00:0c:29:f8:b5:f8 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]#

                ip link set [dev] 网卡 mtu #:设置mtu大小的

                ip link set [dev] 网络 name NAME:重命名

[root@localhost ~]# ip link set eth2 down
[root@localhost ~]# ip link set eth2 name eth0
[root@localhost ~]# ip link show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777728:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:f8:b5:ee brd ff:ff:ff:ff:ff:ff
3: eth0:  mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
    link/ether 00:0c:29:f8:b5:f8 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]#

                ip link set [dev] 网卡 multicast on(off):开启(关闭)多播

        ip netns:管理网络名称空间

                ip netns add NAME:添加网络空间

                ip netns list:列出网络空间名

                ip netns del NAME:删除网络空间

                ip netns exec NAME COMMAND:在指定的net空间中执行命令

[root@localhost ~]# ip link set eth2 down
[root@localhost ~]# ip link set eth2 name eth0
[root@localhost ~]# ip link show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777728:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:f8:b5:ee brd ff:ff:ff:ff:ff:ff
3: eth0:  mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
    link/ether 00:0c:29:f8:b5:f8 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip netns add mynet
[root@localhost ~]# ip netns list 
mynet
[root@localhost ~]# ip link set eth0 netns mynet
[root@localhost ~]# ip link show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777728:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:f8:b5:ee brd ff:ff:ff:ff:ff:ff
[root@localhost ~]#  放到空间中的网卡不能被直接显示
[root@localhost ~]# ip netns exec mynet ip link show
1: lo:  mtu 65536 qdisc noop state DOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: eth0:  mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether 00:0c:29:f8:b5:f8 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]#  只有这样才能显示出来,但是请看下面
[root@localhost ~]# ip netns del mynet
[root@localhost ~]# ip netns list
[root@localhost ~]# ip link show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777728:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:f8:b5:ee brd ff:ff:ff:ff:ff:ff
3: eno33554968:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:f8:b5:f8 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# 
由于为了演示方面我早些改名了第二张网卡名,放到网络空间再出来后就还原了

        ip addr;显示和设置网络地址

            ip addr add ip/掩码 dev 网卡    这里的dev不能省

            ip addr del ip/掩码 dev 网卡

[root@localhost ~]# ip addr add 10.0.0.1/8 dev eth2
[root@localhost ~]# ifconfig eth2
eth2: flags=4163  mtu 1500
        inet 10.0.0.1  netmask 255.0.0.0  broadcast 0.0.0.0
        ether 00:0c:29:f8:b5:f8  txqueuelen 1000  (Ethernet)
        RX packets 197  bytes 18250 (17.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 48  bytes 5004 (4.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost ~]#

        ip addr可以在一个网卡上添加多个地址,但是只有在同一个网段上的才有主次之分。

[root@localhost ~]# ip addr add 172.16.0.2/16 dev eth2
[root@localhost ~]# ip addr show 
3: eth2:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:f8:b5:f8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/8 scope global eth2
       valid_lft forever preferred_lft forever
    inet 172.16.0.2/16 scope global eth2
       valid_lft forever preferred_lft forever
    inet 10.0.0.2/8 scope global secondary eth2
       valid_lft forever preferred_lft forever
[root@localhost ~]# 而且ifconfig只会显示源地址
[root@localhost ~]# ifconfig eth2
eth2: flags=4163  mtu 1500
        inet 10.0.0.1  netmask 255.0.0.0  broadcast 0.0.0.0
        ether 00:0c:29:f8:b5:f8  txqueuelen 1000  (Ethernet)
        RX packets 211  bytes 19090 (18.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 48  bytes 5004 (4.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        要想ifconfig能显示只能加别名

[root@localhost ~]# ip addr add 192.19.0.1/24 dev eth2 lable eth2:0
Error: either "local" is duplicate, or "lable" is a garbage.
[root@localhost ~]# ip addr add 172.16.0.3/16 dev eth2 lable eth2:0
Error: either "local" is duplicate, or "lable" is a garbage.
[root@localhost ~]# ip addr add 172.16.0.3/16 dev eth2 label eth2:0
[root@localhost ~]# ifconfig eth2:0;ip addr show eth2
eth2:0: flags=4163  mtu 1500
        inet 172.16.0.3  netmask 255.255.0.0  broadcast 0.0.0.0
        ether 00:0c:29:f8:b5:f8  txqueuelen 1000  (Ethernet)
3: eth2:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:f8:b5:f8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/8 scope global eth2
       valid_lft forever preferred_lft forever
    inet 172.16.0.2/16 scope global eth2
       valid_lft forever preferred_lft forever
    inet 10.0.0.2/8 scope global secondary eth2
       valid_lft forever preferred_lft forever
    inet 172.16.0.3/16 scope global secondary eth2:0
       valid_lft forever preferred_lft forever
[root@localhost ~]#  就是在添加地址的时候加上label 网卡:数字(0-9)

            ip addr flush dev 网卡:清空所有指定网卡的ip地址

[root@localhost ~]# ip addr flush dev eth2
[root@localhost ~]# ip addr show eth2
3: eth2:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:f8:b5:f8 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]#

        ip route:管理路由

            ip route show(list):显示路由信息

            ip route add 网络/掩码 via 下一跳地址 [dev] 网卡 [src 源ip地址]

[root@localhost ~]# ip addr add 172.16.0.1/16 dev eth2
[root@localhost ~]# ip addr add 172.16.0.2/16 dev eth2
[root@localhost ~]# ip addr list eth2
3: eth2:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:f8:b5:f8 brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.1/16 scope global eth2
       valid_lft forever preferred_lft forever
    inet 172.16.0.2/16 scope global secondary eth2
       valid_lft forever preferred_lft forever
[root@localhost ~]# ip route show
default via 192.168.1.1 dev eno16777728  proto static  metric 100 
172.16.0.0/16 via 192.168.1.1 dev eno16777728 
172.16.0.0/16 dev eth2  proto kernel  scope link  src 172.16.0.1 
192.168.1.0/24 dev eno16777728  proto kernel  scope link  src 192.168.1.107  metric 100 
[root@localhost ~]# ip route add 10.0.0.0/8 via 172.16.10.1 dev eth2 src 172.16.0.1
[root@localhost ~]# ip route show
default via 192.168.1.1 dev eno16777728  proto static  metric 100 
10.0.0.0/8 via 172.16.10.1 dev eth2  src 172.16.0.1 
172.16.0.0/16 via 192.168.1.1 dev eno16777728 
172.16.0.0/16 dev eth2  proto kernel  scope link  src 172.16.0.1 
192.168.1.0/24 dev eno16777728  proto kernel  scope link  src 192.168.1.107  metric 100 
[root@localhost ~]#  当网卡地址较多时可指定源地址

        ip route delete 网络/掩码:删除指定路由

[root@localhost ~]# ip route del 10.0.0.0/8
[root@localhost ~]# ip route show
default via 192.168.1.1 dev eno16777728  proto static  metric 100 
172.16.0.0/16 via 192.168.1.1 dev eno16777728 
172.16.0.0/16 dev eth2  proto kernel  scope link  src 172.16.0.1 
192.168.1.0/24 dev eno16777728  proto kernel  scope link  src 192.168.1.107  metric 100 
[root@localhost ~]#

        ip route flush 网络/掩码:清除指定的网络所有路由

      ss命令:与netstat很相似,但是更加强大

            除了-t,-u,-a,-l,-p,-n,-e,还有

                -m:显示内存用量

                -o:显示计时器信息

            还能显示执行的连接状态

                state:

                    LISTEN   

                    ESTABLISHMENT

                    FIN_WAIT1:

                    FIN_WAIT2

                    SYN_SENT

                    SYN_RECV

                    CLOSED

                port:

                    dport

                    sport

    配置文件配置网络:

        /etc/sysconfig/network-scripts/ifcfg-网卡名:这个文件可以配置大量的网络接口信息。

            DEVICE=指定设备要与网卡名一样

            ONBOOT:[yes|no];是否开机启动

            IPV6INIT:[yes|no]:是否初始化IPV6

            BOOTPROTO:四种(dhcp,bootp,static,none)

            UUID:此设备的UUID号

            TYPE:网络类型(比如Ehernet,Bridge)

            IPADDR:ip地址

            DNS1:第一dns

            DNS2:备用dns

            NETMASK(PREFIX);掩码

            GATEWAY:默认网关

            USERCTL:是否允许普通用户控制此设备

            PEERDNS:当BOOTPROTO为dhcp时候是否允许dhcp服务器分配的dns覆盖手动指定的dns默认是允许

            NM_CONTROLLED:是否开启NetworkManager来管理网络

            HWADDR:MAC地址

        如果要指定除了默认路由的其他路由在/etc/sysconfig/network-scripts/route-网卡名这个文件中配置

        有两种方式,这里我只写最简单的方式

            网络/掩码长度 via ip

        一行一个路由

        DNS配置文件在:/etc/resolv.conf:    

            nameserver:DNS

        一行一个

            在/etc/hosts设置优先DNS映射

                ip 域名 别名1 别名2.。。

            主机名设定:

                hostname:显示主机名

                hostname HOSTNAME:设定主机名,但是重启就会失效

                hostnamectl set-hostname HOSTNAME:永久有效

                /etc/sysconfig/network配置文件:

                    hostname=HOSTNAME

       注意:配置文件配置的必须重读配置文件才能有效

       还有一些工具:setup,nmtui图形界面设置网络,也是永久有效的,打开就会!!

       还有nmcli和ifconfig很相似。这里就不一一演示了

            

            

            

 

            

 

 

 

 

 

 

 

 

 

        

    

         

 

    


新闻标题:网络管理与配置
文章位置:http://scyanting.com/article/giicid.html