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)

相关推荐
FeiHuo565151 小时前
微信个人号API二次开发:如何提高开发效率和质量
java·开发语言·python·php
jingshaoqi_ccc1 小时前
ubuntu 24桌面系统下交叉编译QT6.9.1
linux·运维·ubuntu
L.Ru1 小时前
在MobaXterm中使用debian以及常见的命令
运维·网络·debian·信息与通信
wulaladamowang1 小时前
Ubuntu 22.04 Caps键永久映射到Ctrl或Esc键
ubuntu
Brixy1 小时前
Linux网络配置
linux·运维·网络
遇到困难睡大觉哈哈1 小时前
Harmony os HTTP 网络访问(Network Kit 版)
网络·http·iphone·harmonyos·鸿蒙
人工智能训练1 小时前
跨架构突围!X86 Ubuntu Dify 无缝迁移 Arm64 openEuler Docker 实战指南
人工智能·ubuntu·docker·容器·架构·arm64·dify
张世争1 小时前
ubuntu 使用 cmake 方式源码编译 SDL2
ubuntu·源码编译·sdl2
星光一影1 小时前
知识付费系统源码,资源网站,支持pc和h5
mysql·职场和发展·php·创业创新·html5·程序员创富