0

    检查 Linux 系统上的网络连接

    2023.07.08 | admin | 132次围观

    Linux 系统提供了许多有用的命令来检查网络配置和连接。下面来看几个,包括 ifquery、ifup、ifdown 和 ifconfig。

    -- Sandra Henry-stocker

    本文导航

    ◈ifquery 命令05%

    ◈ifup 和 ifdown 命令14%

    ◈ifconfig 命令19%

    ◈netstat 命令36%

    ◈netstat -a 命令52%

    ◈host 命令64%

    ◈nslookup 命令68%

    ◈dig 命令72%

    ◈nmap 命令82%

    编译自|

    作者|Sandra Henry-stocker

    译者|geekpi

    Linux 系统提供了许多有用的命令来检查网络配置和连接。下面来看几个打开本地连接的命令,包括ifquery、ifup、ifdown和ifconfig。

    Linux 上有许多可用于查看网络设置和连接的命令。在今天的文章中,我们将会通过一些非常方便的命令来看看它们是如何工作的。

    ifquery 命令

    一个非常有用的命令是ifquery。这个命令应该会显示一个网络接口列表。但是,你可能只会看到类似这样的内容 - 仅显示回环接口:

    1. $ ifquery --list

    2. lo

    如果是这种情况,那说明你的/etc/network/interfaces不包括除了回环接口之外的网络接口信息。在下面的例子中,假设你使用 DHCP 来分配地址,且如果你希望它更有用的话,你可以添加例子最后的两行。

    1. # interfaces(5) file used by ifup(8) and ifdown(8)

    2. auto lo

    3. iface lo inet loopback

    4. auto eth0

    5. iface eth0 inet dhcp

    ifup 和 ifdown 命令

    可以使用相关的ifup和ifdown命令来打开网络连接并根据需要将其关闭,只要该文件具有所需的描述性数据即可。请记住,“if” 在这里意思是接口interface,这与ifconfig命令中的一样,而不是如果我只有一个大脑if I only had a brain中的 “if”。

    ifconfig 命令

    另外,ifconfig命令完全不读取/etc/network/interfaces,但是仍然提供了网络接口相当多的有用信息 —— 配置数据以及可以告诉你每个接口有多忙的数据包计数。ifconfig命令也可用于关闭和重新启动网络接口(例如:ifconfig eth0 down)。

    1. $ ifconfig eth0

    2. eth0      Link encap:Ethernet  HWaddr 00:1e:4f:c8:43:fc

    3.          inet addr:192.168.0.6  Bcast:192.168.0.255  Mask:255.255.255.0

    4.          inet6 addr: fe80::b44b:bdb6:2527:6ae9/64 Scope:Link

    5.          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

    6.          RX packets:60474 errors:0 dropped:0 overruns:0 frame:0

    7.          TX packets:33463 errors:0 dropped:0 overruns:0 carrier:0

    8.          collisions:0 txqueuelen:1000

    9.          RX bytes:43922053 (43.9 MB)  TX bytes:4000460 (4.0 MB)

    10.          Interrupt:21 Memory:fe9e0000-fea00000

    输出中的 RX 和 TX 数据包计数很低。此外,没有报告错误或数据包冲突。或许可以用uptime命令确认此系统最近才重新启动。

    上面显示的广播 (Bcast) 和网络掩码 (Mask) 地址表明系统运行在 C 类等效网络(默认)上打开本地连接的命令,所以本地地址范围从192.168.0.1到192.168.0.254。

    netstat 命令

    netstat命令提供有关路由和网络连接的信息。netstat -rn命令显示系统的路由表。192.168.0.1 是本地网关 (Flags=UG)。

    1. $ netstat -rn

    2. Kernel IP routing table

    3. Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

    4. 0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 eth0

    5. 169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0

    6. 192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

    上面输出中的169.254.0.0条目仅在你正在使用或计划使用本地链路通信时才有必要。如果不是这样的话,你可以在/etc/network/if-up.d/avahi-autoipd中注释掉相关的行:

    1. $ tail -12 /etc/network/if-up.d/avahi-autoipd

    2. #if [ -x /bin/ip ]; then

    3. #       # route already present?

    4. #       ip route show | grep -q '^169.254.0.0/16[[:space:]]' && exit 0

    5. #

    6. #       /bin/ip route add 169.254.0.0/16 dev $IFACE metric 1000 scope link

    7. #elif [ -x /sbin/route ]; then

    8. #       # route already present?

    9. #       /sbin/route -n | egrep -q "^169.254.0.0[[:space:]]" && exit 0

    10. #

    11. #       /sbin/route add -net 169.254.0.0 netmask 255.255.0.0 dev $IFACE metric 1000

    12. #fi

    netstat -a 命令

    netstat -a命令将显示“所有”网络连接。为了将其限制为显示正在监听和已建立的连接(通常更有用),请改用netstat -at命令。

    1. $ netstat -at

    2. Active Internet connections (servers and established)

    3. Proto Recv-Q Send-Q Local Address           Foreign Address         State

    4. tcp        0      0 *:ssh                   *:*                     LISTEN

    5. tcp        0      0 localhost:ipp           *:*                     LISTEN

    6. tcp        0      0 localhost:smtp          *:*                     LISTEN

    7. tcp        0    256 192.168.0.6:ssh         192.168.0.32:53550      ESTABLISHED

    8. tcp6       0      0 [::]:http               [::]:*                  LISTEN

    9. tcp6       0      0 [::]:ssh                [::]:*                  LISTEN

    10. tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN

    11. tcp6       0      0 ip6-localhost:smtp      [::]:*                  LISTEN

    host 命令

    host命令就像nslookup一样,用来查询远程系统的 IP 地址,但是还提供系统的邮箱处理地址。

    1. $ host world.std.com

    2. world.std.com has address 192.74.137.5

    3. world.std.com mail is handled by 10 smtp.theworld.com.

    nslookup 命令

    nslookup还提供系统中(本例中是本地系统)提供 DNS 查询服务的信息。

    1. $ nslookup world.std.com

    2. Server:         127.0.1.1

    3. Address:        127.0.1.1#53

    4. Non-authoritative answer:

    5. Name:   world.std.com

    6. Address: 192.74.137.5

    dig 命令

    dig命令提供了很多有关连接到远程系统的信息 - 包括与我们通信的名称服务器以及查询需要多长时间进行响应,并经常用于故障排除。

    1. $ dig world.std.com

    2. ; <<>> DiG 9.10.3-P4-Ubuntu <<>> world.std.com

    3. ;; global options: +cmd

    4. ;; Got answer:

    5. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28679

    6. ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

    7. ;; OPT PSEUDOSECTION:

    8. ; EDNS: version: 0, flags:; udp: 512

    9. ;; QUESTION SECTION:

    10. ;world.std.com.                 IN      A

    11. ;; ANSWER SECTION:

    12. world.std.com.          78146   IN      A       192.74.137.5

    13. ;; Query time: 37 msec

    14. ;; SERVER: 127.0.1.1#53(127.0.1.1)

    15. ;; WHEN: Mon Oct 09 13:26:46 EDT 2017

    16. ;; MSG SIZE  rcvd: 58

    nmap 命令

    nmap经常用于探查远程系统,但是同样也用于报告本地系统提供的服务。在下面的输出中,我们可以看到登录可以使用 ssh、smtp 用于电子邮箱、web 站点也是启用的,并且 ipp 打印服务正在运行。

    1. $ nmap localhost

    2. Starting Nmap 7.01 ( https://nmap.org ) at 2017-10-09 15:01 EDT

    3. Nmap scan report for localhost (127.0.0.1)

    4. Host is up (0.00016s latency).

    5. Not shown: 996 closed ports

    6. PORT    STATE SERVICE

    7. 22/tcp  open  ssh

    8. 25/tcp  open  smtp

    9. 80/tcp  open  http

    10. 631/tcp open  ipp

    11. Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

    Linux 系统提供了很多有用的命令用于查看网络配置和连接。如果你都探索完了,请记住apropos network或许会让你了解更多。

    via:

    作者:Sandra Henry-Stocker[2]译者:geekpi校对:wxy

    本文由LCTT原创编译,Linux中国荣誉推出

    LCTT 译者

    geekpi

    共计翻译:595篇

    贡献时间:1500 天

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论