Linux常用命令详解(六)_网络

来源:互联网 发布:车牌照识别 c语言 编辑:程序博客网 时间:2024/05/17 03:11

ifconfig命令

ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。

格式:

ifconfig [net_equipment] [para]

参数:

add<地址>:设置网络设备IPv6的ip地址del<地址>:删除网络设备IPv6的IP地址down:关闭指定的网络设备<硬件地址>:设置网络设备的类型与硬件地址io_addr:设置网络设备的I/O地址irq:设置网络设备的IRQmedia<网络媒介类型>:设置网络设备的媒介类型mem_start<内存地址>:设置网络设备在主内存所占用的起始地址metric<数目>:指定在计算数据包的转送次数时,所要加上的数目mtu<字节>:设置网络设备的MTUnetmask<子网掩码>:设置网络设备的子网掩码tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址up:启动指定的网络设备-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能-promisc:关闭或启动指定网络设备的promiscuous模式IP地址:指定网络设备的IP地址网络设备:指定网络设备的名称。

实例应用:

1.显示网络设备信息

[shmilychan@localhost ~]$ ifconfigeth0    Link encap:Ethernet HWaddr 00:0c:29:d2:c3:f5         inet addr:192.168.72.128 Bcast:192.168.72.255 Mask:255.255.255.0         UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1         RX packets:61430830 errors:0 dropped:0 overruns:0 frame:0         TX packets:88534 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000         RX bytes:3607197869 (3.3 GiB) TX bytes:6115042 (5.8 MiB) lo      Link encap:Local Loopback         inet addr:127.0.0.1 Mask:255.0.0.0         UP LOOPBACK RUNNING MTU:16436 Metric:1         RX packets:56103 errors:0 dropped:0 overruns:0 frame:0         TX packets:56103 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0         RX bytes:5079451 (4.8 MiB) TX bytes:5079451 (4.8 MiB)

备注:

eth0表示第一块网卡,其中HWaddr表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是00:0c:29:d2:c3:f5。

inet addr用来表示网卡的IP地址,此网卡的IP地址是192.168.72.128,广播地址Bcast:192.168.72.255,掩码地址Mask:255.255.255.0。

lo是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把httpd服务器的指定到回坏地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。

第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。

第二行:网卡的IP地址、子网、掩码。

第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。

第四、五行:接收、发送数据包情况统计。

第七行:接收、发送数据字节数统计信息。

2.启动关闭指定网卡

$ ifconfig eth0 up$ ifconfig etho down

3.为网卡配置和删除IPV6地址

$ ifconfig eth0 add 33ffe:3240:800:1005::2/64$ ifconfig eth0 del 33ffe:3240:800:1005::2/64

4.用ifconfig修改MAC地址

$ ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

5.配置IP地址

$ ifconfig eth0 ip_adress

备注:

ifconfig eth0 192.168.72.128 netmask 255.255.255.0 给eth0网卡配置IP地址:192.168.72.128 ,并加上子掩码:255.255.255.0ifconfig eth0 192.168.72.128 netmask 255.255.255.0 broadcast 192.168.72.255/给eth0网卡配置IP地址:192.168.72.128,加上子掩码:255.255.255.0,加上个广播地址: 192.168.72.255

6.启动和关闭ARP协议

ifconfig eth0 arp       //启动ifconfig eth0 -arp

7.设置最大传输单元

ifconfig eth0 mtu 1500

ping命令

ping命令用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

ping 命令每秒发送一个数据报并且为每个接收到的响应打印一行输出。ping 命令计算信号往返时间和(信息)包丢失情况的统计信息,并且在完成之后显示一个简要总结。ping 命令在程序超时或当接收到 SIGINT 信号时结束。Host 参数或者是一个有效的主机名或者是因特网地址。

格式:

ping [option] [para]

选项:

-d 使用Socket的SO_DEBUG功能。-f  极限检测。大量且快速地送网络封包给一台机器,看它的回应。-n 只输出数值。-q 不显示任何传送封包的信息,只显示最后的结果。-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。-R 记录路由过程。-v 详细显示指令的执行过程。<p>-c 数目:在发送指定数目的包后停止。-i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。-I 网络界面:使用指定的网络界面送出数据包。-l 前置载入:设置在送出要求信息之前,先行发出的数据包。-p 范本样式:设置填满数据包的范本样式。-s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。-t 存活数值:设置存活数值TTL的大小。

参数:

目的主机:指定发送ICMP报文的目的主机

应用实例:

$ ping www.baidu.com    //ping主机地址$ ping -c [num] www.baidu.com      //指定ping的次数,num次数可以自定义$ ping -c [num] -i [time] ip_adress        //时间间隔和次数限制的ping$ ping -i [time] -s 1024 -t 255 ip_adress      //多参数

telnet命令

telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的。

格式:

telnet [option] [para]

选项:

-8 允许使用8位字符资料,包括输入与输出。-a 尝试自动登入远端系统。-b<主机别名> 使用别名指定远端主机名称。-c 不读取用户专属目录里的.telnetrc文件。-d 启动排错模式。-e<脱离字符> 设置脱离字符。-E 滤除脱离字符。-f 此参数的效果和指定"-F"参数相同。-F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。-k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。-K 不自动登入远端主机。-l<用户名称> 指定要登入远端主机的用户名称。-L 允许输出8位字符资料。-n<记录文件> 指定文件记录相关信息。-r 使用类似rlogin指令的用户界面。-S<服务类型> 设置telnet连线所需的IP TOS信息。-x 假设主机有支持数据加密的功能,就使用它。-X<认证形态> 关闭指定的认证形态。

参数:

  • 远程主机:指定要登录进行管理的远程主机
  • 端口:指定Telnet协议使用的端口号

应用实例:

$ telnet 168.10.10.1 11211

netstat命令

netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

格式:

netstat [option]

选项:

-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

2.列出所有端口(包含监听和未监听)

$ netstat -a       //列出所有端口$ netstat -at  //列出所有TCP端口$ netstat -au  //列出所有UDP端口

3.列出所有处于监听的sockets

$ netstat -l       //只显示监听端口$ netstat -lt  //只列出所有监听 TCP 端口$ netstat -lu  //只列出所有监听 UDP 端口$ netstat -lx  //只列出所有监听 UNIX 端口

4.显示每个协议的统计信息

$ netstat -s   //显示所有端口的统计信息$ netstat -st  //显示 TCP 端口统计信息$ netstat -su  //显示UDP端口的统计信息

5.在netstat输出中显示PID和进程名称

$ netstat -pt

备注:
netstat -p 可以与其他选项一起使用,就可以添加“PID/进程名称”到netstat输出中,这样debugging的时候可以很方便的发现特定端口运行的程序。

6.在netstat输出中不显示主机,端口和用户名(host, port or user)

当你不想让主机,端口和用户名显示,使用netstat -n。将会使用数字代替那些名称。同样可以加速输出,因为不用进行比对查询。

$ netstat -an

如果只是不想让这三个名称中的一个被显示,使用以下命令:

$ netsat -a --numeric-ports $ netsat -a --numeric-hosts $ netsat -a --numeric-users 

7.持续输出netstat信息

$ netstat -c       //每隔一秒输出网络信息 

8.显示系统不支持的地址族(Address Families)

$ netstat --verbose 

在输出的末尾,会有如下的信息:

netstat: no support for `AF IPX' on this system. netstat: no support for `AF AX25' on this system. netstat: no support for `AF X25' on this system. netstat: no support for `AF NETROM' on this system. 

9.显示核心路由信息

$ netstat -r 

使用netstat -rn显示数字格式,不查询主机名称。

10.找出程序运行的端口

并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。

$ netstat -ap | grep ssh 

找出运行在指定端口的进程:

$ netstat -an | grep ':80' 

11.显示网络接口列表

$ netstat -i 

显示详细信息,像是ifconfig使用netstat -ie。

12.IP和TCP分析

查看连接某服务端口最多的的IP地址:

$ netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr 

TCP各种状态列表:

$ netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}' 

查看phpcgi进程数,如果接近预设值,说明不够用,需要增加:

$ netstat -anpo | grep "php-cgi" | wc -l

route命令

Route命令是用于操作基于内核ip路由表,它的主要作用是创建一个静态路由让指定一个主机或者一个网络通过一个网络接口,如eth0。当使用”add”或者”del”参数时,路由表被修改,如果没有参数,则显示路由表当前的内容。

格式:

route [option] [para]

选项:

-A:设置地址类型-C:打印将Linux核心的路由缓存-v:详细信息模式-n:不执行DNS反向查找,直接显示数字形式的IP地址-e:netstat格式显示路由表-net:到一个网络的路由表-host:到一个主机的路由表。

参数:

Add:增加指定的路由记录Del:删除指定的路由记录Target:目的网络或目的主机gw:设置默认网关mss:设置TCP的最大区块长度(MSS),单位MBwindow:指定通过路由表的TCP连接的TCP窗口大小dev:路由记录所表示的网络接口

应用实例:

1.显示当前路由

shmilychan@ubuntu:~$ routeKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Ifacedefault         192.168.72.2    0.0.0.0         UG    100    0        0 ens33link-local      *               255.255.0.0     U     1000   0        0 ens33192.168.72.0    *               255.255.255.0   U     100    0        0 ens33shmilychan@ubuntu:~$ route -nKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface0.0.0.0         192.168.72.2    0.0.0.0         UG    100    0        0 ens33169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens33192.168.72.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33

备注:
Flags标志位说明:

U Up表示此路由当前为启动状态H Host,表示此网关为一主机G Gateway,表示此网关为一路由器R Reinstate Route,使用动态路由重新初始化的路由D Dynamically,此路由是动态性地写入M Modified,此路由是由路由守护程序或导向器动态修改! 表示此路由当前为关闭状态

2.添加网关/设置网关

$ route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0  //增加一条到240.0.0.0的路由

3.屏蔽一条路由

$ route add -net 224.0.0.0 netmask 240.0.0.0 reject        //增加一条屏蔽的路由,目的地址为224.x.x.x将被拒绝

4.删除路由记录

$ route del -net 224.0.0.0 netmask 240.0.0.0$ route del -net 224.0.0.0 netmask 240.0.0.0 reject

5.删除和添加默认网关

$ route del default gw 192.168.72.128$ route add default gw 192.168.72.168

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 [option]

选项:

-h, --help  帮助信息-V, --version   程序版本信息-n, --numeric   不解析服务名称-r, --resolve        解析主机名-a, --all   显示所有套接字(sockets)-l, --listening 显示监听状态的套接字(sockets)-o, --options        显示计时器信息-e, --extended       显示详细的套接字(sockets)信息-m, --memory         显示套接字(socket)的内存使用情况-p, --processes 显示使用套接字(socket)的进程-i, --info  显示 TCP内部信息-s, --summary   显示套接字(socket)使用概况-4, --ipv4           仅显示IPv4的套接字(sockets)-6, --ipv6           仅显示IPv6的套接字(sockets)-0, --packet            显示 PACKET 套接字(socket)-t, --tcp   仅显示 TCP套接字(sockets)-u, --udp   仅显示 UCP套接字(sockets)-d, --dccp  仅显示 DCCP套接字(sockets)-w, --raw   仅显示 RAW套接字(sockets)-x, --unix  仅显示 Unix套接字(sockets)-f, --family=FAMILY  显示 FAMILY类型的套接字(sockets),FAMILY可选,支持  unix, inet, inet6, link, netlink-A, --query=QUERY, --socket=QUERY      QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]-D, --diag=FILE     将原始TCP套接字(sockets)信息转储到文件-F, --filter=FILE   从文件中都去过滤器信息        FILTER := [ state TCP-STATE ] [ EXPRESSION ]

应用实例:

1.显示TCP连接

$ ss -t -a

2.显示sockets摘要

$ ss -s

3.列出所有打开的网络连接端口

$ ss -l

4.查看进程使用socket

$ ss -pl

5.找出打开套接字/端口应用程序

$ ss -pl | grep 3306

6.显示所有 UDP sockets

$ ss -u -a

7.ss 和 netstat 效率对比

$ time netstat -at$ time ss
0 0