zoukankan      html  css  js  c++  java
  • 一起来学linux:网络命令

    首先介绍最基本也是经常用到的命令ifconfig,对应windows中的ipconfig。执行ifconfig会将所有的端口信息都显示出来,包括IP地址,MTU 接收和发送的报文还有HWaddr也就是MAC地址
    root@zhf-linux:/home/zhf# ifconfig
    eth0      Link encap:Ethernet  HWaddr 00:23:5a:b6:de:9f  
              UP BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:820 errors:0 dropped:0 overruns:0 frame:0
              TX packets:820 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1
              RX bytes:66752 (66.7 KB)  TX bytes:66752 (66.7 KB)

    wlan0     Link encap:Ethernet  HWaddr 00:26:82:07:ef:3c  
              inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0
              inet6 addr: fe80::226:82ff:fe07:ef3c/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:10115 errors:0 dropped:0 overruns:0 frame:0
              TX packets:5520 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:6316755 (6.3 MB)  TX bytes:686532 (686.5 KB)
    如果只是想列出某个端口的网络地址可以使用ifconfig wlan0的方法
    root@zhf-linux:/home/zhf# ifconfig wlan0
    wlan0     Link encap:Ethernet  HWaddr 00:26:82:07:ef:3c  
              inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0
              inet6 addr: fe80::226:82ff:fe07:ef3c/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:10902 errors:0 dropped:0 overruns:0 frame:0
              TX packets:6101 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:6499772 (6.4 MB)  TX bytes:773060 (773.0 KB)

    我们还可以通过ifconfig来修改这些网络的相关信息。
    修改MTU信息:
    root@zhf-linux:/home/zhf# ifconfig wlan0 mtu 1400

    wlan0     Link encap:Ethernet  HWaddr 00:26:82:07:ef:3c  
              inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0
              inet6 addr: fe80::226:82ff:fe07:ef3c/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1400  Metric:1
              RX packets:11902 errors:0 dropped:0 overruns:0 frame:0
              TX packets:6912 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:7099710 (7.0 MB)  TX bytes:864672 (864.6 KB)

    修改端口的IP地址
    root@zhf-linux:/home/zhf# ifconfig eth0 192.168.0.15

    如果时候ifconfig错误的修改了网络佩之,可以通过/etc/init.d/networking restart的方式来重新启动某个网口,之前手动的设置数据会全部失效。

    如果我使用的是无线网卡,查看具体的无线网络信息通过iwconfig命令
    root@zhf-linux:/home/zhf# iwconfig
    wlan0     IEEE 802.11bg  ESSID:"zhf_dxx"  
              Mode:Managed  Frequency:2.462 GHz  Access Point: A4:56:02:4D:65:1F   
              Bit Rate=18 Mb/s   Tx-Power=20 dBm   
              Retry short limit:7   RTS thr:off   Fragment thr:off
              Encryption key:off
              Power Management:off
              Link Quality=70/70  Signal level=-3 dBm  
              Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
              Tx excessive retries:330  Invalid misc:735   Missed beacon:0



    路由信息:
    上网除了配置IP地址等信息外,路由也是一个关键的因素。路由顾名思义就是如何转发数据包的依据。
    route命令可以查看当前服务器的信息。
    Destinaton和Genmask分别是网络地址与网络掩码。第一条路由信息中Destination是default, Genmask是0.0.0.0. 可以认为是全网路由,也就是可以达到任务的网络地址。
    Gateway就是网关,从当前服务器出去的数据都是通过网关地址设备来进行转发。这里网关地址为192.168.0.1也就是无线路由器的地址。
    Flags: 路由的标识。  U表示路由是启动的。H目标是一台主机而非网络 。G:需要通过外部的主机来传递数据包。R:动态路由。 D:动态路由。M:路由被修改了
    Iface:路由传递数据报的接口

    root@zhf-linux:/home/zhf# route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         192.168.0.1     0.0.0.0         UG    600    0        0 wlan0
    link-local      *               255.255.0.0     U     1000   0        0 wlan0
    192.168.0.0     *               255.255.255.0   U     600    0        0 wlan0

    我们还可以手动添加和删除路由:
    添加的时候需要设置-net 目标网络地址,netmask 网络掩码  gw:网关
    root@zhf-linux:/home/zhf# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1
    root@zhf-linux:/home/zhf# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1
    root@zhf-linux:/home/zhf# route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         192.168.0.1     0.0.0.0         UG    600    0        0 wlan0
    link-local      *               255.255.0.0     U     1000   0        0 wlan0
    192.168.0.0     *               255.255.255.0   U     600    0        0 wlan0
    192.168.1.0     192.168.0.1     255.255.255.0   UG    0      0        0 wlan0
    删除的时候可以不带网关地址。
    root@zhf-linux:/home/zhf# route del -net 192.168.1.0 netmask 255.255.255.0
    root@zhf-linux:/home/zhf# route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         192.168.0.1     0.0.0.0         UG    600    0        0 wlan0
    link-local      *               255.255.0.0     U     1000   0        0 wlan0
    192.168.0.0     *               255.255.255.0   U     600    0        0 wlan0


    下面介绍一个综合前面route 和ifconfig的命令:ip. 主要有几个参数;
    -s:显示出设备的统计数据,如接收数据包的总数等
    link: 与设备相关的设置,包括MTU,Mac地址等
    addr/address:关于额外的IP协议
    route: 与路由有关的相关设置
    比如ip link show显示所有端口的硬件信息
    root@zhf-linux:/home/zhf# ip link show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
        link/ether 00:23:5a:b6:de:9f brd ff:ff:ff:ff:ff:ff
    3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
        link/ether 00:26:82:07:ef:3c brd ff:ff:ff:ff:ff:ff

    还可以通过ip link set eth0 up/ip link set eth0 down来启动和关闭端口

    还可以修改端口的名称,但首先要关闭这个端口。否则无法修改
    root@zhf-linux:/home/zhf# ip link set eth0 name zhf
    RTNETLINK answers: Device or resource busy
    root@zhf-linux:/home/zhf# ip link set eth0 down
    root@zhf-linux:/home/zhf# ip link set eth0 name zhf

    root@zhf-linux:/home/zhf# ip link show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: zhf: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
        link/ether 00:23:5a:b6:de:9f brd ff:ff:ff:ff:ff:ff
    3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
        link/ether 00:26:82:07:ef:3c brd ff:ff:ff:ff:ff:ff

    ip route添加路由
    root@zhf-linux:/home/zhf# ip route add 192.168.5.0/24 dev eth0
    root@zhf-linux:/home/zhf# route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         192.168.0.1     0.0.0.0         UG    600    0        0 wlan0
    link-local      *               255.255.0.0     U     1000   0        0 wlan0
    192.168.0.0     *               255.255.255.0   U     600    0        0 wlan0
    192.168.5.0     *               255.255.255.0   U     0      0        0 eth0


    接着介绍几个网络定位的命令。 首先来看用到最多的命令ping
    ping的参数如下;
    -c 后面接ping的次数
    -s ping报文的大小
    -t TTL的数值
    -W:等待响应对方主机的秒数
    -M:主要检测网络的MTU数值大小
    比如ping 5次新浪网。从第一行可以看到ping包的字节默认为56个字节,加上28个字节的头信息
    root@zhf-linux:/home/zhf# ping -c 5 www.sina.com.cn
    PING www.sina.com.cn (218.30.66.248) 56(84) bytes of data.
    64 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=1 ttl=54 time=19.8 ms
    64 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=2 ttl=54 time=19.2 ms
    64 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=3 ttl=54 time=22.0 ms
    64 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=4 ttl=54 time=33.3 ms
    64 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=5 ttl=54 time=21.8 ms

    --- www.sina.com.cn ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 4005ms
    rtt min/avg/max/mdev = 19.202/23.265/33.306/5.144 ms

    改变ping包字节大小为120字节。加上头信息为148字节
    root@zhf-linux:/home/zhf# ping -c 5 -s 120 www.sina.com.cn
    PING www.sina.com.cn (218.30.66.248) 120(148) bytes of data.
    128 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=1 ttl=54 time=19.5 ms
    128 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=2 ttl=54 time=22.7 ms
    128 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=3 ttl=54 time=18.8 ms
    128 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=4 ttl=54 time=45.0 ms
    128 bytes from www.sina.com.cn (218.30.66.248): icmp_seq=5 ttl=54 time=18.0 ms
    --- www.sina.com.cn ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 4006ms
    rtt min/avg/max/mdev = 18.062/24.846/45.060/10.230 ms

    我们可以根据ping 命令来写一个探测网络内存在的主机:
    for siteip in $(seq 1 254)
        do
           site="192.168.1.${siteip}"
           ping -c 2 ${site} &>/dev/null
           if [ "$?" == 0 ];then
               echo "$site is up"
           else
               echo "$site is down"
           fi
        done

    root@zhf-linux:/home/zhf/zhf/shell_prj# sh ping_test.sh
    192.168.1.1 is up
    192.168.1.2 is up
    192.168.1.3 is down
    192.168.1.4 is down
    192.168.1.5 is down
    192.168.1.6 is down
    192.168.1.7 is down

    ping命令虽然能检测链路是否通,但是网络传输中会经过很多个网络节点。如果不通的话数据包是在哪个网络节点遇到故障了呢,这个时候就需要用到traceroute命令。
    主要参数如下;
    -n: 不必进行主机的名称解析,单纯用IP
    -U:使用UDP的port 33434进行检测。这是Linux默认的协议。windows是采用ICMP
    -I:使用ICMP的方式进行检测
    -T:使用TCP进行检测
    -w: 设置等待对方响应的时间
    -p:端口号
    可以看到traceroute会显示经过的每个节点的IP以及所消耗的时延。这样就十分便于我们定位问题到底出在哪
    root@zhf-linux:/home/zhf/zhf/shell_prj# traceroute -n www.sina.com.cn
    traceroute to www.sina.com.cn (218.30.66.248), 30 hops max, 60 byte packets
     1  192.168.1.1  4.485 ms  4.505 ms  4.578 ms
     2  100.64.0.1  8.041 ms  8.262 ms  10.867 ms
     3  100.64.0.1  11.015 ms  11.144 ms  11.284 ms
     4  220.167.87.17  19.405 ms  19.595 ms  19.651 ms
     5  171.208.203.69  22.509 ms 171.208.203.57  22.172 ms  22.257 ms
     6  202.97.48.125  35.747 ms 202.97.48.117  36.414 ms 202.97.48.125  30.744 ms
     7  218.30.19.94  37.071 ms 218.30.69.2  25.474 ms 218.30.19.94  38.695 ms^C
    root@zhf-linux:/home/zhf/zhf/shell_prj# traceroute www.sina.com.cn
    traceroute to www.sina.com.cn (218.30.66.248), 30 hops max, 60 byte packets
     1  192.168.1.1 (192.168.1.1)  7.411 ms  7.513 ms  7.563 ms
     2  100.64.0.1 (100.64.0.1)  8.165 ms  8.451 ms  8.686 ms
     3  100.64.0.1 (100.64.0.1)  9.012 ms  9.000 ms  9.268 ms
     4  220.167.87.17 (220.167.87.17)  48.949 ms  49.123 ms  49.170 ms
     5  171.208.203.69 (171.208.203.69)  10.046 ms 171.208.203.57 (171.208.203.57)  9.840 ms 171.208.198.25 (171.208.198.25)  13.523 ms
     6  202.97.48.125 (202.97.48.125)  34.782 ms  26.170 ms 202.97.48.117 (202.97.48.117)  31.479 ms
     7  218.30.69.2 (218.30.69.2)  22.882 ms 218.30.19.94 (218.30.19.94)  31.512 ms 218.30.69.2 (218.30.69.2)  23.094 ms

    即使有了traceroute命令,我们也只是知道问题是出在哪。但是问题的根因是什么我们还是不知道。很多时候需要抓包进行问题分析。这时候就要用到tcpdump命令。tcpdump不但可以分析数据包的流向,而且连数据包的内容也可以进行监听
    关键参数如下:
    -A: 数据包的内容以ASCII显示
    -e:使用数据链路层MAC数据包数据来显示
    -nn:直接以IP及port number显示
    -q:仅列出简短的数据信息
    -X:列出十六进制以及ASCII的数据包内容
    -i: 要监听的网络接口 例如eth0,lo,wlan等
    -w: 如果你要将监听所得的数据包数据存储下来,后面接文件名
    -r:从后面的文件将数据包数据读出来

    抓取wlan0端口的数据并存储到test1.txt文件中。
    tcpdump -i wlan0 -nn -X > test1.txt
    21:48:06.869312 IP 180.149.136.194.80 > 192.168.0.11.50592: Flags [S.], seq 3280367214, ack 1401941542, win 14600, options [mss 1440,nop,nop,sackOK,nop,wscale 7], length 0
        0x0000:  4500 0034 475e 0000 3706 3e5b b495 88c2  E..4G^..7.>[....
        0x0010:  c0a8 000b 0050 c5a0 c386 6e6e 538f ee26  .....P....nnS..&
        0x0020:  8012 3908 fe65 0000 0204 05a0 0101 0402  ..9..e..........
        0x0030:  0103 0307                                ....
    21:48:06.869360 IP 192.168.0.11.50592 > 180.149.136.194.80: Flags [.], ack 1, win 229, length 0
        0x0000:  4500 0028 ae0b 4000 4006 8eb9 c0a8 000b  E..(..@.@.......
        0x0010:  b495 88c2 c5a0 0050 538f ee26 c386 6e6f  .......PS..&..no
        0x0020:  5010 00e5 7747 0000                      P...wG..
    21:48:06.870044 IP 192.168.0.11.50592 > 180.149.136.194.80: Flags [.], seq 1:1441, ack 1, win 229, length 1440: HTTP: GET /mfp/view?type=3&t=MjAxNy0xMC0xOCAyMTo0ODowNAkxMTguMTEzLjQzLjIzNgkyMjIuMjEwLjE2NC4yMTBfMTQ0ODQ2MDA0Ni4yNDE1ODMJaHR0cDovL3d3dy5zaW5hLmNvbS5jbi8JUERQUzAwMDAwMDAwNTQ5NAk2NTdkZDFiOC0xYjVhLTQ2N2YtOTNiOC02MWM0MzcxODIwYzQJREI0QTk5OEZDOEE4CURCNEE5OThGQzhBOAlhdXRvX2xldmVsOjE4MDEwMHx1c2VyX2dyb3VwOjkwOSw5MTN8dXNlcl90YWc6MjA5NTZ8cG9zOlBEUFMwMDAwMDAwMDU0OTR8d2FwX29zOjcwMHx1c2VyX2FnZTo2MDIsNjAxLDYwM3x2X3pvbmU6MzI2MDAwLDMyNjAwMXx1c2VyX2dlbmRlcjo1MDF8X3Zfem9uZTozMjYwMDAsMzI2MDAxfGF1dG9fcHJpY2U6MTgwMjAwfG1vYmlsZV9icmFuZDoxMjA5fG1vYmlsZV9icm93c2VyOjgwN3x2ZXJzaW9uOmdsX2JwMV8xLHBjOjEuMAkJMzI2MDAwfDMyNjAwMQlEQjRBOTk4RkM4QTgJTkIxNzA0MDI0MQkJREI0QTk5OEZDOEE4CUFFCS0JMQktCS0JLQktCS0JLQktCS0JLQkxCS0JMAkwCWNoYW5uZWwyOmJsb2dfc3xvczp1YnVudHV8YnJvd3NlcjpmaXJlZm94fHBsYXRmb3JtOm90aGVyfGRldmljZTpvdGhlcnxhZFBsYXRGb3JtOjA%3D&userid=222.210.164.210_1448460046.241583&viewlog=false&hashCode=3400c1d3fbc463e290cf234cd786ceed&_sinaads_sio_log_ivciiq HTTP/1.1

    由于数据较多,可以将数据内容都存在文件中,后面来查看。cap文件可以用wireshark软件打开。
    root@zhf-linux:/home/zhf/zhf# tcpdump -i wlan0 -w tcpdump_test.cap

    想监听某一个端口,比如监控网页的数据。可以指定端口
    root@zhf-linux:/home/zhf/zhf# tcpdump -i wlan0 -nn port 8080

  • 相关阅读:
    ASP.NET26 个常用性能优化方法
    git 合并 二进制文件
    git 状态管理
    git 分支管理,提交到远程服务器上面
    git 发布android 系统版本 修改版本型号 查看指定文件的修改记录
    使用git 发布android系统版本 1
    提取文本当中的汉字
    wpf 命名空间中不存在
    c# 调用c DLL 所传参数不正确
    用于主题检测的临时日志(233d1263-3c3c-43d0-a2fd-318ee6fd58db
  • 原文地址:https://www.cnblogs.com/zhanghongfeng/p/7689300.html
Copyright © 2011-2022 走看看