22、Linux 网络配置与故障排查全攻略

Linux 网络配置与故障排查全攻略

在 Linux 系统中,网络配置和故障排查是日常使用中不可避免的问题。本文将详细介绍 IP 路由表的修改、网络故障排查方法以及安全登录其他计算机的技巧。

1. 修改 IP 路由表

IP 路由表决定了网络数据包的流向。在 IP 地址范围 192.168.0.0 - 192.168.0.255 内,子网掩码(Genmask)和目标地址(Destination)匹配,这些流量会留在局域网内,无需经过路由器,因此在网关(Gateway)列中显示为 *。而其他 IP 地址的流量默认会通过路由器,在本例中路由器地址为 192.168.0.1,子网掩码为 0.0.0.0。

路由表中的标志列(Flags)提供了路由的相关信息,常见的标志有 U(路由启用)和 G(使用网关)。

1.1 使用 route 命令修改路由表

route 命令不仅可以查看路由表,还能对其进行修改。但使用时需谨慎,错误的修改可能导致网络故障。

例如,当网关丢失时,可按以下步骤操作:

# 查看路由表
# route
Kernel IP routing table
Destination Gateway Genmask       Flags Metric Ref
¯Use Iface
192.168.0.0 *       255.255.255.0 U     0      0
¯0 eth0

# 添加网关
# route add -net default gw 192.168.0.1 dev eth0

# 再次查看路由表
# route
Kernel IP routing table
Destination Gateway     Genmask       Flags Metric 
¯Ref   Use Iface
192.168.0.0 *           255.255.255.0 U     0
¯0       0 eth0
default     192.168.0.1 0.0.0.0       UG    0
¯0       0 eth0

上述命令中, add 表示添加新路由, -net 表示目标是一个网络, gw 指定网关地址, dev eth0 指定使用的设备为以太网网卡。

若要让无线网卡(ath0)访问以 10.1.xxx.xxx 为基础的局域网,且禁止其访问互联网,可执行以下命令:

# 查看路由表
# route
Kernel IP routing table
Destination Gateway     Genmask       Flags Metric 
¯Ref   Use Iface
192.168.0.0 *           255.255.255.0 U     0
¯0       0 eth0
default     192.168.0.1 0.0.0.0       UG    0
¯0       0 eth0

# 添加新路由
# route add -net 10.1.0.0 netmask 255.255.0.0 dev 
¯ath0

# 再次查看路由表
# route
Kernel IP routing table
Destination Gateway     Genmask       Flags Metric 
¯Ref   Use Iface
192.168.0.0 *           255.255.255.0 U     0
¯0       0 eth0
10.1.0.0    *           255.255.0.0   U     0
¯0       0 ath0
default     192.168.0.1 0.0.0.0       UG    0
¯0       0 eth0

若要删除该路由,使用 del 命令:

# 查看路由表
# route
Kernel IP routing table
Destination Gateway     Genmask       Flags Metric 
¯Ref   Use Iface
192.168.0.0 *           255.255.255.0 U     0
¯0       0 eth0
10.1.0.0    *           255.255.0.0   U     0
¯0       0 ath0
default     192.168.0.1 0.0.0.0       UG    0
¯0       0 eth0

# 删除路由
# route del -net 10.1.0.0 netmask 255.255.0.0 dev 
¯eth0

# 再次查看路由表
# route
Kernel IP routing table
Destination Gateway     Genmask       Flags Metric 
¯Ref   Use Iface
192.168.0.0 *           255.255.255.0 U     0
¯0       0 eth0
default     192.168.0.1 0.0.0.0       UG    0
¯0       0 eth0
2. 网络故障排查

虽然现在的 Linux 发行版在网络方面通常表现良好,但仍可能遇到问题。以下是一些基本的故障排查方法:
1. 检查本地主机 :使用 ping 127.0.0.1 命令检查本地主机是否正常。若无法 ping 通,说明系统存在严重问题。
2. 检查外部 IP 地址 :若本地主机正常,使用 ping 命令检查机器的外部 IP 地址。若无法 ping 通,确保网络功能已启用。
3. 检查本地网络 :若外部 IP 地址可 ping 通,尝试 ping 本地网络中的其他机器。若失败,检查网络接口,确保电缆已正确连接,使用 ifconfig iwconfig 命令验证接口状态,必要时使用 ifup 命令启用接口,然后再次尝试 ping
4. 检查路由器 :若能 ping 通本地网络中的其他机器,但无法 ping 通路由器,使用 route 命令检查路由表,若缺少条目,按照上述修改路由表的方法添加。
5. 检查互联网连接 :若能 ping 通路由器,尝试 ping 互联网上的已知可用机器,如 www.google.com www.apple.com 。若无法 ping 通,尝试 ping 其 IP 地址。以下是一些常见网站的 IP 地址:
| 网站 | IP 地址 |
| ---- | ---- |
| www.google.com | 72.14.203.99 |
| www.apple.com | 17.254.0.91 |
| www.ubuntu.com | 82.211.81.166 |
| www.ibm.com | 129.42.16.99 |
| www.granneman.com | 216.23.180.5 |

获取这些 IP 地址的方法有多种,可使用 ping 命令、 traceroute 命令或 host 命令。

  1. 检查 DNS 问题 :若能 ping 通 IP 地址,但无法 ping 通域名,说明存在 DNS 问题。若使用 DHCP,运行 dhclient 命令尝试更新 DNS 信息;若未使用 DHCP,从路由器、管理员或 ISP 处获取 DNS 信息,并以 root 权限将其添加到 /etc/resolv.conf 文件中,示例如下:
nameserver 24.217.0.5
nameserver 24.217.0.55

也可尝试使用路由器的 IP 地址作为 DNS 服务器:

nameserver 192.168.0.1

然后使用 ifdown ifup 命令重新启动网络接口。

  1. 检查硬件和软件 :若上述方法都无法解决问题,从硬件开始检查,确保所有设备正确安装和连接。若硬件没问题,检查软件,最坏的情况是硬件没有适用于 Linux 的驱动程序。对于无线网卡,由于部分制造商不配合 Linux 开发,可能存在兼容性问题。在购买无线网卡前,可通过以下网站查看其与 Linux 的兼容性:

推荐使用 Netgear WG511T 无线 PCMCIA 卡,在最新的 K/Ubuntu 系统中可直接使用。

3. 安全登录其他计算机

在早期, telnet 是连接其他计算机的常用程序,但它存在严重的安全问题,所有传输的数据都未加密。为解决这一问题, ssh (安全外壳)应运而生。 ssh 不仅能实现 telnet 的所有功能,还对传输的数据进行加密,更安全可靠。

3.1 使用 ssh 登录其他计算机

假设从笔记本电脑(名为 pound,IP 地址为 192.168.0.15)使用 ssh 命令登录到台式电脑(名为 eliot,IP 地址为 192.168.0.25)查看文件,笔记本电脑的用户名是 ezra,台式电脑的用户名是 tom,可执行以下命令:

$ ssh tom@192.168.0.25
tom@192.168.0.25’s password:
Linux eliot 2.6.12-10-386 #1 Mon Jan 16 17:18:08 UTC
¯ 2006 i686 GNU/Linux
Last login: Mon Feb 6 22:40:31 2006 
¯from 192.168.0.15

连接后会提示输入密码,输入密码(输入过程中不可见)并按 Enter 键,若密码正确,将显示目标机器的相关信息,此时可像在本地一样在目标机器上执行授权命令。

若首次连接到 eliot,会看到以下提示:

$ ssh tom@192.168.0.25
The authenticity of host ‘192.168.0.25
¯(192.168.0.25)’ can’t be established.
RSA key fingerprint is 54:53:c3:1c:9a:07:22:0c:82:
¯7b:38:53:21:23:ce:53.
Are you sure you want to continue connecting 
¯(yes/no)?

这是因为 ssh 不识别该机器,需要验证其身份。输入 yes 并按 Enter 键,会看到以下信息及密码提示:

Warning: Permanently added ‘192.168.0.25’ (RSA)
¯to the list of known hosts.1
tom@192.168.0.25’s password:

ssh 会将该机器的 RSA 密钥指纹存储在 ~/.ssh/known_hosts 文件中。根据 /etc/ssh/ssh_config 文件中 HashKnownHosts 选项的设置,该文件中的记录会以不同格式显示。

HashKnownHosts 设置为 no ,记录格式如下:

192.168.0.25 ssh-rsa SkxPUQLYqXSzknsstN6Bh2MHK5AmC6E
¯pg4psdNL69R5pHbQi3kRWNNNNO3AmnP1lp2RNNNNOVjNN9mu5FZe
¯l6zK0iKfJBbLh/Mh9KOhBNtrX6prfcxO9vBEAHYITeLTMmYZLQHB
¯xSr6ehj/9xFxkCHDYLdKFmxaffgA6Ou2ZUX5NzP6Rct4cfqAY69E
¯5cUoDv3xEJ/gj2zv0bh630zehrGc=

HashKnownHosts 设置为 yes ,记录格式如下:

NNNNO3AmnP1lp2RNNNNOVjNNNVRNgaJdxOt3GIrh00lPD6KBIU1k
¯aT6nQoJUMVTx2tWb5KiF/LLD4Zwbv2Z/j/0czCZIQNPwDUf6YiKU
¯FFC6eagqpLDDB4T9qsOajOPLNinRZpcQoPlXf1u6j1agfJzqUJUY
¯E+Lwv8yzmPidCvOuCZ0LQH4qfkVNXEQxmyy6iz6b2wp=?

这种加密方式从安全角度看是好的,但如果目标机器的操作系统重新安装, ssh 密钥会发生变化,再次登录时会收到警告:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY
Someone could be eavesdropping on you right now 
¯(man-in-the-middle attack)!
It is also possible that the RSA host key has just 
¯been changed.
The fingerprint for the RSA key sent by the remote 
¯host is
19:85:59:5c:6a:24:85:53:07:7a:dc:34:37:c6:72:1b.
Please contact your system administrator.
Add correct host key in /home/pound/.ssh/
¯known_hosts to get rid of this message.

Offending key in /home/pound/.ssh/known_hosts:8
RSA host key for 192.168.0.125 has changed and you 
¯have requested strict checking.
Host key verification failed.

解决方法是删除 pound 机器上 ~/.ssh/known_hosts 文件中对应 eliot 的记录,保存文件后重新连接, ssh 会再次询问是否接受新密钥,输入 yes 即可。

若连接多个机器,难以确定要删除的记录,可编辑 /etc/ssh/ssh_config 文件,将 HashKnownHosts 设置为 no 以避免此问题。

3.2 无密码安全登录其他机器

可以通过配置实现无密码登录其他机器。以从 pound 机器(用户名 ezra)无密码登录到 eliot 机器(用户名 tom)为例,步骤如下:
1. 在 pound 机器上生成 ssh 认证密钥:

$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key 
¯(/home/ezra/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in 
¯/home/ezra/.ssh/id_dsa.
Your public key has been saved in 
¯/home/ezra/.ssh/id_dsa.pub.

按提示操作,接受默认的密钥保存位置,两次输入空密码,即可生成私钥 ~/.ssh/id_dsa 和公钥 ~/.ssh/id_dsa.pub
2. 将公钥从 pound 机器复制到 eliot 机器:

$ ssh-copy-id -i ~/.ssh/id_dsa.pub tom@192.168.0.25
  1. 尝试登录 eliot 机器:
$ ssh tom@192.168.0.25
Linux eliot 2.6.12-10-386 #1 Mon Jan 16 17:18:08 UTC
¯ 2006 i686 GNU/Linux
Last login: Mon Feb 6 22:40:31 2006 from 
¯192.168.0.15

此时无需输入密码即可登录。

虽然这种方法看起来不安全,但它基于密钥加密技术,实际上是安全的。通过掌握这些网络配置和故障排查方法,以及安全登录技巧,能更高效地使用 Linux 系统。

mermaid 流程图:网络故障排查流程

graph TD;
    A[网络接口正常但无法上网] --> B[ping 本地主机 127.0.0.1];
    B -- 失败 --> C[系统严重损坏,停止排查];
    B -- 成功 --> D[ping 外部 IP 地址];
    D -- 失败 --> E[确保网络功能启用];
    D -- 成功 --> F[ping 本地网络其他机器];
    F -- 失败 --> G[检查接口和电缆,使用 ifconfig 或 iwconfig 验证,必要时 ifup 启用];
    G --> F;
    F -- 成功 --> H[ping 路由器];
    H -- 失败 --> I[使用 route 检查路由表,添加缺失条目];
    I --> H;
    H -- 成功 --> J[ping 互联网已知机器域名];
    J -- 失败 --> K[ping 其 IP 地址];
    K -- 成功 --> L[DNS 问题];
    L -- 使用 DHCP --> M[运行 dhclient 更新 DNS 信息];
    L -- 未使用 DHCP --> N[从路由器等获取 DNS 信息,添加到 /etc/resolv.conf];
    N --> O[ifdown 和 ifup 重新启动网络接口];
    K -- 失败 --> P[检查硬件和软件];
    J -- 成功 --> Q[网络正常];

Linux 网络配置与故障排查全攻略

4. 网络工具的综合应用与拓展

在 Linux 网络环境中,除了前面介绍的核心工具,还有一些其他网络工具也能发挥重要作用,它们相互配合可以更高效地完成各种网络任务。

4.1 wget curl 的使用
  • wget wget 是一个非交互式的网络下载工具,它可以在后台运行,支持断点续传、递归下载等功能。例如,要下载一个文件,可以使用以下命令:
wget https://example.com/file.zip

如果要进行递归下载一个网站的内容(谨慎使用,可能会对目标服务器造成较大压力),可以使用以下命令:

wget -r -np https://example.com

其中, -r 表示递归下载, -np 表示不进入父目录。
- curl curl 是一个功能强大的网络传输工具,支持多种协议,如 HTTP、FTP、SMTP 等。它可以用于发送 HTTP 请求、上传和下载文件等。例如,发送一个简单的 GET 请求:

curl https://example.com

如果要发送一个带有表单数据的 POST 请求,可以使用以下命令:

curl -X POST -d "param1=value1&param2=value2" https://example.com/api

其中, -X POST 表示使用 POST 方法, -d 后面跟着要发送的表单数据。

4.2 rsync 的数据同步

rsync 是一个用于远程和本地文件同步的工具,它可以高效地同步文件和目录,只传输文件中发生变化的部分。例如,将本地目录 local_dir 同步到远程服务器的 remote_dir 目录:

rsync -avz local_dir/ user@remote_host:remote_dir/

其中, -a 表示归档模式,保留文件的所有属性, -v 表示详细输出, -z 表示压缩传输。

5. 网络配置的持久化与自动化

在 Linux 系统中,为了确保网络配置在系统重启后仍然生效,需要进行持久化配置。同时,为了提高效率,可以将一些常用的网络配置操作自动化。

5.1 网络配置文件

不同的 Linux 发行版网络配置文件的位置和格式可能会有所不同,但常见的配置文件有 /etc/network/interfaces (Debian 和 Ubuntu 系列)和 /etc/sysconfig/network-scripts/ifcfg-* (Red Hat 和 CentOS 系列)。

以 Debian 和 Ubuntu 为例,编辑 /etc/network/interfaces 文件可以配置网络接口:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8 8.8.4.4

上述配置将 eth0 接口设置为静态 IP 地址。

5.2 自动化脚本

可以编写脚本将一些常用的网络配置操作自动化。例如,编写一个脚本用于添加路由:

#!/bin/bash
# 添加默认路由
route add -net default gw 192.168.0.1 dev eth0

将上述脚本保存为 add_route.sh ,并赋予执行权限:

chmod +x add_route.sh

然后可以在需要的时候执行该脚本。

6. 网络安全的进一步保障

除了使用 ssh 进行安全登录,还可以采取其他措施来保障网络安全。

6.1 防火墙配置

防火墙可以阻止未经授权的网络访问,保护系统安全。在 Linux 系统中,常用的防火墙工具是 iptables firewalld

iptables 为例,以下是一个简单的防火墙规则配置:

# 清空所有规则
iptables -F
# 允许本地回环接口
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的和相关的连接
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# 允许 SSH 连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许 HTTP 和 HTTPS 连接
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 拒绝其他所有输入连接
iptables -A INPUT -j DROP

上述规则允许本地回环接口、已建立和相关的连接、SSH 连接以及 HTTP 和 HTTPS 连接,拒绝其他所有输入连接。

6.2 安全审计

定期进行安全审计可以发现潜在的安全问题。可以使用 auditd 工具进行系统活动的审计。安装并启动 auditd

apt-get install auditd  # Debian 和 Ubuntu
yum install auditd      # Red Hat 和 CentOS
systemctl start auditd
systemctl enable auditd

然后可以通过 ausearch aureport 命令查看审计日志。

mermaid 流程图:网络工具使用流程

graph TD;
    A[网络任务需求] --> B{选择工具};
    B -- 下载文件 --> C[使用 wget 或 curl];
    B -- 同步文件 --> D[使用 rsync];
    B -- 安全登录 --> E[使用 ssh];
    B -- 网络配置 --> F[使用 route、ifconfig 等];
    B -- 网络故障排查 --> G[使用 ping、traceroute 等];
    C --> H[执行下载操作];
    D --> I[执行同步操作];
    E --> J[执行登录操作];
    F --> K[执行配置操作];
    G --> L[执行排查操作];
    H --> M[完成任务];
    I --> M;
    J --> M;
    K --> M;
    L --> M;

总结

通过本文的介绍,我们详细了解了 Linux 系统中网络配置、故障排查、安全登录以及其他网络工具的使用方法。掌握这些知识和技能,可以让我们在 Linux 网络环境中更加得心应手,高效地完成各种网络任务,同时保障系统的网络安全。在实际应用中,要根据具体情况灵活运用这些工具和方法,不断积累经验,提高解决网络问题的能力。

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值