那些年,用过的Linux网络工具

简介: Linux作为一款强大的操作系统,凭借其优异的的网络服务功能,被广泛使用到云服务中心、数据中心、嵌入式边缘物联代理等需要可靠的网络服务支持的场景中。具体到生成环境,免不了使用工具去管理和控制网络,本文就来带领大家细数一下,Linux下都有哪些提供网络管理的工具。

Linux作为一款强大的操作系统,凭借其优异的的网络服务功能,被广泛使用到云服务中心、数据中心、嵌入式边缘物联代理等需要可靠的网络服务支持的场景中。具体到生成环境,免不了使用工具去管理和控制网络,本文就来带领大家细数一下,Linux下都有哪些提供网络管理的工具。


ifconfig


相信大家最为熟悉的就是ifconfig,作为网络接口的配置工具,经常用用来查看、配置网口的基本信息。


查看所有网口信息


ifconfig -a
   eth0  Link encap:Ethernet  HWaddr 7E:8E:87:AD:39:EC  
   inet addr:192.168.1.103  Bcast:192.168.1.255  Mask:255.255.255.0
   UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
   RX packets:7388 errors:0 dropped:0 overruns:0 frame:0
   TX packets:1895 errors:0 dropped:0 overruns:0 carrier:0
   collisions:0 txqueuelen:1000 
   RX bytes:2617515 (2.4 MiB)  TX bytes:377852 (368.9 KiB)
   loLink encap:Local Loopback  
   inet addr:127.0.0.1  Mask:255.0.0.0
   UP LOOPBACK RUNNING  MTU:65536  Metric:1
   RX packets:50 errors:0 dropped:0 overruns:0 frame:0
   TX packets:50 errors:0 dropped:0 overruns:0 carrier:0
   collisions:0 txqueuelen:0 
   RX bytes:2401 (2.3 KiB)  TX bytes:2401 (2.3 KiB)    


up/down网口


ifconfig eth0 up/down


配置网口基本信息


ifconfig eth0 192.168.1.101/24 up   


ip


大家对于ip的熟悉程度可能低于ifconfig,但是,如果作为一名专业的Linux网络维护者而言,可以不会使用ifconfig,但是必须会使用ip。因为,ip的功能更为全面和强大,其不仅可以配置普通网口设备,还可以配置路由信息,策略路由、隧道等更为强大的功能。并且有的机器上默认是不安装ifconfig的,但ip肯定是会安装的。所以,为了能够正常的配置和使用网络,ip这个命令还是需要掌握的。


帮助信息


ip -h


Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] -batch filename
where  OBJECT := { link | address | addrlabel | route | rule | neighbor | ntable |
                   tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
           netns | l2tp | fou | tcp_metrics | token | netconf }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
            -h[uman-readable] | -iec |
            -f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } |
            -4 | -6 | -I | -D | -B | -0 |
            -l[oops] { maximum-addr-flush-attempts } | -br[ief] |
            -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
            -rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]}


一条ip命令的基本格式为:ip [ OPTIONS ] OBJECT { COMMAND | help },COMMAND与具体的OBJECT有关,基本的包括:add、delete、list、help。


具体到每个OBJECT,可以通过ip OBJECT help查看更为具体的帮助信息,比如,查看ip addr help


ip addr help
  Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]
                                                        [ CONFFLAG-LIST ]
         ip addr del IFADDR dev STRING
         ip addr {show|flush} [ dev STRING ] [ scope SCOPE-ID ]
                              [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ]
  IFADDR := PREFIX | ADDR peer PREFIX
            [ broadcast ADDR ] [ anycast ADDR ]
            [ label STRING ] [ scope SCOPE-ID ]
  SCOPE-ID := [ host | link | global | NUMBER ]
  FLAG-LIST := [ FLAG-LIST ] FLAG
  FLAG  := [ permanent | dynamic | secondary | primary |
             tentative | deprecated | dadfailed | temporary |
             CONFFLAG-LIST ]
  CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG
  CONFFLAG  := [ home | nodad ]
  LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]
  LFT := forever | SECONDS


地址配置


ip addr help #查看ip addr命令使用帮助信息
ip addr add 192.168.1.100/24 dev eth0 #配置eth的IP
ip addr del 192.168.1.100/24 dev eth0 #删除eth的IP
ip addr show  


链路配置 ip link help #查看ip link使用帮助信息 ip link set eth0 up/down ip link show


路由配置


ip route help
ip route add 192.168.1.0 dev eth0 # 目的网路地址为192.168.1.0的出口设备为eth0
ip route add default via 192.168.1.100 # 默认路由的出口IP为192.168.1.100
ip route show


netstat


netstat用于打印有关网络连接信息、路由信息、网络统计信息等,是调试TCP连接问题,统计网络信息的利器。下面是netstat的基本用法,足够日常调试使用。


基本功能


Display networking information


-r      Routing table        #显示路由信息
 -a      All sockets          #显示所有socket信息
 -l      Listening sockets    #显示处于Listenting状态的socket
         Else: connected sockets
 -t      TCP sockets          #显示TCP socket
 -u      UDP sockets          #显示UDP socket
 -w      Raw sockets          #显示Raw socket
 -x      Unix sockets         #显示Unix socket
         Else: all socket types
 -e      Other/more information 
 -n      Don't resolve names  #显示IP地址信息,而不是hostname
 -W      Wide display
 -p      Show PID/program name for sockets# 显示socket相关的进程ID信息


显示当前系统所有TCP scoket相关信息


netstat -natlp
 Active Internet connections (servers and established)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
 tcp        0      0 0.0.0.0:513             0.0.0.0:*               LISTEN      761/inetd
 tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      761/inetd


显示当前系统所有UDP socket相关信息


netstat -naulp
 Active Internet connections (servers and established)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
 udp        0      0 0.0.0.0:518             0.0.0.0:*                           761/inetd


tcpdump


对于网络程序开发者来说,一定会涉及到网络协议的处理,那有时为了分析网络数据包的就免不了使用抓包工具,进行网络数据包的抓取和分析。tcpdump就是完成该项功能的神器。tcpdump的功能十分的强大,命令参数也是十分的复杂。但是,根据二八原则,大部分的命令参数是不会经常使用的,下面介绍的也是tcpdump使用比较高频的命令参数。


抓取特定网卡的数据包


tcpdump -i eth0


过滤源或者目的ip


tcpdump -i eth0 src 192.168.1.1 and dst 192.168.2.100


过滤指定协议和端口号的数据包


tcpdump -i eth0 -p tcp port 80
 tcpdump -i eth0 -p udp port 9900


显示数据包的详细信息


tcpdump -i eth0 -p tcp port 80 -XX -n
 -XX:分析、打印协议的头部信息,打印数据信息,打印方式为十六进制和ACSII码
 -n:显示IP地址信息


保存抓取大数据包 tcpump -i eth0 -w file


-w:可以将抓取到的数据保存到文件中。


ifplugd


嵌入式Linux环境下, 网络设备的状态经常发生变化,比如,RJ45接口网线通断状态。ifplugd一般用于嵌入式Linux环境,用于实时监测网口事件,其可以指定具体的脚本用来处理具体的事件。


下面是ifplugd的基本命令参数。


-n              Don't daemonize  #以前台运行方式运行,默认为后台方式。
    -s              Don't log to syslog 
    -i IFACE        Interface        #指定监测网口
    -f/-F           Treat link detection error as link down/link up
                    (otherwise exit on error)
    -a              Don't up interface at each link probe
    -M              Monitor creation/destruction of interface
                    (otherwise it must exist)
    -r PROG         Script to run     #指定检测到网络事件时,要执行的脚本
    -x ARG          Extra argument for script
    -I              Don't exit on nonzero exit code from script #脚本执行失败时,ifplugd不会停止运行
    -p              Don't run script on daemon startup
    -q              Don't run script on daemon quit
    -l              Run script on startup even if no cable is detected 
    -t SECS         Poll time in seconds
    -u SECS         Delay before running script after link up #检测到link up,延迟一段时间再执行脚本
    -d SECS         Delay after link down
    -m MODE         API mode (mii, priv, ethtool, wlan, iff, auto)
    -k              Kill running daemon   #杀死后台ifplugd程序


ifplugd的使用命令一般如下:


/usr/bin/ifplugd -u 5 -I -l -i eth0 -r /etc/network/if.sh 


根据具体事件执行脚本


if.sh为一个脚本,其实现了关于网口up、down事件的处理逻辑,其内容一般为:


ETH="$1"
  STATE="$2"
  if [ ${STATE} = "up" ]; then
      /sbin/ifup ${ETH};
  fi
  if [ ${STATE} = "down" ]; then
      /sbin/ifdown ${ETH};
  fi
  ETH为网口名称,比如,eth0,STATE为具体的命令。


ifup和ifdown根据/etc/interface中的配置信息,完成对网口的操作。


# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
  # The loopback interface
  auto lo
  iface lo inet loopback
  # Wired or wireless interfaces
  auto eth0
  iface eth0 inet dhcp


延时执行


-u 5:表示在检测到link up事件5秒之后,再运行if.sh脚本。这个选项在设备连接网络设备时,十分的有用,比如,一个设备通过网线连
接到了一个路由,设备首先上电运行,而后路由器再上电,如果设备在检测到link up之后,立即执行if.sh脚本,那么,很有可能由于路
由器还未完全启动完毕,而导致设备无法获取到IP地址,而通过-u选项延迟一段时间为的是等待路由器完成启动。  


nc


nc又名netcat,它的功能十分的强大,既可以为作为UDP、TCP客户端去连接服务器,可以作为UDP、TCP服务器等待客户端的连接。当你写了一个TCP客户端,想测试一下它的功能,但是,这时候需要一个TCP服务端,你可能会再次实现一个,有了nc,完全没有这个必要,你只要简单运行nc指定端口,一个简单TCP的服务端就搭建好了,酷不酷。


nc作为TCP服务端,端口为8081


nc -l 8081 # -l指定TCP的监听端口


nc作为TCP客户端,去连接服务端


nc SERVER_IP 8081


nc作为UDP服务端,端口为8081


nc -u -l 8081 # -u指定为UDP协议


nc作为UDP客户端,去连接服务端


nc -u SERVER_IP 8081


端口扫描


nc  -zv www.google.com 1-1000 #扫描www.google.com 1-1000端口


文件传输


文件接收方:
 nc -l port > filename        # port指定TCP端口,filename文件名
 文件发送方:
 nc SERVER_IP port < filename # SERVER_IP指定文件接收方IP地址和端口号,filename指定要发送的文件
 这个命令太酷了,运用TCP模式下的nc,简单几个参数就可以实现可靠的文件传输,太棒了。


克隆硬盘或者分区


其与文件传输类似,主要借助了dd这个文件拷贝命令。


文件接收方:
 nc -l port | dd of=/dev/sda #指定接收方的磁盘分区,或者使用of=filename,将数据保存到文件中。
 文件发送方:
 dd if=/dev/sda | nc SERVER_IP port 


好了,以上就是linux下使用比较高频的工具,本文只介绍了各个工具的基本用法,大家如有兴趣可以通过Man手册深入探究,Enjoy it!



相关文章
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
169 8
|
2月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
96 2
|
8天前
|
数据采集 人工智能 自然语言处理
FireCrawl:开源 AI 网络爬虫工具,自动爬取网站及子页面内容,预处理为结构化数据
FireCrawl 是一款开源的 AI 网络爬虫工具,专为处理动态网页内容、自动爬取网站及子页面而设计,支持多种数据提取和输出格式。
66 18
FireCrawl:开源 AI 网络爬虫工具,自动爬取网站及子页面内容,预处理为结构化数据
|
16天前
|
存储 安全 物联网
浅析Kismet:无线网络监测与分析工具
Kismet是一款开源的无线网络监测和入侵检测系统(IDS),支持Wi-Fi、Bluetooth、ZigBee等协议,具备被动监听、实时数据分析、地理定位等功能。广泛应用于安全审计、网络优化和频谱管理。本文介绍其安装配置、基本操作及高级应用技巧,帮助用户掌握这一强大的无线网络安全工具。
45 9
浅析Kismet:无线网络监测与分析工具
|
5天前
|
安全 网络协议 Linux
结合 `nc` 工具利用笑脸漏洞(Smile Bug)攻击 Metasploitable2 Linux
本文介绍如何使用 `nc`(Netcat)工具结合笑脸漏洞(Smiley Bug)攻击 Metasploitable2 Linux 靶机。首先概述了 `nc` 的基本功能和高级用法,包括建立连接、监听端口、文件传输等操作。接着详细描述了笑脸漏洞的原理及其在网络攻防中的应用,展示了通过 `nc` 发送恶意输入检测漏洞的方法。最后结合 Python 脚本实现更复杂的攻击场景,并强调了合法性和环境隔离的重要性。
32 13
|
3天前
|
网络协议 安全 测试技术
Nping工具详解:网络工程师的瑞士军刀
### Nping工具详解:网络工程师的瑞士军刀 Nping是Nmap项目的一部分,支持TCP、UDP、ICMP和ARP等多种协议,用于生成和分析网络数据包。它提供灵活的命令行界面,适用于网络探测、安全测试和故障排除。本文介绍Nping的基础与高级用法,包括发送不同类型的网络请求、自定义TCP标志位、路由跟踪等,并通过实战案例展示其应用。掌握Nping有助于更好地理解和管理网络环境。 (239字符)
32 8
|
9天前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
49 15
|
12天前
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
|
14天前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
109 7
|
2月前
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
82 32