Linux网络管理命令的使用

网络管理命令

ip命令

配置Linux网络属性:ip命令,不过该命令的操作只是临时操作,重启以后配置丢失

ip-show / manipulate routing, devices, policy routing and tunnels

ip [ OPTIONS ] OBJECT { COMMAND | help }

        OBJECT := { link | addr | route }

示例:

   ip link – network device configuration

    set dev IFACE

    可设置属性:

        up and down:激活或禁用指定接口

        ifup/ifdown    

    show [dev IFACE]:指定接口

       [up]:仅显示处于激活状态的接口

示例1:显示所有接口的状态

wKiom1fPzc3D7Tk7AABA7dqvzYQ295.png

示例2:关闭eth1口,然后显示eth1接口的状态,而后显示其他状态是up的接口

wKiom1fP0KqQGnEVAABfZHPOyic966.pngwKiom1fP2CuTrWgAAAAjOQyeE5U978.png

ip addr { add | del | change } IFADDR dev STRING

    [label LABEL]:添加地址时指明网卡别名

    [scope {global|link|host}]:指明作用域

        global: 全局可用;

        link: 仅链接可用;

        host: 本机可用;

    [broadcast ADDRESS]:指明广播地址

ip address show -look at protocol addresses

    [dev DEVICE]

    [label PATTERN]

    [primary and secondary]

ip address flush -使用格式同show

ip addr add 172.16.0.100/16 dev eth2 label eth2

ip addr del 172.16.0.100/16 dev eth2 label eth2

ip addr flush dev eth2 label eth2

示例1:使用ip addr命令添加一个ip

wKiom1fP3E-he7uNAAC4j9UR8j0274.png示例2:改变eth2的ip地址

wKiom1fP3XDDTbCWAACRFOsjy8A532.png示例3:删除eth2的ip信息

wKiom1fP3yGjd6nCAABOs20m22w900.png

示例4:此命令不会保存在配置文件中,只是暂时存放在内存里面,使用请注意

wKiom1fP30eBl5mAAABdiuq2um8208.png

ip route – routing table management

    添加路由:ip route add

           ip route add TARGET via GW dev IFACE srcSOURCE_IP

            TARGET:

            主机路由:IP

            网络路由:NETWORK/MASK

        ip route add 192.168.0.0/24 via 172.16.0.1

        ip route add 192.168.1.13 via 172.16.0.1

    添加网关:ip route add default via GW dev IFACE

         ip route add default via 172.16.0.1 

    删除路由:ip route delete

         ip route del TARGET

    显示路由:ip route show|list

    清空路由表:ip route flush [dev IFACE] [via PREFIX]

          ip route flush dev eth0

示例1:添加172.16.0.0/16的路由

wKiom1fP-SbDyG9XAABkd_gqtYo117.png

示例2:添加一个网关

wKioL1fP-suQVPyZAABAjaZGsl0334.png

示例3:删除默认网关路由

wKiom1fP-oLBZNbFAAA5z1Pu-ew143.png

示例4:删除相关的所有路由

wKiom1fQAUqxHmGIAAANGaT0zx0479.png

netstat命令:

显示网络链接

Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships、

常用选项:

   -t: tcp协议相关

   -u: udp协议相关

   -w: raw socket相关

   -l: 处于监听状态

   -a: 所有状态

   -n: 以数字显示IP和端口;

   -e:扩展格式

   -p: 显示相关进程及PID

常用组合:

-tan, -uan, -tnl, -unl,-rn,tnlp

显示路由表:

netstat {–route|-r} [–numeric|-n]

   -r: 显示内核路由表

   -n: 数字格式

显示接口统计数据:

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

# netstat -i

# netstat -IIFACE

示例1:查看所有tcp协议的状态

wKioL1fPwsWSlGuJAADR8tYJZLs130.png

示例2:查看所有udp的协议状态

wKioL1fPylzTkqRtAAA975kMH64630.png

示例3:查看所有正在监听的tcp协议

wKiom1fPxf_D60wJAABeLsIfPWU229.png

示例4:查看所有正在监听的udp协议

wKioL1fPxgCC9P7AAAA9gzeXMQM097.png

示例5:查看所有tcp和udp协议状态以及进程号

wKioL1fPxrvjVlK6AAC5EOuCj8g118.png

ss命令

格式:ss[OPTION]… [FILTER]

netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息。

选项:

    -t: tcp协议相关

    -u: udp协议相关

    -w: 裸套接字相关

    -x:unixsock相关

    -l: listen状态的连接

    -a: 所有

    -n: 数字格式

    -p: 相关的程序及PID

    -e: 扩展的信息

    -m:内存用量

    -o:计时器信息

FILTER := [ state TCP-STATE ] [ EXPRESSION ]

  TCP的常见状态:

    tcpfinite state machine:

    LISTEN: 监听

    ESTABLISHED:已建立的连接

    FIN_WAIT_1

    FIN_WAIT_2

    SYN_SENT

    SYN_RECV

    CLOSED

EXPRESSION:

  dport=

  sport =

  示例: ’( dport= :sshor sport = :ssh)’

常用组合:

-tan, -tanl, -tanlp, -uan,tunl

常见用法示例:

ss -l 显示本地打开的所有端口

wKioL1fQDc6BTqeIAABXY2eiEbc482.png

ss -pl 显示每个进程具体打开的socket

wKiom1fQDjnz49SGAACgHpHhWZw043.png

ss -t -a 显示所有tcp socket

wKioL1fQDnOQChyAAABchWfo18U454.png

ss -u -a 显示所有的UDP Socekt

wKiom1fQEA-TBGqwAABAdJD6OGU519.png

ss -o state established '( dport = :ssh or sport = :ssh )' 显示所有已建立的SSH连接

wKioL1fQEAaxpP5AAAAlBQDP6R4492.png

ss -s 列出当前socket详细信息:

wKiom1fQD_6hUjEDAAAus2wAaHE057.png

ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有已建立的SMTP连接

ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程

nmcli命令(注意,此命令只适用于CentOS 7的版本,6版本的这个命令并不好使)

地址配置工具:nmcli

nmcli[ OPTIONS ] OBJECT { COMMAND | help }

    device -show and manage network interfaces

    nmcli device help

    connection -start, stop, and manage network connections

    nmcli connection help

修改IP地址等属性:

   nmcli connection modify IFACE [+|-] setting.property value

    setting.property:

    ipv4.addressesipv4.gateway

    ipv4.dns1 ipv4.methodmanual | dhcp

修改配置文件执行生效:systemctl restart network

           nmcli con reload

nmcli命令生效:nmcli con down eth0 ;nmcli con up eth0

示例1:新增网卡,设置它的IP地址

添加了一个新的网卡,系统自动识别为eth1,网卡名字Wired connetion 1,此处作用的是NetworkManager,否则新建一个网卡的时候应该没有名字。

wKiom1fSZETylJ6KAAAuFAPoTAo047.png

此处我清理掉上图的信息,此时查看接口的状态

wKioL1fUtzbAGap4AABOLHu9Ux4938.png

添加网卡信息,设置该网卡为手动设置,配置ip地址,网关,dns,开机自动启动,此处会生成配置文件

wKioL1fUtGPx_b5_AADVHgm7wM0101.png

配置完看了一下,ip已经起来了,连服务都没重启呢。并且测试过连通性也是没问题

wKioL1fUv0vCZhUEAABdVzJ0ZwY856.png

wKiom1fUwH6wGdU4AACS-IsZ9ng177.png

示例2:新增绑定一个新的配置文件home和ip地址,但是我们发现,此处文件并没有绑定接口wKiom1fUwazArxdnAABXW57U9pM851.png

此处用nmcli device status可以看见接口eht1已经是工作中,但是此命令不能看见接口绑定的是哪个配置文件,我们发现ip还是以前的ip

wKiom1fUwa_zCkQUAABu4V9U6_I889.png

此处用nmcli con up home的命令启用接口,然后我们发现eth1接口此时用的是home的配置文件,这样的话就可以把接口切换过来

wKioL1fUwbPyIM7jAAChP24aclw003.png

也可以用nmcli con down +conf文件这样方式来切换

wKioL1fUwbTzhlsOAACiKEJP6U0844.png

如果对以上的配置文件有需要自己改动的地方,则手动编辑之,然后输入nmcli con reload命令重新导入配置文件即可。例如编辑ip地址和网卡的NAME

wKioL1fUxDrRfVUMAABKchA8z-w985.png

编辑完,配置文件并不会马上生效,我们可以用nmcli con reload的命令重新加载配置文件,发现网卡的NAME属性已经生效,但是ip还是没有改变

wKiom1fUxD3ifWEiAADakiamJCA552.png

此处重启网络服务,ip已经起来了。

wKioL1fUxEHjPSZCAABVzBSUK6s599.png

相关工具

网络接口配置tui工具:nmtui(nmcli的图形化工具,个人还是建议用命令的,此处不再演示)

使用nmcli配置网络

NeworkManager是管理和监控网络设置的守护进程

设备即网络接口,连接是对网络接口的配置。一个网络接口可有多个连接配置,但同时只有一个连接配置生效。

显示所有包括不活动连接

nmclicon show

显示所有活动连接

nmclicon show –active

显示网络连接配置

nmclicon show "home"

显示设备状态

nmcli dev status

显示网络接口属性

nmclidev show eno16777736(CentOS7的网卡的命名)

创建新连接home,IP自动通过dhcp获取

nmclicon add con-name home type Ethernet ifname eth1

删除连接

nmclicon del home

创建新连接eth1 ,指定静态IP,不自动连接

nmcticon add con-name static ifname eth1 autoconnect no type Ethernet ip4 10.1.156.71/16 gw4 10.1.0.1

启用home连接配置

nmcli con up home

启用eth1连接配置

nmclicon up eth1

查看帮助

nmclicon add help

修改连接设置

nmcli con mod “eth1” connection.autoconnect no

nmcli con mod “eth1” ipv4.dns 10.1.0.1

nmcli con mod “eth1” +ipv4.dns 8.8.8.8

nmcli con mod “eth1” -ipv4.dns 8.8.8.8

nmcli con mod “eth1” ipv4.addresses “172.16.0.100 172.16.0.1”

nmcli con mod “eth1” +ipv4.addresses 10.10.10.10/16

wKioL1fQEp6wXTx8AADZwrHXyQo664.png

wKioL1fQEm-xWU4WAAFLjd09Ixs240.png

设备配置被保存在文本文件中

/etc/sysconfig/network-scripts/ifcfg-<name>

帮助文档列出完整选项列表:/usr/share/doc/initcripts-*/sysconfig.txt

wKiom1fQEkTxznArAAC_aiuWwfY364.png

修改连接配置后,需要重新加载配置

nmcli con reload

nmcli con down “system eth0” 可被自动激活

nmcli con up “system eth0”

nmcli dev dis eth0 禁用网卡,访止被自动激活

示例2:新增绑定一个新的配置文件home和ip地址,但是我们发现,此处文件并没有绑定接口wKiom1fUwazArxdnAABXW57U9pM851.png

此处用nmcli device status可以看见接口eht1已经是工作中,但是此命令不能看见接口绑定的是哪个配置文件,我们发现ip还是以前的ip

wKiom1fUwa_zCkQUAABu4V9U6_I889.png

此处用nmcli con up home的命令启用接口,然后我们发现eth1接口此时用的是home的配置文件,这样的话就可以把接口切换过来

wKioL1fUwbPyIM7jAAChP24aclw003.png

也可以用nmcli con down +conf文件这样方式来切换

wKioL1fUwbTzhlsOAACiKEJP6U0844.png

如果对以上的配置文件有需要自己改动的地方,则手动编辑之,然后输入nmcli con reload命令重新导入配置文件即可。例如编辑ip地址和网卡的NAME

wKioL1fUxDrRfVUMAABKchA8z-w985.png

编辑完,配置文件并不会马上生效,我们可以用nmcli con reload的命令重新加载配置文件,发现网卡的NAME属性已经生效,但是ip还是没有改变

wKiom1fUxD3ifWEiAADakiamJCA552.png

此处重启网络服务,ip已经起来了。

wKioL1fUxEHjPSZCAABVzBSUK6s599.png

删除home的配置文件

wKiom1fUy66yUBCrAAA0KD_4NYI415.png

修改网卡开机自动链接为no

nmcli con mod “work” connection.autoconnect no

wKiom1fUzOzR4GPEAABS_JKIUH4467.png

wKiom1fUzMuRwiUeAABvTOLDumg690.png

设置DNS地址

nmcli con mod “work” ipv4.dns 10.1.0.1

wKioL1fUzVewgABMAABxNCoRST0745.png增加一组DNS地址

nmcli con mod “work” +ipv4.dns 8.8.8.8

wKioL1fUzbez-Q8gAAB_jIKvL-s692.png删除掉8.8.8.8的dns

nmcli con mod “work” -ipv4.dns 8.8.8.8

wKiom1fUzybTx70MAABx25nTn8I765.png

修改ip到其他地址

nmcli con mod “work” ipv4.addresses “172.16.0.100/24 ipv4.gateway 172.16.0.1”

wKiom1fUzyrhFf9kAAB69qQflc8456.png

增加一个ip地址

nmcli con mod “work” +ipv4.addresses 10.1.156.71wKioL1fUzzDCiu2vAAB_6aMpqBE233.png

注意:以上的修改操作并不会马上生效,生效需要重启网卡服务systemctl restart network

图形工具(此工具只能在图形界面下面启动)

nm-connection-editor

网络组Network Teaming(同样只适用于CentOS 7)

网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量

网络组不同于旧版中bonding技术,提供更好的性能和扩展性

网络组由内核驱动和teamd守护进程实现.

多种方式runner

broadcast 广播

roundrobin 循环

activebackup 备份

loadbalance 负载均衡

lacp 接口聚合(implements the 802.3ad Link Aggregation Control Protocol) 

网络组

启动网络组接口不会自动启动网络组中的port接口

启动网络组接口中的port接口不会自动启动网络组接口

禁用网络组接口会自动禁用网络组中的port接口

没有port接口的网络组接口可以启动静态IP连接

启用DHCP连接时,没有port接口的网络组会等待port接口的加入

创建网络组接口

nmclicon add type team con-name CNAME ifname INAME [config JSON]

   CNAME为连接名,INAME为接口名

   JSON为指定runner方式

   格式:'{"runner": {"name": "METHOD"}}'

   METHOD可以是broadcast,roundrobin,activebackup,loadbalance,lacp.

创建网络组接口实例

首先创建网络组接口,名为team0的接口,模式为备份模式

nmcli con add type team con-name team0 ifname team0 

config ‘{"runner": {"name": "activebackup"}}'

wKioL1fVDqSB9cdhAABYnBmdpZE252.png

wKiom1fVDqbC_suKAAC7aFIGY2E838.png

给接口配置ip地址等信息

nmcli con mod team0 ipv4.addresses 10.1.156.156/16

nmcli con mod team0 ipv4.method manualwKioL1fVDqeDvoIIAACAC49iMAI212.png

创建port接口

nmcli con add type team-slave con-name CNAME ifname INAME master TEAM 

   CNAME连接名,INAME网络接口名,TEAM网络组接口名.

连接名若不指定,默认为team-slave-IFACE.

nmcli device disconnect INAME 关闭指定的真实接口

nmcli connection up CNAME 指定配置文件的接口up

   INAME设备名CNAME网络组接口名或port接口

网络组实例

nmcli con add type team-slave ifname eth0 master team0

nmcli con add type team-slave ifname eth1 master team0 con-name team0-eth1

nmcli con up team0 启用team0接口

nmcli dev dis eth0 关闭掉原来的接口

teamdctl team0 state

wKioL1fVHVGwzHOVAACNCrovp8w616.png

wKiom1fVHvbBQY6sAABSsAqQx2Y339.png

完整示例:创建网络组

首先创建网络组接口,名为team0的接口,模式为备份模式

nmcli con add type team con-name team0 ifname team0 

config ‘{"runner": {"name": "activebackup"}}'

wKioL1fVDqSB9cdhAABYnBmdpZE252.png

wKiom1fVDqbC_suKAAC7aFIGY2E838.png

给接口配置ip地址等信息

nmcli con mod team0 ipv4.addresses 10.1.156.156/16

nmcli con mod team0 ipv4.method manualwKioL1fVDqeDvoIIAACAC49iMAI212.png

创建port接口

nmcli con add type team-slave con-name team0-eth0 ifname eth0 master team0

nmcli con add type team-slave con-name team0-eth1 ifname eth1 master team0

wKioL1fVHVGwzHOVAACNCrovp8w616.png

wKiom1fVHvbBQY6sAABSsAqQx2Y339.png

启用team0接口,但是可以看见port的接口的配置文件还没有生效

wKioL1fVIjvjjpwNAABpuVo2Sko560.png

使port接口生效,有两种方法

第一种:直接关闭掉原来的接口

wKiom1fVHzmRxviSAAAJk75uJvY554.png

第二种:直接nmcli connection up 指定port接口配置文件,此处用第二种

wKioL1fVHzrhPYDvAAAPeftJ7l8507.png

可以看见接口已经起来了

wKiom1fVHzvwyOUpAAAcJxgMZbU264.png

此时可以用teamdctl team0 state的命令来查看网络组接口的状态,发现接口已经起来了

此时的主端口是eth1

wKioL1fVHzvg42DCAAAT3Bwu03g764.png

首先测试一下ping team0口来看看连通性,发现是通的

wKiom1fVHz7STeYHAAEa5Sm6Sxs418.png

此时断开eth1,然后再查询teamdctl team0 state命令

可以看见eth1已经断开,此时作用的是eth0

wKioL1fVHz-xST9AAAAVCILaKZg481.png

重新链接eth1,再断开eth0,然后再查询teamdctl team0 state命令

可以看见eth0已经断开,此时作用的是eth1

wKiom1fVHz_BMZc4AAAVSZZ4R5M889.png

最后,重新链接eth0,然后再查询teamdctl team0 state命令

可以看见eth0已经链接上,此时作用的是eth1,此时实验完毕

wKioL1fVH0CAe_f2AAAXQSDsWKw158.png

写在最后:由于虚拟机的关系,对此命令实现的效果有问题,所以后面测试的就不截图了,只保存接口状态的的截图了。

如果需要测试接口的话,也可以用watch -n1 'netstat -Ieth0'和watch -n1 'netstat -Ieth1'同时查看接口的流量状态,可以发现是,只有active port的接口才会有流量,当actice port接口断开切换到另外一个接口的时候,另外一个接口才会有流量

wKioL1fVH0ChhUk2AAAO1LdYdhQ239.png

此时作用的是eth0,可以对比两个图,可以发现只有eth0接口的流量有变化

wKioL1fVJWvzsuQRAACLXVUR-iY117.png

此处关擦eth0接口的接收RX和发送TX流量变化

wKiom1fVJWzTRtvNAACHpmSse5Y839.png

使用nmcli配置主机名

rhel6之前主机名配置文件:/etc/sysconfig/network

rhel7.0主机名配置文件:/etc/hostname ,默认没有这个文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain

显示主机名信息

hostname

hostnamectl status

创建并修改文件并生效

hostnamectlset-hostname desktopX.example.com

删除文件,恢复主机名localhost.localdomain

DNS设置,存放在/etc/resolv.conf文件中

PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取。等价于下面命令:

nmclicon mod “system eth0” ipv4.ignore-auto-dns yes

示例:设置主机名

查看此时计算机名状态,此时是centos.localdomain

wKiom1fUx-Pzze4QAABFB4PuCQ0993.png

改一个主机名,可以看见,马上生效了,这点比起CentOS6上面还是要方便不少

wKiom1fUx_CxlSQXAAB2E3VGNz0947.png

测试网络命令

在命令行下测试网络的连通性

显示主机名

    hostname

测试网络连通性

    ping

    mtr

显示正确的路由表

    ip route

确定名称服务器使用:

    nslookup

    host

    dig

跟踪路由

    traceroute

    Tracepath

网络客户端工具

lftp, ftp, lftpget, wget

    lftp [-p port] [-u user[,password]] SERVER

子命令:

    get、mget、ls、help

lftp

   put  单个文件上传

   get  单个文件下载,可以补全,ftp的不能

   mget  多个东西下载,也可以支持补全,支持通配符

   mput  多个上传

ftp FTP  

  如果需要匿名登陆,可以使用anonymous或者ftp,密码是空密码或者随便一个

  pwd 显示在ftp里面的目录

  lcd 显示本机当前的位置

    lcd PATH:切换到其他的下载目录

        在ftp里面下载的东西的话默认会下载到lcd的目录

  get 文件名:下载文件指令,如果文件名有空格,需要在文件名前后加上“”双引号

  cd 切换目录 

  passive 切换ftp的工作模式,默认是主动模式,通信时候使用端口20传文件,21收文件。

      被动模式的时候使用一个大端口号。

  help 列出所有的在ftp里面的命令,非本地

  quit 退出

ftp和lftp都是交互式

在ftp里面,需要对本地操作,可以再命令前面加上叹号!,如!pwd,作用同在ftp里面输入lcd

ftp 支持通配符

ftp和lftp都是交互式,不能卸载脚本里面

lftpget URL 下文件,并且支持多点续传,多线程下载

wget 可以下载ftp资源和http资源

wget [option]… [URL]…

    NAME_A TO NAME_B 改名

    -q: 静默模式

    -c: 断点续传

    -O: 保存位置

    –limit-rates=: 指定传输速率

links 连接,可以当浏览器

   links url [option]

    –dump 抓取网站文字 ex. links a.com > a.txt

    –source 抓取网站源码

curl 网址 直接看源码

    -I 查看网站各种信息

原创文章,作者:~微风~,如若转载,请注明出处:http://www.178linux.com/45656