Ubuntu网络基础

文章目录

  • 1.查看网络状态类命令
    • [1.1 ifconfig](#1.1 ifconfig)
      • [1.1.1 查看所有网络接口信息](#1.1.1 查看所有网络接口信息)
      • [1.1.2 查看指定接口信息:](#1.1.2 查看指定接口信息:)
      • [1.1.3 启用和禁用网络接口。](#1.1.3 启用和禁用网络接口。)
    • [1.2 ip](#1.2 ip)
      • [1.2.1 查看网络接口:](#1.2.1 查看网络接口:)
      • [1.2.2 查看路由信息:](#1.2.2 查看路由信息:)
      • [1.2.3 设置 IP 地址:](#1.2.3 设置 IP 地址:)
      • [1.2.4 删除 IP 地址:](#1.2.4 删除 IP 地址:)
    • [1.3 netstat](#1.3 netstat)
      • [1.3.1 查看网络连接:](#1.3.1 查看网络连接:)
      • [1.3.2 查看路由表:](#1.3.2 查看路由表:)
    • [1.4 ss](#1.4 ss)
      • [1.4.1查看所有 TCP 连接:](#1.4.1查看所有 TCP 连接:)
  • 2.网络配置类命令
    • [2.1 nmcli](#2.1 nmcli)
      • [2.1.1 查看网络连接状态:](#2.1.1 查看网络连接状态:)
      • [2.1.2 连接到 Wi-Fi:](#2.1.2 连接到 Wi-Fi:)
      • [2.1.3 断开网络连接:](#2.1.3 断开网络连接:)
    • [2.2 hostname](#2.2 hostname)
      • [2.2.1 查看主机名:](#2.2.1 查看主机名:)
      • [2.2.2 设置主机名:](#2.2.2 设置主机名:)
      • [2.2.3 修改后需要重启系统生效](#2.2.3 修改后需要重启系统生效)
    • [2.3 resolv.conf](#2.3 resolv.conf)
      • [2.3.1编辑 DNS 配置文件:](#2.3.1编辑 DNS 配置文件:)
      • [2.3.2 在文件中添加DNS 服务器地址:](#2.3.2 在文件中添加DNS 服务器地址:)
  • 3.网络故障排除类命令
    • [3.1 ping](#3.1 ping)
      • [3.1.1 测试与远程主机的连接:](#3.1.1 测试与远程主机的连接:)
      • [3.1.2 指定次数发送数据包:](#3.1.2 指定次数发送数据包:)
      • [3.1.3 设置请求数据包大小](#3.1.3 设置请求数据包大小)
      • [3.1.4 设置请求间隔时间](#3.1.4 设置请求间隔时间)
      • [3.1.5 设置请求数据包的生存时间(TTL)](#3.1.5 设置请求数据包的生存时间(TTL))
      • [3.1.6 查看详细的统计信息](#3.1.6 查看详细的统计信息)
      • [3.1.7 设置超时时间](#3.1.7 设置超时时间)
    • [3.2 traceroute](#3.2 traceroute)
      • [3.2.1 追踪路由:](#3.2.1 追踪路由:)
    • [3.3 mtr](#3.3 mtr)
    • [3.4 nslookup](#3.4 nslookup)
    • [3.5 dig](#3.5 dig)
      • [3.5.1 查询域名解析结果:](#3.5.1 查询域名解析结果:)
  • 4.网络安全类命令
    • [4.1 iptables](#4.1 iptables)
      • [4.1.1 查看现有规则:](#4.1.1 查看现有规则:)
      • [4.1.2 允许特定端口的访问:](#4.1.2 允许特定端口的访问:)
    • [4.2 ufw](#4.2 ufw)
      • [4.2.1 启用/禁用防火墙:](#4.2.1 启用/禁用防火墙:)
      • [4.2.2 查看防火墙状态](#4.2.2 查看防火墙状态)
      • [4.2.3 设置默认策略](#4.2.3 设置默认策略)
      • [4.2.4 允许和拒绝端口](#4.2.4 允许和拒绝端口)
      • [4.2.5 允许和拒绝服务](#4.2.5 允许和拒绝服务)
      • [4.2.6 允许和拒绝特定 IP 地址](#4.2.6 允许和拒绝特定 IP 地址)
      • [4.2.7 删除规则](#4.2.7 删除规则)
      • [4.2.8 配置规则永久生效](#4.2.8 配置规则永久生效)
      • [4.2.9 设置日志记录](#4.2.9 设置日志记录)
  • 5.网络性能优化命令
    • [5.1 ethtool](#5.1 ethtool)
      • [5.1.1 查看网卡信息:](#5.1.1 查看网卡信息:)
      • [5.1.2 设置网卡速率:](#5.1.2 设置网卡速率:)
    • [5.2 netperf](#5.2 netperf)
      • [5.2.1 进行网络性能测试:](#5.2.1 进行网络性能测试:)
  • 6.常用网络命令补充
    • [6.1 wget](#6.1 wget)
      • [6.1.1 下载一个文件:](#6.1.1 下载一个文件:)
      • [6.1.2 断点续传:](#6.1.2 断点续传:)
      • [6.1.3 下载整个网站:](#6.1.3 下载整个网站:)
    • [6.2 curl](#6.2 curl)
      • [6.2.1 下载文件:](#6.2.1 下载文件:)
      • [6.2.2 获取网站内容:](#6.2.2 获取网站内容:)
      • [6.2.3 发送 POST 请求:](#6.2.3 发送 POST 请求:)
    • [6.3 telnet](#6.3 telnet)
      • [6.3.1 测试连接远程主机的端口:](#6.3.1 测试连接远程主机的端口:)
      • [6.3.2 退出 telnet:](#6.3.2 退出 telnet:)
    • [6.4 lsof](#6.4 lsof)
      • [6.4.1 查看所有打开的文件:](#6.4.1 查看所有打开的文件:)
      • [6.4.2 查看占用特定端口的进程:](#6.4.2 查看占用特定端口的进程:)
    • [6.5 iftop](#6.5 iftop)
      • [6.5.1 启动 iftop:](#6.5.1 启动 iftop:)
      • [6.5.2 按 IP 地址查看流量:](#6.5.2 按 IP 地址查看流量:)
    • [6.6 nethogs](#6.6 nethogs)
      • [6.6.1 启动 nethogs:](#6.6.1 启动 nethogs:)
      • [6.6.2 查看特定网络接口的流量:](#6.6.2 查看特定网络接口的流量:)
    • [6.7 nload](#6.7 nload)
      • [6.7.1 语法](#6.7.1 语法)
      • [6.7.2 选项](#6.7.2 选项)
      • [6.7.3 Devices参数](#6.7.3 Devices参数)
      • [6.7.4 示例](#6.7.4 示例)
      • [6.7.4.1 监测指定的网络接口:](#6.7.4.1 监测指定的网络接口:)
      • [6.7.4.2 设置速率的显示单位(以Kbps为单位):](#6.7.4.2 设置速率的显示单位(以Kbps为单位):)
      • [6.7.4.3 调整速率的因子:](#6.7.4.3 调整速率的因子:)
      • [6.7.4.4 设置每隔2秒更新一次显示:](#6.7.4.4 设置每隔2秒更新一次显示:)
    • [6.8 vnstat](#6.8 vnstat)
  • 7.其他命令
    • [7.1 iptraf](#7.1 iptraf)
  • 8.学习资料

1.查看网络状态类命令

1.1 ifconfig

ifconfig是最常见的网络接口配置命令,它能够查看和设置网络接口的状态。

1.1.1 查看所有网络接口信息

cpp 复制代码
ifconfig


1.1.2 查看指定接口信息:

cpp 复制代码
ifconfig eth0

1.1.3 启用和禁用网络接口。

cpp 复制代码
sudo ifconfig eth0 up #启用接口
sudo ifconfig eth0 down #禁用接口

1.2 ip

ip命令是ifconfig的替代工具,它能进行更细粒度的网络配置

1.2.1 查看网络接口:

查看所有网络接口信息:

cpp 复制代码
 ip addr show

只查看某个接口,如 eth0:

cpp 复制代码
 ip addr show dev eth0

1.2.2 查看路由信息:

cpp 复制代码
ip route

1.2.3 设置 IP 地址:

给 eth0 设置 192.168.1.100/24 的 IP 地址:

cpp 复制代码
sudo ip addr add 192.168.1.100/24 dev eth0

1.2.4 删除 IP 地址:

移除 IP 地址:

cpp 复制代码
sudo ip addr del 192.168.1.100/24 dev eth0

1.3 netstat

netstat命令用于显示网络连接、路由表和网络接口的统计信息。

1.3.1 查看网络连接:

cpp 复制代码
netstat -tuln

这里-t 表示查看 TCP 连接,-u 表示查看 UDP 连接,-l 表示查看正在监听的端口,-n 表示以数字形式显示地址和端口。

1.3.2 查看路由表:

cpp 复制代码
netstat -r

1.4 ss

ss命令是一个快速且更强大的 netstat 替代品,它提供有关网络连接的详细信息。

1.4.1查看所有 TCP 连接:

用于显示网络统计信息的命令行工具。虽然它们本身不直接显示网络流量,但您可以使用它们来获取有关网络连接和套接字的信息,这有助于您了解网络活动。

cpp 复制代码
ss -tuln

2.网络配置类命令

2.1 nmcli

nmcli 是NetworkManager提供的命令行工具,常用于管理网络连接。

2.1.1 查看网络连接状态:

cpp 复制代码
nmcli device status

2.1.2 连接到 Wi-Fi:

cpp 复制代码
nmcli dev wifi connect "SSID" password "password"

2.1.3 断开网络连接:

cpp 复制代码
nmcli connection down "连接名"

2.2 hostname

hostname用于查看或设置 Linux 系统的主机名。

2.2.1 查看主机名:

cpp 复制代码
hostname

2.2.2 设置主机名:

cpp 复制代码
sudo hostname newhostname

2.2.3 修改后需要重启系统生效

cpp 复制代码
sudo systemctl restart systemd-hostnamed

2.3 resolv.conf

Linux 系统使用/etc/resolv.conf文件来配置DNS服务器。可以通过编辑此文件来修改 DNS 设置。

2.3.1编辑 DNS 配置文件:

cpp 复制代码
sudo nano /etc/resolv.conf

2.3.2 在文件中添加DNS 服务器地址:

cpp 复制代码
nameserver 8.8.8.8
nameserver 8.8.4.4

3.网络故障排除类命令

3.1 ping

ping命令用于检查两个网络节点之间的连通性,帮助判断网络是否正常。

3.1.1 测试与远程主机的连接:

cpp 复制代码
ping www.baidu.com

3.1.2 指定次数发送数据包:

如果只想发送指定次数的请求,可以使用 -c 选项:

cpp 复制代码
ping -c 4 www.baidu.com

该命令将只发送 4 次请求,之后自动停止。

3.1.3 设置请求数据包大小

使用 -s 选项,可以指定每个 ICMP 请求数据包的大小,单位为字节:

cpp 复制代码
ping -s 1000 www.baidu.com

该命令将发送大小为 1000字节的数据包。

3.1.4 设置请求间隔时间

默认情况下,ping 每秒发送一次请求。

如果希望调整发送请求的间隔时间,可以使用 -i 选项。设置请求间隔为2秒:

cpp 复制代码
ping -i 2 www.baidu.com

3.1.5 设置请求数据包的生存时间(TTL)

通过 -t选项设置ICMP请求的生存时间(TTL):

cpp 复制代码
ping -t 50 www.baidu.com

该命令将设置TTL值为50,表示数据包可以经过50个路由器。

3.1.6 查看详细的统计信息

使用 -v 选项可以查看更详细的 ping 输出,包括发送和接收的详细数据包信息:

cpp 复制代码
ping -v www.baidu.com

3.1.7 设置超时时间

使用 -w 选项可以指定等待每个回应的最大时间,单位为秒。

如果在指定时间内没有收到响应,ping 将停止等待:

cpp 复制代码
ping -w 5 www.baidu.com

该命令将设置最大等待时间为 5 秒。

3.2 traceroute

traceroute用于追踪数据包从本机到目标主机的路由路径,能够帮助排查网络中断的原因。

3.2.1 追踪路由:

traceroute www.baidu.com

3.3 mtr

mtr是ping和traceroute的结合体,能够实时显示每一跳的丢包率和响应时间。

3.3.1启动mtr路由跟踪:

cpp 复制代码
mtr www.baidu.com

3.4 nslookup

nslookup用于查询 DNS 记录,帮助排查 DNS 解析问题。

3.4.1查询域名解析结果:

cpp 复制代码
nslookup www.baidu.com

3.5 dig

dig是一个功能更强大的 DNS 查询工具,比 nslookup 提供更详细的解析信息。

3.5.1 查询域名解析结果:

cpp 复制代码
dig www.baidu.com

4.网络安全类命令

4.1 iptables

iptables是 Linux 系统下常用的防火墙管理工具,用于配置访问控制规则。

4.1.1 查看现有规则:

cpp 复制代码
sudo iptables -L

4.1.2 允许特定端口的访问:

cpp 复制代码
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

4.2 ufw

ufw是 Ubuntu 系统中常用的简单防火墙工具,适合初学者使用。

在大多数基于 Ubuntu 的 Linux 系统中,ufw 默认已经安装。如果没有安装,可以通过以下命令进行安装:

cpp 复制代码
sudo apt-get install ufw

4.2.1 启用/禁用防火墙:

cpp 复制代码
sudo ufw enable  #启用防火墙
sudo ufw disable #禁用防火墙

4.2.2 查看防火墙状态

要查看 ufw 当前的状态,可以使用以下命令:

cpp 复制代码
sudo ufw status

如果想要查看更详细的状态信息,可以加上 verbose 选项:

cpp 复制代码
sudo ufw status verbose

4.2.3 设置默认策略

ufw允许你设置默认策略,以便在没有明确规则时,系统会如何处理流量。默认策略包括:

默认拒绝所有流量 :如果没有特别的规则,所有的流量都将被拒绝。

默认允许所有流量:如果没有特别的规则,所有的流量都会被允许。

设置默认拒绝所有流量的命令:

cpp 复制代码
sudo ufw default deny

设置默认允许所有流量的命令:

cpp 复制代码
sudo ufw default allow

4.2.4 允许和拒绝端口

使用ufw,你可以轻松地允许或拒绝某个端口的访问。例如,要允许端口80(HTTP)上的流量:

cpp 复制代码
sudo ufw allow 80

或者,如果你要允许TCP协议上的端口8080:

cpp 复制代码
sudo ufw allow 8080/tcp

同样,你可以拒绝某个端口的流量。

例如,拒绝端口23(Telnet)上的流量:

cpp 复制代码
sudo ufw deny 23

4.2.5 允许和拒绝服务

ufw还支持直接使用服务名称来允许或拒绝流量。例如,要允许SSH 服务:

cpp 复制代码
sudo ufw allow ssh

如果想要拒绝某个服务,可以使用:

c 复制代码
sudo ufw deny ssh

ufw 会根据预定义的服务规则(通常位于 /etc/services 中)自动解析服务的端口和协议。

4.2.6 允许和拒绝特定 IP 地址

还可以根据 IP 地址来允许或拒绝流量。

例如,允许来自IP地址192.168.1.100 的所有流量:

cpp 复制代码
sudo ufw allow from 192.168.1.100

如果要拒绝来自某个 IP 地址的流量:

cpp 复制代码
sudo ufw deny from 192.168.1.100

4.2.7 删除规则

要删除某条规则,可以使用delete命令。

例如,删除允许端口80的规则:

cpp 复制代码
sudo ufw delete allow 80

4.2.8 配置规则永久生效

ufw的规则默认在每次系统启动时都会生效,因此你无需额外手动保存配置。

但是,如果需要对防火墙规则进行永久保存,可以使用 --permanent 选项。

4.2.9 设置日志记录

如果需要查看哪些流量被允许或拒绝,ufw提供了日志功能。

启用日志记录:

cpp 复制代码
sudo ufw logging on

查看日志文件通常位于 /var/log/ufw.log。

Linux 防火墙工具 ufw:简化的防火墙管理

5.网络性能优化命令

5.1 ethtool

ethtool是用于查看和调整网卡性能的命令,可以设置网卡的速率、双工模式等。

5.1.1 查看网卡信息:

cpp 复制代码
ethtool eth0

5.1.2 设置网卡速率:

cpp 复制代码
sudo ethtool -s eth0 speed 1000 duplex full

5.2 netperf

netperf是一个用于测量网络性能的工具,可以测试带宽、延迟等。

5.2.1 进行网络性能测试:

cpp 复制代码
netperf -H <server-ip>

6.常用网络命令补充

6.1 wget

wget 是一个强大的命令行下载工具,可以用于从网络上下载文件。它支持 HTTP、HTTPS 和 FTP 协议,非常适合在没有图形界面的环境中下载文件。

6.1.1 下载一个文件:

cpp 复制代码
wget http://example.com/file.tar.gz

6.1.2 断点续传:

如果下载过程中断开了,可以使用 -c 选项继续下载:

cpp 复制代码
wget -c http://example.com/file.tar.gz

6.1.3 下载整个网站:

cpp 复制代码
wget -r -np -k http://example.com

这里 -r 表示递归下载,-np 表示不下载父目录,-k 表示下载后转换链接为本地链接。

6.2 curl

curl 是一个功能非常强大的命令行工具,支持多种协议(如 HTTP、HTTPS、FTP、SFTP 等),可以用来发送请求、下载文件或与 API 交互。

6.2.1 下载文件:

cpp 复制代码
curl -O http://example.com/file.tar.gz

6.2.2 获取网站内容:

cpp 复制代码
curl http://example.com

6.2.3 发送 POST 请求:

cpp 复制代码
curl -X POST -d "name=value" http://example.com

6.3 telnet

telnet 是一个非常古老的协议,它可以用于连接远程主机并测试某个端口的可达性。虽然现在更推荐使用 ssh 或 nc,但 telnet 在一些情况下仍然非常有用。

6.3.1 测试连接远程主机的端口:

cpp 复制代码
telnet example.com 80

如果能成功连接,说明端口是开放的;如果连接失败,可能是防火墙阻止了该端口。

6.3.2 退出 telnet:

在连接时按下 Ctrl + ],然后输入 quit。

6.4 lsof

lsof(List Open Files)命令用于列出当前系统中打开的文件,包括网络连接、文件描述符等。它是排查进程、端口占用等问题的强大工具。

6.4.1 查看所有打开的文件:

lsof

6.4.2 查看占用特定端口的进程:

cpp 复制代码
lsof -i :80

$ 6.4.3 查看某个进程的打开文件: ```cpp lsof -p ``` ### 6.5 iftop   iftop 是一个实时流量监控工具,用于显示系统的网络流量。它可以按照每个连接对流量进行排序,帮助你快速识别哪些连接占用了大量带宽。 #### 6.5.1 启动 iftop: ```cpp sudo iftop ```   如在ubuntu系统上安装,请使用下面指令 ```cpp sudo apt-get install iftop ```   详细用法请参考:   1.[Linux流量监控工具](https://zhuanlan.zhihu.com/p/716218355)   2.[网络流量实时监控带宽详情工具](https://www.fujieace.com/linux/iftop.html) #### 6.5.2 按 IP 地址查看流量:   iftop 默认按连接显示流量,你可以通过选项进行排序或过滤。使用 -ni 参数来显示本机流量。 ### 6.6 nethogs vnethogs 是一个非常实用的工具,它可以实时显示各个进程所消耗的网络带宽。它比 iftop 更侧重于显示每个进程的网络流量,有助于找出占用带宽的应用程序。 #### 6.6.1 启动 nethogs: ```cpp sudo nethogs ``` #### 6.6.2 查看特定网络接口的流量: ```cpp sudo nethogs eth0 ```   这里 eth0 是你想要监控的网络接口,可以根据实际情况更改为其他接口名。 ### 6.7 nload   是一个用于监测网络流量的命令行工具,它以图形化的方式显示实时的网络使用情况。使用该命令,可在命令行界面通过图形化方式实时显示网络流量,包括上传和下载速率、总流量等数据。   在Ubuntu 系统上可使用如下命令进行安装: ```cpp sudo apt install nload ``` #### 6.7.1 语法 ```cpp nload [options] [devices] ``` #### 6.7.2 选项 ```cpp -a:这个好像是全部数据的刷新时间周期,单位是秒,默认是 300。 -i <网络接口>:进入网卡的流量图的显示比例最大值设置,默认 10240 kBit/s。 -m:不显示流量图,只显示统计数据。 -o:出去网卡的流量图的显示比例最大值设置,默认 10240 kBit/s。 -t <刷新时间>:显示数据的刷新时间间隔,单位是毫秒,默认 500。 -K <速率因子>: 设置速率的因子,用于调整显示的速率。 -u <速率单位>:设置右边 Curr、Avg、Min、Max 的数据单位,默认是自动变的。注意大小写单位不同! h|b|k|m|g ------ h: auto,b: Bit/s,k: kBit/s,m: MBit/s 等; H|B|K|M|G ------ H: auto,B: Byte/s,K: kByte/s,M: MByte/s 等。 -U:设置右边 TTL 的数据单位,默认是自动变的。注意大小写单位不同(与 -u 相同)! ``` #### 6.7.3 Devices参数   **devices**:自定义监控的网卡,默认是全部监控的,使用左右键切换。 #### 6.7.4 示例   实时监测默认网络接口: ```cpp nload ``` >    **注意**:默认情况下,nload 会实时监测第一个找到的网络接口的上传和下载速率。 #### 6.7.4.1 监测指定的网络接口: ```cpp nload -i eth0 ``` #### 6.7.4.2 设置速率的显示单位(以Kbps为单位): ```cpp nload -u Kbps ``` #### 6.7.4.3 调整速率的因子: ```cpp nload -K 1024 ``` #### 6.7.4.4 设置每隔2秒更新一次显示: ```cpp nload -t 2 ``` ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d48fdba0cf7c4812a1d84c73d50c280a.png)   [实时网络流量监控](https://zhuanlan.zhihu.com/p/31021527468) ### 6.8 vnstat   1.vnstat是一个用于监视网络流量的轻量级命令行工具。   2.与**iftop** 和**nload**不同,vnstat主要用于收集并显示网络接口的流量统计数据,而不是实时监视。 安装vnstat: ```cpp sudo apt update sudo apt install vnstat ```   然后,您可以使用 vnstat 命令查看历史流量数据。   例如,要查看eth0接口的流量数据,可以运行下面指令: ```cpp vnstat -i eth0。 ``` ## 7.其他命令 ### 7.1 iptraf   iptraf 是一个基于文本的实时网络监视工具,它可以显示各种网络接口的流量信息。   但是,iptraf 在现代Ubuntu发行版中的可用性可能有限。如果您需要它,可以尝试安装: ```cpp sudo apt update sudo apt install iptraf ``` 待补充 ## 8.学习资料   1.[代码酷](https://www.echo.cool/docs/os/ubuntu/ubuntu-network-configuration/ubuntu-network-basics/)   2.[Ubuntu Linux网络设置完全指南](https://www.oryoy.com/news/ubuntu-linux-wang-luo-she-zhi-wan-quan-zhi-nan-cong-ji-chu-pei-zhi-dao-gao-ji-wang-luo-guan-li-qing.html)

相关推荐
BingoGo3 分钟前
使用 PHP 和 WebSocket 构建实时聊天应用:完整指南
后端·php
Boop_wu12 分钟前
[Java EE] 网络原理(2) http
网络·网络协议·http
JaguarJack18 分钟前
使用 PHP 和 WebSocket 构建实时聊天应用 完整指南
后端·php
fulufulucode19 分钟前
【网络协议】HTTPS相关知识详细梳理
网络·网络协议
西瓜和拾月22 分钟前
Ubuntu Server 24.04 LVM 分区扩容
linux·运维·ubuntu
yenggd40 分钟前
华为SRv6 BE跨域配置案例
运维·网络·计算机网络·华为
LCG米1 小时前
基于LoRa的远距离低功耗农业传感器网络设计与实现(SX1278+STM32L071)
网络·stm32·php
奋斗的好青年1 小时前
Ubuntu+Windows双系统修复引导+更改启动顺序
linux·windows·ubuntu
yiSty1 小时前
Windows 10/11下安装WSL Ubuntu
linux·windows·ubuntu
大布布将军1 小时前
⚡️编排的艺术:BFF 的核心职能——数据聚合与 HTTP 请求
前端·网络·网络协议·程序人生·http·node.js·改行学it