Linux8.2 网络管理

查看网络状态

  Linux系统作为服务器,会运行许多服务,并且与客户端进行相互通信,要有对外通信和监听端口。netstat工具就是查看Tcp/ip通信状态。通常情况下,

  查看监听端口和sockets。加上t选项可以只查看tcp/ip端口。

  同一台服务器两个进程之间通信使用sockets文件

#查看监听端口
[root@chyuanliuNJ ~]# netstat -lnp
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:80              0.0.0.0:*               LISTEN      2901/httpd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3233/sshd
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      2901/httpd
tcp        0      0 127.0.0.1:15772         0.0.0.0:*               LISTEN      1017/staragent-core
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      1516/java
tcp6       0      0 :::3306                 :::*                    LISTEN      1861/mysqld
udp        0      0 172.16.252.69:123       0.0.0.0:*                           778/ntpd
udp        0      0 127.0.0.1:123           0.0.0.0:*                           778/ntpd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           778/ntpd
udp6       0      0 :::123                  :::*                                778/ntpd
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     13806    1047/AliYunDun       /tmp/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7C    BA)>
unix  2      [ ACC ]     STREAM     LISTENING     13652    1018/staragent-ppf   /home/staragent/data/ppf.sock
unix  2      [ ACC ]     STREAM     LISTENING     13768    1017/staragent-core  /home/staragent/data/core.sock
unix  2      [ ACC ]     STREAM     LISTENING     11075    1/systemd            /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     15909    2891/php-fpm: maste  /home/www/logs/php-fpm.sock
unix  2      [ ACC ]     STREAM     LISTENING     9567     1/systemd            /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     15423    1861/mysqld          /tmp/mysql.sock
unix  2      [ ACC ]     STREAM     LISTENING     6802     1/systemd            /run/systemd/journal/stdout
unix  2      [ ACC ]     SEQPACKET  LISTENING     9623     1/systemd            /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     13807    1047/AliYunDun       /usr/local/aegis/Aegis-<Guid(5A2C30A2-A87D-490A-928    1-6765EDAD7CBA)>

   查看网络链接状态

Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
LISTEN:侦听来自远方的TCP端口的连接请求
链接状态
SYN-SENT:再发送连接请求后等待匹配的连接请求    
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态
[root@chyuanliuNJ ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:15772         0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:32000         127.0.0.1:31000         ESTABLISHED
tcp        0      0 127.0.0.1:31000         127.0.0.1:32000         ESTABLISHED
tcp        0      0 172.16.252.69:37520     140.205.140.205:80      ESTABLISHED
tcp        0     64 172.16.252.69:22        121.237.148.162:18497   ESTABLISHED
tcp        0      0 172.16.252.69:35444     100.100.80.158:8000     ESTABLISHED
tcp6       0      0 :::3306                 :::*                    LISTEN
udp        0      0 172.16.252.69:123       0.0.0.0:*
udp        0      0 127.0.0.1:123           0.0.0.0:*
udp        0      0 0.0.0.0:123             0.0.0.0:*
udp6       0      0 :::123                  :::*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     13806    /tmp/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
... ...
[root@chyuanliuNJ ~]# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:15772         0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:32000         127.0.0.1:31000         ESTABLISHED
tcp        0      0 127.0.0.1:31000         127.0.0.1:32000         ESTABLISHED
tcp        0      0 172.16.252.69:37520     140.205.140.205:80      ESTABLISHED
tcp        0     64 172.16.252.69:22        121.237.148.162:18497   ESTABLISHED
tcp        0      0 172.16.252.69:35444     100.100.80.158:8000     ESTABLISHED
tcp6       0      0 :::3306                 :::*                    LISTEN
[root@chyuanliuNJ ~]# netstat -anu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 172.16.252.69:123       0.0.0.0:*
udp        0      0 127.0.0.1:123           0.0.0.0:*
udp        0      0 0.0.0.0:123             0.0.0.0:*
udp6       0      0 :::123                  :::*

   查看各种状态个数,established是需要关注的状态,同一时间有多少客户端链接服务器保持通信,

[root@chyuanliuNJ ~]# netstat -an| awk '/^tcp/{++sta[$NF]}END{for(key in sta)print key,"	",sta[key]}'
LISTEN   6
ESTABLISHED      5

  ss -an与 netstat类似,但是不显示PID和进程名

[root@chyuanliuNJ ~]# ss -an |grep -i 'LISTEN'
u_str  LISTEN     0      5      /tmp/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDA                              D7CBA)> 13806                 * 0
u_str  LISTEN     0      100    /home/staragent/data/ppf.sock 13652                                               * 0
u_str  LISTEN     0      30     /home/staragent/data/core.sock 13768                                               * 0
u_str  LISTEN     0      128    /var/run/dbus/system_bus_socket 11075                                               * 0
u_str  LISTEN     0      128    /home/www/logs/php-fpm.sock 15909                                               * 0
u_str  LISTEN     0      128    /run/systemd/private 9567                  * 0                                
u_str  LISTEN     0      128    /tmp/mysql.sock 15423                 * 0                                     
u_str  LISTEN     0      128    /run/systemd/journal/stdout 6802                                                * 0
u_seq  LISTEN     0      128    /run/udev/control 9623                  * 0                                   
u_str  LISTEN     0      5      /usr/local/aegis/Aegis-<Guid(5A2C30A2-A87D-490A-                              9281-6765EDAD7CBA)> 13807                 * 0
tcp    LISTEN     0      128       *:80                    *:*
tcp    LISTEN     0      128       *:22                    *:*
tcp    LISTEN     0      128       *:443                   *:*
tcp    LISTEN     0      10     127.0.0.1:15772                 *:*                                           
tcp    LISTEN     0      1      127.0.0.1:32000                 *:*                                           
tcp    LISTEN     0      128      :::3306                 :::*

tcpdump抓包

  遇到攻击,网卡流量异常,进入服务器包量大,查看进入包的信息。

#-nn显示IP而不是主机名,  -i 可以指定网卡
[root@chyuanliuNJ ~]# tcpdump -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:57:41.563268 IP 172.16.252.69.22 > 121.237.148.162.18497: Flags [P.], seq 3055059848:3055060056, ack 1056013360, win 260, length 208
12:57:41.563402 IP 172.16.252.69.22 > 121.237.148.162.18497: Flags [P.], seq 208:400, ack 1, win 260, length 192
12:57:41.563426 IP 172.16.252.69.22 > 121.237.148.162.18497: Flags [P.], seq 400:576, ack 1, win 260, length 176
12:57:41.563446 IP 172.16.252.69.22 > 121.237.148.162.18497: Flags [P.], seq 576:752, ack 1, win 260, length 176
... ...
#不加n则显示主机名
[root@chyuanliuNJ ~]# tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:58:20.946549 IP chyuanliuNJ.ssh > 121.237.148.162.18497: Flags [P.], seq 3055071128:3055071336, ack 1056013744, win 260, length 208
12:58:20.946841 IP chyuanliuNJ.40461 > 100.100.2.138.domain: 4829+ PTR? 162.148.237.121.in-addr.arpa. (46)
12:58:20.946996 IP 100.100.2.138.domain > chyuanliuNJ.40461: 4829 NXDomain 0/1/0 (116)
12:58:20.947624 IP chyuanliuNJ.32948 > 100.100.2.136.domain: 20023+ PTR? 69.252.16.172.in-addr.arpa. (44)
12:58:20.947792 IP 100.100.2.136.domain > chyuanliuNJ.32948: 20023 NXDomain* 0/1/0 (98)
12:58:20.947884 IP chyuanliuNJ.44941 > 100.100.2.138.domain: 34442+ PTR? 138.2.100.100.in-addr.arpa. (44)
12:58:20.947910 IP chyuanliuNJ.ssh > 121.237.148.162.18497: Flags [P.], seq 208:400, ack 1, win 260, length 192
... ...

     查看数据流向,length长度,DDos -> udp flood攻击。

  可以指定端口网卡host。

[root@chyuanliuNJ ~]# tcpdump -nn -i eth0 not port 22 and host chyuanliuNJ
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
15:21:22.901762 IP 172.16.252.69.58159 > 100.100.2.138.53: 9206+ A? chyuanliuNJ. (29)
15:21:22.901890 IP 100.100.2.138.53 > 172.16.252.69.58159: 9206 NXDomain 0/1/0 (104)
15:21:22.902214 IP 172.16.252.69.58225 > 100.100.2.138.53: 21512+ AAAA? chyuanliuNJ. (29)
15:21:22.902343 IP 100.100.2.138.53 > 172.16.252.69.58225: 21512 NXDomain 0/1/0 (104)
15:21:24.092005 IP 140.205.140.205.80 > 172.16.252.69.37520: Flags [P.], seq 3003656447:3003656457, ack 3246881788, win 65535, length 10
15:21:24.131218 IP 172.16.252.69.37520 > 140.205.140.205.80: Flags [.], ack 10, win 65280, length 0
15:21:24.166388 IP 172.16.252.69.37520 > 140.205.140.205.80: Flags [P.], seq 1:7, ack 10, win 65280, length 6
15:21:24.171532 IP 140.205.140.205.80 > 172.16.252.69.37520: Flags [.], ack 7, win 65535, length 0
^C
8 packets captured
8 packets received by filter
0 packets dropped by kernel

   指定包数量及保存到的文件

# 1.cap就是系统从网卡里捕获的数据包信息
[root@chyuanliuNJ ~]# tcpdump -nn -c 100 -w 1.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
100 packets captured
100 packets received by filter
0 packets dropped by kernel
#用cat命令看不了,用read返回的还是数据流
[root@chyuanliuNJ ~]# tcpdump -r 1.cap
reading from file 1.cap, link-type EN10MB (Ethernet)
16:21:46.609879 IP chyuanliuNJ.ssh > 121.237.148.162.51681: Flags [P.], seq 1118231845:1118231989, ack 3986578950, win 260, length 144
16:21:46.626063 IP 121.237.148.162.51681 > chyuanliuNJ.ssh: Flags [.], ack 144, win 251, length 0
16:21:47.898812 IP chyuanliuNJ.37520 > 140.205.140.205.http: Flags [.], seq 3247351066:3247355086, ack 3003657277, win 65280, length 4020
16:21:47.898826 IP chyuanliuNJ.37520 > 140.205.140.205.http: Flags [P.], seq 4020:7750, ack 1, win 65280, length 3730
... ...

 tshark

  也可以用来抓包

[root@chyuanliuNJ ~]# yum install -y wireshark
[root@chyuanliuNJ ~]# tshark -n -t a  -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
tshark: -R without -2 is deprecated. For single-pass filtering use -Y.
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth0'
"Nov 27, 2017 17:36:51.498389910 CST"   172.16.252.69           POST    /agent/metrics/putLines
"Nov 27, 2017 17:37:06.557838621 CST"   172.16.252.69           POST    /agent/metrics/putLines
"Nov 27, 2017 17:37:21.592079438 CST"   172.16.252.69           POST    /agent/metrics/putLines
"Nov 27, 2017 17:37:28.997146600 CST"   121.237.148.51  47.96.170.152   GET     /
"Nov 27, 2017 17:37:29.094248280 CST"   121.237.148.51  47.96.170.152   GET     /favicon.ico
"Nov 27, 2017 17:37:29.186289000 CST"   121.237.148.51  47.96.170.152   GET     /favicon.ico
"Nov 27, 2017 17:37:36.629509620 CST"   172.16.252.69           POST    /agent/metrics/putLines
"Nov 27, 2017 17:37:38.112915894 CST"   101.226.33.224  47.96.170.152   GET     /
... ...

#打印http协议流相关信息,查看指定网卡80端口的web访问情况,在提供web服务的前提下,类似web访问日志。记录时间、域名、访问IP、状态、访问的链接。  

 Linux网络相关

[root@chyuanliuNJ ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.252.69  netmask 255.255.255.0  broadcast 172.16.252.255
        ether 00:16:3e:04:0d:4f  txqueuelen 1000  (Ethernet)
        RX packets 518  bytes 70981 (69.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 627  bytes 109992 (107.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets 60  bytes 7973 (7.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 60  bytes 7973 (7.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

#ifup 网卡    ifdown 网卡

#  启动网卡     关闭网卡

#设置虚拟网卡类似配置IP

#查看网线是否正确链接到网卡
如果mii-tool eth0不支持,用下面的
[root@chyuanliuNJ ~]# ethtool eth0
Settings for eth0:
        Link detected: yes

#修改hostname,需要重启服务器才能显示,配置文件/etc/hostname
[root@chyuanliuNJ ~]# hostnamectl set-hostname chyuanliu


#DNS配置文件
[root@chyuanliuNJ ~]# cat /etc/resolv.conf
options timeout:2 attempts:3 rotate single-request-reopen
; generated by /usr/sbin/dhclient-script
nameserver 100.100.2.138
nameserver 100.100.2.136

#hosts文件,只在本机生效,支持一个IP配多个域名,空格分隔,最下面配置的优先级越高
[root@chyuanliuNJ ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

   如果一台服务器需要设置多个ip,但又不想添加多块网卡,那就需要配置虚拟网卡。

[root@chy002 ~]# cd /etc/sysconfig/network-scripts/
[root@chy002 network-scripts]# cp ifcfg-eno16777736 ifcfg-eno16777736:0
[root@chy002 network-scripts]# vi !$
... ...
NAME=eno16777736:0
ONBOOT=yes
IPADDR=192.168.212.138
NETMASK=255.255.255.0
#修改NAME IPADDR 删除DNS
[root@chy002 network-scripts]# ifdown eno16777736 && ifup eno16777736
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
[root@chy002 network-scripts]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.212.130  netmask 255.255.255.0  broadcast 192.168.212.255
        inet6 fe80::20c:29ff:fe0e:39dc  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0e:39:dc  txqueuelen 1000  (Ethernet)
        RX packets 267  bytes 28452 (27.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 260  bytes 37013 (36.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno16777736:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.212.138  netmask 255.255.255.0  broadcast 192.168.212.255
        ether 00:0c:29:0e:39:dc  txqueuelen 1000  (Ethernet)

  中间出现一个小问题,系统配置文件的HWADDR与vmware中配置的不一样,导致出现错误 eno16777736: unknown interface: No such device.

  导致该网卡只能关闭,不能重启。把配置文件中的mac地址修改为vmware中网卡的硬件地址即可。

Linux8.2 网络管理