Linux网络管理

ifconfig

ifconfig查看匹配IP

route 管理路由

netstat 端口状态及统计数据查看

ifconfig

ifconfig          查看IP 
ifconfig eth_name 指定查看网卡
ifconfig eth_name up 启用网卡
ifconfig eth_name dome    关闭网卡
配置IP例:
    ifconfig eth1 192.168.10.10 netmask 255.255.255.0 up

route

添加路由语法: route add [-net|-host] target [netmask NM] [gw GW] [dev] 
例: route add -net 192.168.0.0/24 gw 192.168.0.1 eth1

删除路由语法: route del  target [gw GW] [netmask Nm] [dev]
例: route del -net 192.168.1.0/24 gw 192.168.1.1
    route del default

netstat

显示路由相关:

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

显示网络连接数:

netstat [--tcp|-t] [--udp|-u]
    -t:    显示tcp相关连接
    -u:    显示udp相关连接
    -w:    裸套接字 socket相关连接
    -l:    处于监听状态的相关连接
    -a:    所有状态
    -n:    以数字格式显示IP和PORT
    -e:    扩展格式
    -p:    显示相关的进程及PID
常用组合: -lautp -tan -uan -unl -tn

显示接口统计数组

netstat -Ieth0    指定接口
netstat -i        所有接口

ifup/ifdown

开启或关闭端口

ifup eth1
ifdown eth1

ethtools

多网卡情况面可确定网卡位置.

ethtools -p ETH_Name

iproute2家族

ip命令

设备属性相关:

ip link set     设置设备属性
ip link show    查看设备属性
ip link set dev eth1 down:	禁用网卡.
ip link set dev eth1 up:	启用网卡.
	multlcast on | multlcast off:	启用或者禁用多播.
	name:		重命名.
	mtu		设置mtu大小.

 ip地址相关

    ip addr show     查看ip
    ip addr list     查看ip
    添加IP地址:
	ip addr add 192.168.0.1/24 dev eth1
	ip addr add 10.0.0.10/8 dev eth1 label eth1:0 (添加别名)			
    删除IP:
	ip addr del 10.0.0.10/8 eth1
    清空地址:
	ip addr flush dev eth1

路由相关

 1) 查看路由:
	ip route list 
    2) 添加路由 
	ip route add 10.0.0.0/24 dev eth1
	ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 下一跳
	ip route add 192.168.1.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100
		via: 网关下一跳.
		dev: 设备.
		src: 源ip地址. 
     3) 删除路由
	ip rout del 192.168.1.0/24			
    4) 清空路由表
	ip route flush dev eth1

ss

语法: ss [options] [FILTER] 
选项: 
    -t: TCP/IP协议协议链接. 
    -u: UDP协议链接. 
    -w: 裸套接字 socket 相关链接.
    -l: 监听状态的链接. 
    -a: 显示所有状态的链接. 
    -n: 数字格式. 
    -p: 显示相关的程序及其PID. 
    -e: 扩展格式信息. 
    -m: 内存使用量. 
    -o: 计时器信息. 
常用组合: -tnl -tpnl -tn

ss高级用法

FILTER := [ state TCP-STATE ] [ EXPRESSION ]
EXPRESSION:
	dport= 目标端口
	sport= 源端口
示例:
	'( dport = :22 or sport = :22 )'


ss -tnl state ESTABLISHED 
ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP Socekt
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服务器的进程
ss -s 列出当前socket详细信息 

本章练习题

1. 关闭或启动网卡使用两种命令完成


2. ip 命令查看网卡属性。


3. 使用 iprout2 命令给eth0 添加一个网关。在删除并默写清空路由表命令


4. 使用 ss 命令查看当前建立连接的http协议。


5. 使用ss命令查看监听状态的tcp启动的服务并查看器端口号


6. 默写tcp 的11种状态
     closed    
     listen    
     syn_rcvd  
     syn_sent  
     established 
	 
     FIN_WAIT_1 
     FIN_WAIT_2 
     TIME_WAIT 
	 
	 
     CLOSING  
     CLOSE_WAIT 
	
     LAST_ACK    
	
7. TCP三次握手
     
	  
8. 四次挥手
   
	
	
TCP报文格式详解
        https://www.cnblogs.com/feng9exe/p/8058891.html
HTTP报文格式详解
	https://www.cnblogs.com/wolfshining/p/8670219.html
	https://blog.csdn.net/zx_emily/article/details/83024065

答案

1. 关闭或启动网卡
    ifup eth0
	ifdown eth0

2. ip 命令查看网卡属性。
    ip link show

3. 使用 iprout2 命令给eth0 添加一个网关。在删除并默写清空路由表命令
    ip route add 192.168.0.0/24 via 192.168.0.1 dev eth0
    ip route del 192.168.0./24
	ip route flash dev eth0 

4. 使用 ss 命令查看当前建立连接的http协议。
    ss -o state established '( dport = :http or sport = :http )'

5. 使用ss命令查看监听状态的tcp启动的服务并查看器端口号
    ss -tnlp 

6. 默写tcp 的11种状态
     closed    关闭状态
	 listen    监听状态,可接受客户端的连接
	 syn_rcvd  服务端接收到客户端的SYN报文请求。很难监听到
	 syn_sent  与上个状态相呼应,客户端等待服务端的发送三次握手的第二个报文。表示客户端已经发送报文
	 established 建立tcp连接
	 
	 FIN_WAIT_1 表示等待FIN报文,主动关闭连接进入此状态等待ACK报文,此状态很难监听到。
	 FIN_WAIT_2 对方回应ACK报文进入此状态,等待对方关闭完成四次握手过程。
	 
	 TIME_WAIT 主动关闭连接会进入TIME_WAIT状态,可会断会发送最后一个ACK即四次挥手,就会进入TIME_WAIT状态,停留2MSL就会进入CLOSED状态。
	 
	 
	CLOSING   双方同时出现发出了FIN报文就会出现CLOSING状态,表示双方都在关闭SOCKET连接。
	
    CLOSE_WAIT 表示等待关闭,接收到一个FIN报文后回应一个ACK报文给对方,此时进入此状态,检查是否还有没有数据给对方,没有则发送FIN报文给对方,即关闭自己到对方的连接,如果有数据具体看程序。
	
	LAST_ACK    当发送了FIN报文后等待对方的ACK报文就会处于此状态受到了ACK报文后,就会进入CLOSED关闭状态。
	
7. TCP三次握手
      1) 连理连接 客户端发送syn(SYN表示请求建立连接)包(SYN=1)到服务器并进入 SYN_SEND状态等待服务器确认。
	  2) 服务器受到SYN包,必须确认客户端的SYN发送ACK(表示接受去人)包(ACK=1),并发送自己的SYN包(syn=1),此时服务器进入SYN_RECV状态。
	  3) 客户端受到服务器的SYN+ACK包,向服务器发送确认包。ACK(ACK=1),此包发送完毕客户端和服务端进入ESTABLISHED状态完成三次握手。
	  
8. 四次挥手
    1) 客户端发送FIN(希望中断连接)包(FIN=1)此时seq=u,(等于前面已经发送过来的数据最后一个字节的序号加1)此时客户端进入FIN_WAIT_1(终止等待1)状态
	2) 客户端收到FIN包,发出确认报文ACK=1,ACK=u+1 并且带上自己的序列号seq=v ,此时服务器进入 CLOSE_WAIT状态(等待关闭).此时服务器tcp会通知应用程序,客户端向服务器方向的通信释放,但服务器如果向客户端发送数据客户端依然可以接受,此时处于半监听状态,CLOSE_WAIT状态会持续一段时间。
	3) 客户端收到服务器的确认请求之后,此时客户端进入FIN_WAIT_2(等待终止2) 等待服务器发送释放报文,(此时客户端还需接受服务器发送的最后数据)
	4) 服务器将数据发送完毕之后,向客户端发送释放报文,FIN=1 ack=u+1 由于半关闭状态有可能发送了数据此时seq=w ,此时服务器进入 LAST_ACK(最后确认)状态。等待客户端确认。
	5) 客户端收到服务端的释放报文后,必须发送 ACK=1 ,ack=w+1 ,而自己的序列号为seq=u+1 此时客户端进入TIME_WAIT(时间等待)状态。此时TCP连接没有完全释放,经过2MSL最长报文段寿命后,才会进入CLOSED状态。
	6) 服务器收到客户端发出的确认,立即进入CLOSED状态。
	
	
	TCP报文格式详解
	https://www.cnblogs.com/feng9exe/p/8058891.html
	HTTP报文格式详解
	https://www.cnblogs.com/wolfshining/p/8670219.html
	https://blog.csdn.net/zx_emily/article/details/83024065

  

原文地址:https://www.cnblogs.com/yanshicheng/p/12323845.html