Linux网络控制命令

1. ifconfig

  • 1.1 查看已被激活的网卡的详细信息
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:30:67:F2:10:CF
inet addr:10.0.0.253 Bcast:10.0.255.255 Mask:255.255.0.0
inet6 addr: fe80::230:67ff:fef2:10cf/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4663517 errors:0 dropped:0 overruns:0 frame:0
TX packets:6122850 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1852734274 (1.7 GiB) TX bytes:1487018040 (1.3 GiB)

HWaddr :网卡的硬件地址,即MAC地址
inet addr:IPv4的IP 地址
Bcast:广播地址
mask:子网掩码
inet6 addr:IPv6地址
MTU:最大传输单元
Metric:用于计算路由的成本
RX:表示网络启动到现在的封包接受情况 (Receive)
packets:表示接包数
errors:表示接包发生错误的数量
dropped:表示丢弃的包数量
overruns:表示接收时因过速而丢失的数据包数
frame:表示发生frame错误而丢失的数据包数
TX:从网络启动到现在传送的情况 (Transmit)
collisions:冲突信息包的数目
txqueuelen:发送队列的大小
RX byte、TX byte:总传送/接受的量

注:由RX和TX可以了解网络是否非常繁忙
注:errors:0 dropped:0 overruns:0 frame:0,都为0 说明网络比较稳定
注:collisions发生太多次表示网络状况不太好

  • 1.2 临时IP配置
$ ifconfig eth0 172.16.0.118 netmask 255.255.0.0
$ ifconfig eth0 172.16.0.118/16
#指定子接口
$ ifconfig eth0:1 172.16.0.119/16
  • 1.3 配置临时MAC地址(配置文件中的mac地址不可直接改,要不就不写)
# 指定mac
$ ifconfig eth0 hw ether B8:97:5A:00:4E:3A
  • 1.4 简单的启动和关闭网络接口
ifdown eth0
ifup eth0
  • 1.5 关闭临时的网络接口
ifconfig eth0:1 down
  • 1.6 启用和关闭arp协议
ifconfig eth0  arp
ifconfig eth0  -arp
  • 1.7 设置传输单元mtu的值
ifconfig  eth0  mtu  1000

2. ip

2.1. addr

关于额外IP的相关设定:ip addr 临时增加/删除IP地址

ip addr add 192.168.1.126/24  dev eth0:0
ip addr del  192.168.1.126/24  dev eth0:0
ip addr  show
ip addr  show eth0

2.2. link

关于接口设备的相关设置:ip link

$ ip link set eth0 up        #开启网卡
$ ip link set eth0 down      #关闭网卡
$ ip link set eth0 name lyj  #网卡改名
$ ip link set eth0 mtu 1000  #改mtu值
$ ip link show   #显示所有接口信息
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:d6:81:26 brd ff:ff:ff:ff:ff:ff

$ ip -s link show eth0  #显示接口流量信息
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:d6:81:26 brd ff:ff:ff:ff:ff:ff
RX: bytes  packets  errors  dropped overrun mcast
107193541  1118624  0       0       0       0
TX: bytes  packets  errors  dropped carrier collsns
116799818  1093559  0       0       0       0

$ ip -s -s link show eth0  #多一个-s表示更详细的信息
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:d6:81:26 brd ff:ff:ff:ff:ff:ff
RX: bytes  packets  errors  dropped overrun mcast
107031087  1116940  0       0       0       0
RX errors: length  crc     frame   fifo    missed
0        0       0       0       0
TX: bytes  packets  errors  dropped carrier collsns
116526036  1091941  0       0       0       0
TX errors: aborted fifo    window  heartbeat
0        0       0       0

2.3. route及系统路由表

route

关于路由的相关设置:ip route

#查看路由信息
$ ip route show
    10.0.0.0/16 dev eth0  proto kernel  scope link  src 10.0.10.158
    169.254.0.0/16 dev eth0  scope link  metric 1002
    default via 10.0.0.254 dev eth0
#添加一条路由
$ ip route add 10.10.10.0/24 via 172.16.0.254  dev eth0
#删除一条路由
$ ip route del 10.10.10.0/24
#添加默认路由
$ ip route add default via 172.16.0.254  dev eth0
#删除默认路由
$ ip route del default  via 172.16.0.254   dev eth0

linux系统路由表

  • 系统路由表

linux可以自定义从1-252个路由表,
linux系统维护了4个路由表:

0#表 系统保留表
253#表 defulte table 没特别指定的默认路由都放在改表
254#表 main table 没指明路由表的所有路由放在该表
255#表 local table 保存本地接口地址,广播地址、NAT地址 由系统维护,用户不得更改
  • 路由表查看可有以下二种方法:
ip route list table table_number
ip route list table table_name

路由表序号和表名的对应关系在/etc/iproute2/rt_tables中,可手动编辑

  • 路由添加实例

路由表添加完毕即时生效,下面为实例

ip route add default via 192.168.1.1 table 1 在一号表中添加默认路由为192.168.1.1
ip route add 192.168.0.0/24 via 192.168.1.2 

table 1 在一号表中添加一条到192.168.0.0网段的路由为192.168.1.2
注:各路由表中应当指明默认路由,尽量不回查路由表.路由添加完毕,即可在路由规则中应用..

2.4. monitor_neighbor

显示邻居表

#所在局域网的一台电脑根据它的状态可以被分类成REACHABLE或者STALE
$ ip monitor all 
    [NEIGH]10.104.64.1 dev eth0 lladdr fe:ee:ff:ff:ff:ff STALE
    [NEIGH]10.104.64.1 dev eth0 lladdr fe:ee:ff:ff:ff:ff REACHABLE
    [NEIGH]10.104.64.1 dev eth0 lladdr fe:ee:ff:ff:ff:ff STALE
    [NEIGH]10.104.64.1 dev eth0 lladdr fe:ee:ff:ff:ff:ff REACHABLE
    [NEIGH]10.104.64.1 dev eth0 lladdr fe:ee:ff:ff:ff:ff STALE
    [NEIGH]10.104.64.1 dev eth0 lladdr fe:ee:ff:ff:ff:ff REACHABLE
#查看接入你所在的局域网的设备的MAC地址
$ ip neigh
    10.104.64.1 dev eth0 lladdr fe:ee:ff:ff:ff:ff REACHABLE

2.4. rule

进行路由时,根据路由规则来进行匹配,按优先级(pref)从低到高匹配,直到找到合适的规则.所以在应用中配置默认路由是必要的;格式如下:更强大,使用更灵活,它使网络管理员不仅能

Usage: ip rule [ list | add | del ] SELECTOR ACTION
SELECTOR := [ from PREFIX ] [ to PREFIX ] [ tos TOS ][ dev STRING ] [ pref NUMBER ]
ACTION := [ table TABLE_ID ] [ nat ADDRESS ][ prohibit | reject | unreachable ]
[ flowid CLASSID ]
TABLE_ID := [ local | main | default | new | NUMBER ]

#显示路由规则
$ ip rule show
#路由规则的添加
$ ip rule add from 192.168.1.10/32 table 1 pref 100

$ ip rule add from 192.168.1.112/32 [tos 0x10] table test2 pref 999 prohibit 
$ ip rule add to 192.168.1.2 pref 1000 table test1 
$ ip rule add from 192.168.1.0/24 pref 1001 table test1 
$ ip rule add [from 0/0] table test1 pref 1003 
$ ip rule add fwmark 1 pref 1002 table test2
#此句型配合iptables -t mangle应用.如先对数据包作标记:
$ iptables -t mangle -A PREROUTING -p tcp -m multiport -dports 80,8080,20,21 -s 192.168.1.0/24 -j MARK --set-mark 1    
#创建完路由规则若需立即生效须执行刷新路由缓冲 
$ ip route flush cache;

3. route

  • 3.1 查看路由状态
$ route  -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.104.64.0     0.0.0.0         255.255.192.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         10.104.64.1     0.0.0.0         UG    0      0        0 eth0

Destination:目的地
Genmask:路由的网络掩码
Gateway:该网络通过哪个网关连接出去的(下一跳)
0.0.0.0:表示路由直接由本机传送,即局域网的MAC直接发送的
IP:表示该路由需要路由器(网关)的转发才能发送
Flags:标志
U Up表示此路由当前为启动状态
H Host,表示此网关为一主机
G Gateway,表示此网关为一路由器
R Reinstate Route,使用动态路由重新初始化的路由
D Dynamically,此路由是动态性地写入
M Modified,此路由是由路由守护程序或导向器动态修改
! 表示此路由当前为关闭状态
Iface:这个路由传递数据包的接口

  • 3.2.增删/设置路由
#增加一条路由 -net后面接的路由为一个网络
$ route add -net 172.16.0.0/16 netmask 255.255.0.0  gw 172.16.0.254  dev eth0

#删除一条路由
$ route del -net 172.16.0.0/16 netmask 255.255.0.0 gw 172.16.0.254  dev eth0

$ route add -host 172.16.10.10 gw 192.168.1.1
#-host连接到单部主机的路由

#增加默认路由 gw指定下一跳
$ route add default gw  192.168.1.1

$ route del default gw 192.168.1.1

4. ping

  • ping用于检测主机,执行ping指令会使用ICMP,发出要求回应的信息。若远端主机网络功能没有问题,就会回应该信息,因为确定该主机运作正常;

ping [-aAbBdDfhLnOqrRUvV64] [-c <完成次数>] [-i <间隔秒数>] [-I <网络接口>] [-m mark] [-M pmtudisc_option] [-l preload] [-p <范式文本>] [-Q tos] [-s <数据包大小>] [-S sndbuf] [-t <存活数值>] [-T timestamp_option] [-w deadline] [-W timeout] [hop1 ...] destination

  • 实例
$ ping www.aliyun.com
#检测是否与主机联通

$ ping -c 2 www.baidu.com
#指定接收包的次数

$ ping -s 2000 www.baidu.com
#指定2000字节发送数据

$ ping -I eth2 www.baidu.com
#指定通过某端口或某IP作为源进行发送他测

$ ping -i 0.1 www.baidu.com
#指定0.1s 发送一个包

$ ping -Q 0x1c www.baidu.com
#指定tos包

5. telnet

  • telnet用于远端登录;执行telnet指令开启终端机阶段作业,并登入远端主机;

telnet [-4] [-6] [-8] [-E] [-L] [-S tos] [-a] [-c] [-d] [-e char] [-l user] [-n <记录文件>] [-b <主机别名> ] [-r]
[host-name [port]]

  • 实例
$ telnet www.baidu.com 80
#检测端口是否开启

6. traceroute

  • traceroute命令用于显示数据包到主机间的路径。追踪网络数据包的路由途径。

traceroute [ -46dFITnreAUDV ] [ -f <存活数值> ] [ -g <网关>,... ] [ -i <网络界面> ] [ -m <存活数值> ] [ -N squeries ] [ -p <通信端口> ] [ -t <服务类型> ] [ -l flow_label ] [ -w <超时秒数> ] [ -q nqueries ] [ -s <来源地址> ] [ -z sendwait ] [ --fwmark=num ] 主机名或IP [ 数据包大小 ]

7. tcpdump

  • tcpdump命令用于输出网络传输数据,执行tcpdump指令可列出经过指定网络界面的数据包文件头。

tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c <数据包数目> ] [ -C file_size ] [ -E algo:secret ] [ -F <表达文件> ] [ -G seconds ] [ -i <网络接口> ] [ -j tstamptype ] [ -M secret ] [ --number ] [ -Q|-P in|out|inout ] [ -r <数据包文件> ] [ -s snaplen ] [ --time-stamp-precision precision ] [ --immediate-mode ] [ -T <数据包类型> ] [ --version ] [ -V file ]
[ -w <数据包文件> ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] [ expression ]

  • 实例
# 抓取当前服务器eth0网卡端口8080的网络数据
$ tcpdump -n -i eth0 port 8080

# 抓取所有经过eth0,目的或原地址是192.168.56.103的网络数据
$ tcpdump -n -i eth0 host 192.168.56.103

8. netstat

#安装netstat
$ yum install -y net-tools
#查看路由表
$ netstat -rn
$ route -n
#查看某端口
$ netstat -antulp|grep :80
#查看所有监听端口
$ netstat -antulp|grep LISTEN
#查看所有端口
$ netstat -atunlp

9. nc

  Linux nc命令主要功能如下:1. 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口;2. 端口的扫描,nc可以作为client发起TCP或UDP连接;3. 机器之间传输文件;4. 机器之间网络测速。

-g<网关> 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,nc作为server,侦听并接受连接,而非向其它地址发起连接。
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议,默认为TCP。
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用,扫描时不发送任何交互数据;
  • 常用使用场景
#检测端口是否打开
$ nc -zuv 192.168.0.3 端口
#服务器监听端口
$ nc -l -u 192.168.0.3 端口(可以发送和接受信息)
#客户端检测端口
$ nc -u 192.168.0.3 端口(可以发送和接受信息)
#扫描192.168.0.3端口范围是 1-100
$ nc -v -z -w2 192.168.0.3 1-100
#扫描192.168.0.3 的端口 范围是 1-1000
$ nc -u -z -w2 192.168.0.1 1-1000
#扫描 22端口
$ nc -nvv 192.168.0.1 22
#扫描 80端口
$ nc -nzv 192.168.0.1 80

10. ss

  ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其他工具展示等多tcp和state信息. 它是一个非常实用、快速、有效的跟踪IP连接和sockets的新工具

# ss命令
$ ss -ant         #查看所有监听的tcp端口
$ ss -anu         #查看所有监听的udp端口
$ ss -ano         #查看所有协议端口
$ ss -l           #显示本地打开的所有端口
$ ss -pl          #显示每个进程具体打开的socket
$ 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详细信息:显示sockets简要信息,列出当前已经连接,关闭,等待的tcp连接
$ ss -pl        # ss列出每个进程名及其监听的端口
$ ss -o state established '( dport = :http or sport = :http )'      # ss列出所有http连接中的连接,以上包含对外提供的80,以及访问外部的80,用以上命令完美的替代netstat获取http并发连接数,监控中常用到
$ ss -x src /tmp/.X11-unix/*        # ss列出本地哪个进程连接到x server
$ ss -o state fin-wait-1 '( sport = :http or sport = :https )'      # ss列出处在FIN-WAIT-1状态的http、https连接

发表评论

邮箱地址不会被公开。 必填项已用*标注