暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux常用命令之网络管理

136

本篇继续分享Linux中常用命令。主要分享Linux系统的网络管理相关的命令。


ifconfig命令——配置或显示网络接口信息


ifconfig命令用于配置网卡IP地址等网络参数或显示当前网络的接口状态,需要以root用户的身份来执行。

如果命令不存在则安装

    yum install -y net-tools

    使用ifconfig命令配置网卡信息仅会临时生效,重启网络或服务器就会失效。

    选项:

    up
    激活指定的网络接口
    down 
    关闭指定的网络接口
    hw
    设置网卡的MAC地址

    操作:

      # 查看所有已启动的网卡信息
      ifconfig


      # 查看eth0网卡信息
      ifconfig eth0


      # 查看所有网卡信息(包括未开启的)
      ifconfig -a


      # 启动eth1网卡
      ifconfig eth1 up


      # 关闭eth1网卡
      ifconfig eth1 down


      # 为网卡配置信息
      ifconfig eth0 172.16.1.30




      # 为网卡配置多个IP
      ifconfig eth0:0 172.16.1.28 netmask 255.255.255.0  up


      ifconfig


      eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
      inet 172.16.1.27 netmask 255.255.255.0 broadcast 172.16.1.255
      inet6 fe80::ffaa:cae4:9cc0:3250 prefixlen 64 scopeid 0x20<link>
      inet6 fe80::eb49:7220:1bb9:df4f prefixlen 64 scopeid 0x20<link>
      inet6 fe80::21b6:b00:310a:19d3 prefixlen 64 scopeid 0x20<link>
      ether 28:6e:d4:89:b3:85 txqueuelen 1000 (Ethernet)
      RX packets 5035132 bytes 609739285 (581.4 MiB)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 2070630 bytes 384120838 (366.3 MiB)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


      eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
      inet 172.16.1.28 netmask 255.255.255.0 broadcast 172.16.1.255
      ether 28:6e:d4:89:b3:85 txqueuelen 1000 (Ethernet)


      网卡的配置文件在/etc/sysconfig/network-scriprts/目录下。eth0对应的是ifcfg-eth0文件。


      ifup命令——激活网络接口


      ifup命令可读取配置文件/etc/sysconfig/network和/etc/sysconfig/network-scripts/ifcfg-<configuration>对网络接口进行相应的操作。

      操作:

        # 激活eth0网络接口,等同于ifconfig eth0 up
        ifup eth0   


        # 查看eth0网络接口状态
        ifconfig eth0


        ifdown命令——用于禁用指定的网络接口



        操作:

          # 关闭eth0网卡接口,该操作导致断开SSH连接,谨慎操作
          ifdown eth0


          # 重启网卡
          ifdown eth0 && ifup eth0


          route命令——管理路由表


          route命令可以为服务器设置静态路由。

          选项:

          -n
          查看路由信息
          -ee
          显示更详细的路由信息
          add
          添加路由信息
          del
          删除路由信息
          -net
          到一个网络的路由,后面接网络号地址
          -host
          到一个主机的路由,后面接一个主机地址
          netmask
          添加子网掩码
          gw
          指定网关
          dev If
          指定由哪个网卡出去,如eth0

          操作:

            # 查看系统路由信息
            route -n 


            # 删除路由信息
            route del default   //删除默认网关
            route del default gw 172.16.1.254 
            route del default  gw 172.16.1.254 dev eth0


            # 添加路由信息
            route add default gw 172.16.1.254
            route add default gw 172.16.1.254 dev eth0


            # 配置去往某一网络或网段的路由


            172网段主机访问192网段的主机。
            route add -net 192.168.4.0/24 gw 172.16.1.254
            route add -net 192.168.4.0/24 netmask 255.255.255.0 dev eth1


            删除路由
            route del -net 192.168.4.0/24 dev eth1


            # 配置去往某个主机的路由
            route add -host 172.16.2.250 dev eth0


            删除路由:
            route del -host 172.16.2.250 dev eth0

            以上配置在重启网络时都会失效需要写到配置中。

            需要写到/etc/sysconfig/network-scripts/route-eth*或/etc/rc.local文件中,重启会重新加载。

              192.168.4.0/24 via 172.16.1.254


              arp命令——管理系统的arp缓存


              arp是地址解析协议,主要是根据IP地址获取物理地址。arp可以显示缓存区中的所有条目、删除指定的条目或者添加静态的IP地址与MAC地址的对应关系。

              选项:

              -n
              显示IP地址对应的MAC地址信息
              -s <主机><MAC>
              指定主机的IP地址与MAC地址的静态映射
              -d <主机>
              删除制定主机的arp条目


              操作:

                # 显示arp缓存区的所有条目
                [root@localhost ~]# arp -n
                Address HWtype HWaddress Flags Mask Iface
                172.16.1.20 ether 28:6e:d4:8a:02:c0 C eth0
                172.16.1.25 ether 28:6e:d4:8a:15:61 C eth0
                172.18.0.9 ether 02:42:ac:12:00:09 C br-7f15bb750845
                172.16.1.254 (incomplete) eth0
                172.16.1.22 ether 28:6e:d4:89:e0:09 C eth0
                172.16.1.24 ether 28:6e:d4:88:eb:3d C eth0




                # 查看指定主机的arp条目
                arp -n 172.16.1.27  


                # 绑定IP地址和MAC地址(临时,)
                [root@localhost ~]# arp -s 172.16.1.20 28:6e:d4:8a:02:c1
                [root@localhost ~]# arp -n
                Address HWtype HWaddress Flags Mask Iface
                172.16.1.20 ether 28:6e:d4:8a:02:c1 CM eth0
                # 删除静态ARP绑定
                [root@localhost ~]# arp -d 172.16.1.20


                ip命令——网络配置工具


                ip命令用于显示或管理linux系统的路由、网络设备、策略路由和隧道。

                语法格式:

                  ip  [选项]  [网络对象]  [操作命令]

                  操作:

                    # 查看网卡信息
                    [root@localhost ~]# ip a


                    # 关闭网卡
                    [root@localhost ~]# ip link set eth0 down


                    # 开启网卡
                    [root@localhost ~]# ip link set eth0 up


                    # 添加IP地址
                    [root@localhost ~]# ip a add 172.16.1.31/24 dev eth0


                    # 删除IP地址
                    [root@localhost ~]# ip a del 172.16.1.31/24 dev eth0


                    # 查看路由
                    [root@localhost ~]# ip route
                    default via 172.16.1.254 dev eth0 proto static metric 100
                    172.16.1.0/24 dev eth0 proto kernel scope link src 172.16.1.27 metric 100
                    172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
                    172.18.0.0/16 dev br-7f15bb750845 proto kernel scope link src 172.18.0.1

                    注意:

                    1、删除网卡的主IP地址,同时会删除该网卡的所有IP地址。

                    2、删除网卡的辅助IP地址,不会影响该网卡的其他IP地址。

                    3、ip命令集成了ifconfig和route的功能,逐渐替代这两个IP


                    netstat命令——查看网络端口信息


                    用于显示本机网络的连接状态、运行端口和路由表等信息。

                    选项:

                    -n
                    显示数字形式的地址而不是去解析主机
                    -a
                    显示处于监听状态和非监听状态的socket信息
                    -c <秒数>
                    每隔几秒刷新一次
                    -l
                    仅显示处于监听状态的网络状态
                    -t
                    显示所有的TCP连接情况
                    -u显示所有的UDP连接情况
                    -p
                    显示socket所属进程的PID和名称


                    常用组合:

                      # 列出所有处于监听状态的端口信息
                      [root@localhost ~]# netstat -lntup


                      # 列出所有处于监听和非监听状态的端口信息
                      [root@localhost ~]# netstat -antup


                      重要的两个状态:

                      1、ESTABLISHED:表示处于连接的状态,认为有一个EASTABLISHED是一个服务的并发连接。

                      2、LISTEN:socket正在监听连接请求。


                      ss命令——查看网络端口信息


                      ss命令和netstat功能类似,但它能显示更多更详细的网络连接信息,比netstat更快更高效

                      安装ss命令:

                        yum -y install iproute
                          # 列出所有处于监听状态的端口信息
                          [root@localhost ~]# ss -lntup


                          # 列出所有处于监听和非监听状态的端口信息
                          [root@localhost ~]# ss -antup


                          ping命令——测试主机之间网络的连通性


                          ping命令发出请求后,远端主机网络联通的话,就会收到回应消息。可判断主机是否正常或两者的网络是否可以互通。

                          选项:

                          -c <次数>指定发送ICMP报文的次数,默认一直发送报文
                          -i <时间>
                          发送报文的间隔时间,默认是1s
                          -t <生存期>
                          设置发送的数据包其生存期TTL值


                          操作:

                            # 直接ping域名
                            [root@localhost ~]# ping harbor.liyb.com


                            # 测试IP地址
                            [root@localhost ~]# ping 172.16.1.27


                            # 每次ping间隔2秒,一共5次。
                            [root@localhost ~]# ping -t 2 -c 5 172.16.1.27
                            PING 172.16.1.27 (172.16.1.27) 56(84) bytes of data.
                            64 bytes from 172.16.1.27: icmp_seq=1 ttl=64 time=0.029 ms
                            64 bytes from 172.16.1.27: icmp_seq=2 ttl=64 time=0.032 ms
                            64 bytes from 172.16.1.27: icmp_seq=3 ttl=64 time=0.032 ms
                            64 bytes from 172.16.1.27: icmp_seq=4 ttl=64 time=0.028 ms
                            64 bytes from 172.16.1.27: icmp_seq=5 ttl=64 time=0.026 ms




                            --- 172.16.1.27 ping statistics ---
                            5 packets transmitted, 5 received, 0% packet loss, time 3999ms
                            rtt min/avg/max/mdev = 0.026/0.029/0.032/0.005 ms


                            注意:如果不加-c参数会一直ping下去,这时需要使用Ctrl + c来终止。


                            traceroute命令——追踪数据传输路由状态


                            traceroute命令和window下的tracert命令类似,用于显示网络数据包传输到指定主机的路径信息

                            安装traceroute:

                              yum install -y traceroute

                              操作:

                                traceroute www.baidu.com


                                注意:

                                1、有时会看到一些星号。可能是因为网络设备封堵或丢弃了返回的信息,所以得不到返回信息。

                                2、traceroute默认使用UDP协议(受网络影响性能不太好),可以使用-I参数来调用icmp协议。


                                telnet命令——远程登录主机或检测远程端口


                                telnet命令使用23端口进行远程,但是使用明文传输,安全性不好。目前远程连接一般使用安全性更好的SSH服务。现在telnet的主要应用场景是判断远端服务器的端口是否开放。

                                操作:

                                  # 端口放通的现象
                                  [root@localhost ~]# telnet 172.16.1.20 22
                                  Trying 172.16.1.20...
                                  Connected to 172.16.1.20.
                                  Escape character is '^]'.
                                  SSH-2.0-OpenSSH_7.4 # 看到这种情况,代表22端口是放通的。
                                  # 端口无法连接的现象
                                  [root@localhost ~]# telnet 172.16.1.20 3306
                                  Trying 172.16.1.20...
                                  telnet: connect to address 172.16.1.20: Connection refused


                                  ssh命令——远程登录主机


                                  ssh命令可以使用ssh加密协议实现安全的远程登录服务器,实现对服务器的远程管理。

                                  语法格式:

                                    ssh  [选项]  [用户]@[主机名或IP地址]  [远程执行的命令]

                                    选项:

                                    -p
                                    指定ssh登录端口,默认是22端口
                                    -t
                                    强制分配伪终端
                                    -v
                                    调试模式


                                    操作:

                                      # 首次连接会提示,再次连接就不会提示,输入正确密码就可以远程
                                      [root@k8s-master03 ~]# ssh -p 22 root@172.16.1.20
                                      The authenticity of host '172.16.1.20 (172.16.1.20)' can't be established.
                                      ECDSA key fingerprint is SHA256:ANt+WLWZpyB8YH14ROYVMTS68fEcEqoIrdVAi2FtwvU.
                                      ECDSA key fingerprint is MD5:d0:f1:19:71:df:cb:39:b3:b2:cb:9a:83:39:f2:05:cb.
                                      Are you sure you want to continue connecting (yes/no)? yes
                                      Warning: Permanently added '172.16.1.20' (ECDSA) to the list of known hosts.
                                      root@172.16.1.20's password:






                                      # 远程执行命令
                                      [root@localhost ~]# ssh root@172.16.1.20 "free -h"
                                      root@172.16.1.20's password: # 输入正常密码
                                      total used free shared buff/cache available
                                      Mem: 15G 1.4G 2.4G 743M 11G 13G
                                      Swap: 0B 0B 0B


                                      # 调试
                                      [root@localhost ~]# ssh -v root@172.16.1.20


                                      wget命令——命令行下载工具


                                      wget命令用于从网络上下载某些资料,可以直接从网络上下载自己的所需要的文件

                                      选项:

                                      -o
                                      将文件的执行结果写入文件中
                                      -O指定保存的文件名后下载文件
                                      -c断点续传
                                      --limit-rate

                                      限速下


                                      操作:

                                        # 下载单个文件,直接后面加链接
                                        wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.98/src/apache-tomcat-8.5.98-src.tar.gz


                                        # 指定保存的文件后下载
                                        wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo


                                        # 限速下载
                                        wget --limit-rate=5k -O etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo



                                        nslookup命令——域名解析查询工具

                                        安装:yum  -y install bind-utils

                                        语法:

                                          nslookup [选项]  [域名/IP]  [DNS服务器]

                                          操作

                                            # 查看DNS配置文件
                                            [root@localhost ~]# cat etc/resolv.conf
                                            # Generated by NetworkManager
                                            search liyb.com
                                            nameserver 172.16.1.27


                                            # 交互模式
                                            [root@localhost ~]# nslookup
                                            > server 172.16.1.27 # 指定DNS服务器
                                            Default server: 172.16.1.27
                                            Address: 172.16.1.27#53
                                            > harbor.liyb.com # 解析域名
                                            Server: 172.16.1.27
                                            Address: 172.16.1.27#53


                                            Name: harbor.liyb.com
                                            Address: 172.16.1.26




                                            # 非交互模式
                                            [root@localhost ~]# nslookup harbor.liyb.com
                                            Server: 172.16.1.27
                                            Address: 172.16.1.27#53


                                            Name: harbor.liyb.com
                                            Address: 172.16.1.26


                                            dig命令——域名查询工具


                                            dig命令用于测试域名系统的工作是否正常

                                            选项:

                                            @<DNS的IP地址>指定DNS服务器来进行解析
                                            -t指定要查询的DNS数据类型
                                            +trace从根域名开始跟踪查询结果
                                            +short
                                            仅输出最精简的CNAME和A记录


                                            操作:

                                              # 查询指定域名的IP地址
                                              [root@localhost ~]# dig harbor.liyb.com




                                              ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> harbor.liyb.com
                                              ;; global options: +cmd
                                              ;; Got answer:
                                              ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6359
                                              ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2




                                              ;; OPT PSEUDOSECTION:
                                              ; EDNS: version: 0, flags:; udp: 4096
                                              ;; QUESTION SECTION:
                                              ;harbor.liyb.com. IN A




                                              ;; ANSWER SECTION:
                                              harbor.liyb.com. 86400 IN A 172.16.1.26




                                              ;; AUTHORITY SECTION:
                                              liyb.com. 86400 IN NS www.liyb.com.




                                              ;; ADDITIONAL SECTION:
                                              www.liyb.com. 86400 IN A 172.16.1.27




                                              ;; Query time: 0 msec
                                              ;; SERVER: 172.16.1.27#53(172.16.1.27)
                                              ;; WHEN: 五 1月 26 12:04:32 CST 2024
                                              ;; MSG SIZE rcvd: 94
                                              # 指定DNS服务器
                                              [root@localhost ~]# dig @172.16.1.27 harbor.liyb.com


                                              # 精简输出


                                              [root@localhost ~]# dig +short harbor.liyb.com
                                              172.16.1.26


                                              tcpdump命令——监听网络流量


                                              tcpdump命令是一个截获网络数据包的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来以提供分析。

                                              选项:

                                              -c <数量>
                                              接收到指定的数据包数目后退出
                                              -i <网络接口>
                                              指定要监听的网络接口
                                              -n
                                              不进行DNS解析,加快显示速度
                                              -nn
                                              不将协议和端口数字等转换成名字
                                              -q
                                              以更快速输出的方式运行。
                                              -v
                                              显示命令执行的详细信息

                                              操作:

                                                # 不加参数将启动监视第一个网络接口所流过的数据包
                                                [root@localhost ~]# tcpdump


                                                # 指定网络接口进行监听
                                                [root@localhost ~]# tcpdump -i eth0


                                                # 指定监听主机的数据包
                                                [root@localhost ~]# tcpdump -n host 172.16.1.26


                                                # 监听指定端口的数据包
                                                [root@localhost ~]# tcpdump -nn port 22
                                                常见的协议关键字有ip、arp、icmp、tcp、udp等类型。


                                                # 使用tcpdump对tcp数据进行抓包
                                                [root@localhost ~]# tcpdump tcp dst port 80 or src 172.16.1.26 -i eth0 -n

                                                以下是TCP状态机制:

                                                图片来自网络

                                                本篇Linux常用命令分析完结!感谢你的阅读,如果觉得还OK,欢迎点赞 ;关注 ;收藏 ; 私信!!!

                                                文章转载自运维李哥不背锅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                评论