天天看点

Linux~之五

网络管理

网络配置命令:             ifconfig,route,netstat,ss,ip, ifconfig命令:         ifconfig   查看网络信息          ifconfig -a              ifconfig eth0 down    关闭eth0这个网卡          ifconfig eth0 up        开启eth0这个网卡           ifconfig eth0 1.1.1.1/24    临时改变eth0的IP地址             注意:及时生效 route命令:路由管理命令                   route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。 在Linux系统中设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的ip地址设置为Linux机器的默认路由。 要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。        语法      route (选项)(参数) 选项   -A:设置地址类型; -C:打印将Linux核心的路由缓存; -v:详细信息模式; -n:不执行DNS反向查找,直接显示数字形式的IP地址; -e:netstat格式显示路由表; -net:到一个网络的路由表; -host:到一个主机的路由表。   参数 Add:增加指定的路由记录; Del:删除指定的路由记录; Target:目的网络或目的主机; gw:设置默认网关; mss:设置TCP的最大区块长度(MSS),单位MB; window:指定通过路由表的TCP连接的TCP窗口大小; dev:路由记录所表示的网络接口。 实例 1)显示当前路由          route -n    #查看路由信息

Linux~之五
其中Flags为路由标志,标记当前网络节点的状态,Flags标志说明:
  • U Up表示此路由当前为启动状态。
  • H Host,表示此网关为一主机。
  • G Gateway,表示此网关为一路由器。
  • R Reinstate Route,使用动态路由重新初始化的路由。
  • D Dynamically,此路由是动态性地写入。
  • M Modified,此路由是由路由守护程序或导向器动态修改。
  • ! 表示此路由当前为关闭状态。

2)添加/设置网关        route add -net 192.168.0.0/24 gw 172.18.0.1 dev eth0#增加了一个去往192.168.0.0的路由,网关是172.18.0.1 dev eth0是网卡设备 3)设置默认路由网关 route add default gw 172.18.0.1     4)屏蔽一条路由 route add -net 192.168.0.0 netmask 192.168.0.0 reject    #目的地址为192.168.0.X的被拒绝     5)删除路由信息 route del default    #删除默认网关 route del -net 192.168.0.0 netmask 192.168.0.0 reject

netstat命令

netstat命令 netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。 语法 netstat (选项) 选项 -a或--all:显示所有连线中的Socket; -A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址; -c或--continuous:持续列出网络状态; -C或--cache:显示路由器配置的快取信息; -e或--extend:显示网络其他相关信息; -F或--fib:显示FIB; -g或--groups:显示多重广播功能群组组员名单; -h或--help:在线帮助; -i或--interfaces:显示网络界面信息表单; -l或--listening:显示监控中的服务器的Socket; -M或--masquerade:显示伪装的网络连线; -n或--numeric:直接使用ip地址,而不通过域名服务器; -N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称; -o或--timers:显示计时器; -p或--programs:显示正在使用Socket的程序识别码和程序名称; -r或--route:显示Routing Table; -s或--statistice:显示网络工作信息统计表; -t或--tcp:显示TCP传输协议的连线状况; -u或--udp:显示UDP传输协议的连线状况; -v或--verbose:显示指令执行过程; -V或--version:显示版本信息; -w或--raw:显示RAW传输协议的连线状况; -x或--unix:此参数的效果和指定"-A unix"参数相同; --ip或--inet:此参数的效果和指定"-A inet"参数相同。 实例 1)查看所有端口 netstat -a    #列出所有端口 netstat -at    #列出所有tcp端口 netstat -au    #列出所有udp端口 netstat -tuanp      *** netstat -tan       *** netstat -uan       *** 显示所有网卡收发包的信息 netstat -i netstat -I=ens33  #显示指定网卡收发包的信息 等同于 ifconfig -s ens33 2)列出所有处于监听状态的 Sockets 套接字 netstat -l    #只列出监听端口 netstat -lt    #只列出所有监听tcp端口 netstat -lu    #只列出所有监听udp端口 netstat -lx    #只列出所有监听unix端口 3)显示每个协议的统计信息 netstat -s    #显示所有端口的统计信息 netstat -st    #显示TCP端口的统计信息 netstat -su    #显示UDP端口的统计信息 4)在netstat中显示PID和进程名称 netstat -pt netstat -p 可以与其它开关一起使用,就可以添加“PID/进程名称”到netstat输出中,这样debugging的时候可以很方便的发现特定端口运行的程序。 5)显示路由表 netstat -r    #显示内核路由表 netstat -n    #数字格式 netstat -rn   #和route -n 差不多 ss命令 ss命令 用来显示处于活动状态的套接字信息。 ss命令可以用来获取socket统计信息,它可以显示和netstat 类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。         当服务器的socket连接数量变得非常大时, 无论是使用netstat命令还是直接cat /proc/net/tcp ,执行速度都会很慢。         可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。 天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。 当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。 语法 ss (选项) 选项 -t: tcp协议相关 -u: udp协议相关 -w: 裸套接字相关 -x:unix sock相关 -l: listen状态的连接 -a: 所有 -n: 数字格式 -p: 相关的程序及PID -e: 扩展的信息 -m:内存用量 -o:计时器信息 TCP常见状态

tcp finite state machine: LISTEN: 监听. ESTABLISHED:已建立的连接 FIN_WAIT_1 FIN_WAIT_2 SYN_SENT SYN_RECV CLOSED6

常见组合 ss -tan ss -uan ss -tuan ss -tuanp                 

继续阅读