本文简单梳理总结一下Linux网络基本管理的常用命令,主要的目的是加深记忆吧。

 

网络的基本概念这里就不多说,从Linux主机接入网络,以CentOS 7系统为主,先简单从网络接口开始。

传统的命名方式一般有下面两种:

    (1) 以太网:ethX, [0,1, …],例如eth0, eth1, ...

    (2) PPP网络:pppX, [0,1, ...], 例如ppp0, ppp1, ...

CentOS 7 上,网络接口的命名方式发生了变化,不再是以往的风格了,它用一种可预测的方案来命名,命名规则如下:

(1) 如果FirmwareBIOS为主板上集成的设备提供的索引信息可用,则根据此索引进行命名,如eno1, eno2, ...

(2) 如果FirmwareBIOSPCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如ens1, ens2, ...

(3) 如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0, ...

(4) 如果用户显式定义,也可根据MAC地址命名,例如enx122161ab2e10,...

(5) 上述均不可用,则仍使用传统方式命名

命名格式由传输的介质类型和物理接口类型组成:

    按传输介质类型分:

        en : ethernet 以太网

        wl : wlan 无线局域网

        ww : wwan 无线广域网

    物理接口类型分:

        o<index>: 集成设备的设备索引号

        s<slot>: 扩展槽的索引号

        x<MAC>: 基于MAC地址命名

        p<bus>s<slot>: 基于总线及槽的拓扑结构进行命名

 

说完接口命名,接下来开始具体说明常用工具的使用。

配置一台Linux主机接入网络,一是把主机设置为动态获取,需要依赖本地的DHCP服务;二是手动静态配置。

与设置相关的命令有很多,下面大概梳理一下:

下面分别介绍这三个家族命令的使用。

 

ifconfig命令:设置网络接口

作用:接口及地址查看和管理

查看的查看的用法:

# ifconfig -a                //显示所有接口,包括inactive状态的接口# ifconfig [INTERFACE]       //查看指定接口的状态信息        [root@localhost~]# ifconfig eno33554984

设定的常用用法:

# ifconfig INTERFACEIP/PREFIXLEN [up|down]         [root@localhost ~]# ifconfigeno33554984 172.16.1.2/16         [root@localhost ~]# ifconfigeno33554984 172.16.1.2/16 up#ifconfig INTERFACE IP netmask NETMASK         [root@localhost ~]# ifconfigeno33554984 172.16.1.2 netmask 255.255.0.0#ifconfig INTERFACE [-]promisc         [root@localhost ~]# ifconfigeno33554984 promisc     //开启混杂模式         [root@localhost ~]# ifconfigeno33554984 -promisc    //关闭混杂模式# ifconfigINTERFACE_LABEL IPADDR/NETMASK         [root@localhost ~]# ifconfigeno33554984:0 192.168.137.5/24    //labelipaddress

管理IPv6地址:

add addr/prefixlendel addr/prefixlen

每条命令都会立即送往内核中的TCP/IP协议栈,并会立即生效。

 

route命令:路由查看及管理

路由条目类型:

    主机路由:目标地址为单个IP

    网络路由:目标地址为IP网络;

    默认路由:目标为任意网络,0.0.0.0/0.0.0.0

 

查看:

# route -n

    

添加:

# route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If]    # route add-net  10.0.0.0/8  gw 192.168.10.1  dev  eth1    # route add  -net  0.0.0.0/0.0.0.0  gw 192.168.10.1    # route add  default  gw 192.168.10.1

删除:

# route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]    # route del -net 10.0.0.0/8 gw 192.168.10.1    # route del default

查看结果中各个字段的含义如下:

  • Destination 表示路由的目标IP地址

  • Gateway 表示网关使用的主机名或者IP地址,“*” 表示没有网关

  • Genmask 表示路由的网络掩码,在把它与路由的目标地址进行比较之前,内核通过Genmask和数据包的IP地址进行按位操作来设置路由。

  • Flags 表示路由的标志。可用的标志及其意义:U 表示路由在启动,H 表示target是一台主机,G 表示使用网关,R 表示对动态路由进行复位设置,D 表示动态路由, M 表示修改路由,! 表示拒绝路由

  • Metric 表示路由的单位开销

  • Ref 表示依赖本路由现状的其他路由数目

  • Use 表示路由表条目被使用的数目

  • Iface 表示路由所发送的包的目的网络

 

netstat命令:查看网络连接状态

作用:netstat主要用于Linux查看自身的网络状况,如开启的端口、在为哪些用户服务,以及服务的状态等,此外,它还显示系统路由表、网络接口状态等。可用说,它是一个综合性的网络状态查看工具。

 

显示路由表:

# netstat -rn    -r:显示内核路由表    -n:数字格式显示

显示网络连接:

# netstat [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w][--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]][--program|-p]

常用选项:

    -tTCP协议的相关连接,连接均有其状态;FSMFinate State Machine

    -uUDP相关的连接

    -wraw socket相关的连接

    -l:处于监听状态的连接

    -a:所有状态

    -n:以数字格式显示IPPort

    -e:扩展格式

    -p:显示相关的进程及PID

 

常用组合选项:-tan, -uan, -tnl, -unl, -tunlp

 

显示接口的统计数据:

# netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e][--verbose|-v] [--program|-p] [--numeric|-n]

    所有接口:netstat-i

    指定接口:netstat-I<IFace>

 

ifup/ifdown命令:激活/禁用网络设备

用法:

# ifup 
    # ifup eno33554984# ifdown 
    # ifdown eno33554984

说明:通常使用以保存的配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置。如果要修改网卡MAC地址,修改之前要禁用网络设备,应使用ifdown 命令,否则系统会报错。

 

hostname命令:配置主机名

查看当前主机名:

# hostname

配置主机名:

# hostname HOSTNAME

说明:在一个局域网中,每台机器都有一个主机名,使得主机与主机之间便于区分。可以根据每台机器的功能来为其命名。hostname设置的主机名在系统重启后将失效,要想永久生效,应该手动修改配置文件/etc/hostsRedhat/Fedora或以此为基础打包的发行版)。

hostnamectl命令: CentOS 7 专用

# hostnamectlstatus : 显示当前主机名信息# hostnamectlset-hostname : 设定主机名,永久有效

ip命令:网络集成设置工具

作用:ip命令是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如:ifconfigroute等。几乎所有的Linux发行版本都支持ip命令。

常用的几个用法:

# ip [ OPTIONS] OBJECT { COMMAND | help }                OBJECT = {link | addr | route | netns }

说明:所有的对象名都可以简写,例如address可以简写为addr,还可以按“Tab”键进行命令补全。

OBJECT常用选项:

ip link:属性配置

# ip link set:    [root@localhost ~]# ip link seteno50332208 up                   //激活网卡    [root@localhost ~]# ip link seteno50332208 down                 //禁用网卡    [root@localhost ~]# ip link set eno50332208multicast on     //启用多播功能    [root@localhost ~]# ip link seteno50332208 multicast off    //禁用多播功能    [root@localhost ~]# ip link seteno50332208 name NI1          //重命名接口    [root@localhost ~]# ip link seteno50332208 mtu 1500          //设置MTU的大小,默认1500    [root@localhost ~]# ip link seteno50332208 netns newns    //将接口移动到newns网络名称空间# ip link show         //displaydevice attributes# ip link help         //显示简要使用帮助;

ip netns:网络名称空间配置

[root@localhost~]# ip netns list         //列出所有的netns[root@localhost~]# ip netns add newns2   //创建指定的netns[root@localhost~]# ip netns del newns2   //删除newns2exec NS_NAME COMMAND:在指定的netns中运行命令[root@localhost ~]# ip netns exec newnsip link show eno50332208

ip addr:接口ip地址管理

# ip addr show    //显示每个接口的ip地址# ip addr add    //添加ip地址    [root@localhost~]# ip addr add 192.168.150.137/24 dev eno33554984       //添加ip地址    [root@localhost~]# ip addr add 192.168.210.10/24 dev eno33554984 label eno33554984:0 broadcast192.168.210.255 scope link            //[label NAME]:为额外添加的地址指明接口别名            //[broadcast ADDRESS]:广播地址,会根据IP和NETMASK自动计算得到;            //[scope SCOPE_VALUE]:                        global:全局可用                        link:接口可用                        host:仅本机可用# ip addr delete   //删除地址    [root@localhost~]# ip addr del 192.168.210.10/24 dev eno33554984    # ip addr show    // look at protocol addresses    [root@localhost~]# ip addr show eno33554984    //显示接口的地址    # ip addr flush   // flush protocol addresses    [root@localhost~]# ip addr flush dev eno33554984

ip route:路由表管理

# ip route // routing table management       //ip route show- display route       //iproute add - add new route       //iproute change - change route       //iproute replace - change or add new one# ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]    [root@localhost~]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100    [root@localhost~]# ip route add default via GW    # ip route del    // delete route# ip route del TYPE PRIFIX    [root@localhost ~]# ip route delete192.168.1.0/24# iproute show // list routes    TYPE PRIFIX # iproute flush // flush routing tables    TYPE PRIFIX# iproute get // get a single route# iproute get TYPE PRIFIX    [root@localhost ~]# ip route get192.168.0.0/24

ss命令:显示网络状态信息

作用:ss类似netstat,能显示网络状态信息。

用法:

# ss [options] [ FILTER ]

options

    -tTCP协议的相关连接

    -uUDP相关的连接

    -wraw socket相关的连接

    -l:监听状态的连接

    -a:所有状态的连接

    -n:数字格式

    -p:相关的程序及其PID

    -e:扩展格式信息

    -m:内存用量

    -o:计时器信息

        

    FILTER: [ state TCP-STATE ] [ EXPRESSION ]

        TCP FSM

        LISTEN:监听

        ESTABLISHED:建立的连接

        FIN_WAIT_1

        FIN_WAIT_2

        SYN_SENT

        SYN_RECV

        CLOSED

 

    EXPRESSION

        dport=

        sport=

    示例:'( dport = :22 orsport = :22)'

[root@localhost~]# ss -tan '(  dport = :22 or sport =:22  )'[root@localhost~]# ss -tan state ESTABLISHED

配置文件

  • /etc/sysconfig/network-scripts/route-INTERFACE  //路由的配置文件

支持两种配置方式,但不可混用

(1) 每行一个路由条目:

    TARGET via GW

(2) 每三行一个路由条目:

    ADDRESS#=TARGET

    NETMASK#=MASK

    GATEWAY#=NEXTHOP

 

  • /etc/sysconfig/network-scripts/ifcfg-INTERFACE   // IP/NETMASK/GW/DNS/等属性的配置文件

配置文件/etc/sysconfig/network-scripts/ifcfg-INTERFACE通过大量参数来定义接口的属性,可用vim等文本编辑器直接修改,也可以使用专用的命令的进行修改(CentOS 6system-config-network (setup)CentOS 7: nmtui

ifcfg-INTERFACE配置文件参数说明:

    DEVICE:此配置文件对应的设备的名称

    ONBOOT:在系统引导过程中,是否激活此接口

    UUID:此设备的惟一标识

    IPV6INIT:是否初始化IPv6

    BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有dhcpbootpstaticnone

    TYPE:接口类型,常见的有Ethernet,Bridge

    DNS1:第一DNS服务器指向

    DNS2:备用DNS服务器指向

    DOMAINDNS搜索域

    IPADDR IP地址

    NETMASK:子网掩码;CentOS 7支持使用PREFIX以长度方式指明子网掩码

    GATEWAY:默认网关

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

    PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcpserver分配的dns服务器指向覆盖本地手动指定的DNS服务器指向;默认为允许

    HWADDR:设备的MAC地址

    NM_CONTROLLED:是否使用NetworkManager服务来控制接口

 

为别名添加配置文件

DEVICE=IFACE_LABEL

BOOTPROTO:别名不支持动态获取地址,只能指定为staticnone

注意:可以直接复制一份其他网卡的配置文件,再在里面做修改

例如:

[root@localhost~]# cd /etc/sysconfig/network-scripts[root@localhost network-scripts]# cp ifcfg-eno33554984 ifcfg-eno33554984:0[root@localhost network-scripts]# vim ifcfg-eno33554984:0DEVICE="eno33554984:0"ONBOOT=yesNETBOOT=yesIPV6INIT=noIPADDR=172.16.2.2PREFIX=24BOOTPROTO=noneTYPE=Ethernet