网络配置

静态地址(有线)

命令

一个常见的场景,当你安装好一台Linux系统,正处于局域网,但没有安装dhclient,能通过手动配置静态地址,但配置好后发现不能联网只能访问内网,此时的关键就在于到底有没有配置网关。网关会出现在路由表开头为default 的路由条目。

IP 掩码

为你的eth0网卡配置IP 192.168.1.100/24 并 启用网卡

1
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up

路由表

为路由表中添加default路由,意味着数据包源地址匹配不到任何路由条目时默认会发往192.168.1.1

1
sudo route add default gw 192.168.1.1

DNS

此时你可能发现只能ping外网而解析域名失败

编辑/etc/resolv.conf文件,添加DNS服务器地址。

1
sudo vim /etc/resolv.conf

添加以下内容:

1
2
3
4
nameserver 223.5.5.5
nameserver 223.6.6.6
nameserver 114.114.115.115

nmcli

确保使用正确的网络接口名称,如eth0、enp0s3等,可以使用ip link命令查看可用的接口。

1
2
3
4
5
6
7

sudo nmcli con mod "Wired connection 1" ipv4.addresses 192.168.1.100/24
sudo nmcli con mod "Wired connection 1" ipv4.gateway 192.168.1.1
sudo nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8 8.8.4.4"
sudo nmcli con mod "Wired connection 1" ipv4.method manual
sudo nmcli con up "Wired connection 1"

配置完成可查看网卡接口状态

1
2
3
4
5
6
7
$ nmcli connection show

NAME UUID TYPE DEVICE
Wired connection 1 55408542-fe20-31ac-a17a-6f0902b46c36 ethernet enp0s20f0u5u3
docker0 9010b240-3f39-4f57-a1ba-bcf65ca8088c bridge docker0
lo 71c8839f-e1eb-4426-a641-e437bd21b803 loopback lo
Mihomo 7ea9c1e7-8866-4e9a-9502-57b9ffe2a7a0 tun Mihomo

无线网络

iwclt

命令行输入wiclt进入无线网络配置

路由表

Linux 中路由表用来掌管所有数据包该走哪个端口的记录

常用命令

ip route show table

这条命令可以显示所有本系统中的路由表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

$ ip route show table all
default dev Mihomo table 2022
default via 192.168.78.26 dev enp0s20f0u5u3 proto dhcp src 192.168.78.96 metric 20100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.78.0/24 dev enp0s20f0u5u3 proto kernel scope link src 192.168.78.96 metric 100
198.18.0.0/30 dev Mihomo proto kernel scope link src 198.18.0.1
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1
local 172.17.0.1 dev docker0 table local proto kernel scope host src 172.17.0.1
broadcast 172.17.255.255 dev docker0 table local proto kernel scope link src 172.17.0.1
local 192.168.78.96 dev enp0s20f0u5u3 table local proto kernel scope host src 192.168.78.96
broadcast 192.168.78.255 dev enp0s20f0u5u3 table local proto kernel scope link src 192.168.78.96
local 198.18.0.1 dev Mihomo table local proto kernel scope host src 198.18.0.1
broadcast 198.18.0.3 dev Mihomo table local proto kernel scope link src 198.18.0.1
fe80::/64 dev vethccc5fa1 proto kernel metric 256 pref medium
fe80::/64 dev docker0 proto kernel metric 256 pref medium
fe80::/64 dev Mihomo proto kernel metric 256 pref medium
fe80::/64 dev enp0s20f0u5u3 proto kernel metric 1024 pref medium
local ::1 dev lo table local proto kernel metric 0 pref medium
local fe80::42:2ff:febe:3ef0 dev docker0 table local proto kernel metric 0 pref medium
local fe80::124:5d52:84b1:9870 dev Mihomo table local proto kernel metric 0 pref medium
local fe80::1084:9eff:fe98:c06f dev vethccc5fa1 table local proto kernel metric 0 pref medium
local fe80::36c8:e693:37ac:ab82 dev enp0s20f0u5u3 table local proto kernel metric 0 pref medium
multicast ff00::/8 dev vethccc5fa1 table local proto kernel metric 256 pref medium
multicast ff00::/8 dev docker0 table local proto kernel metric 256 pref medium
multicast ff00::/8 dev enp0s20f0u5u3 table local proto kernel metric 256 pref medium
multicast ff00::/8 dev Mihomo table local proto kernel metric 256 pref medium

  • src 代表下一跳地址,比匹不到任何路由条目,就会发往default,走default也要知道从哪里发出去,我这里是dev Mihomo发出,而Windows的路由表应该是一个地址而不是接口名称。
  • 其中 default 开头的路由就是常说的默认网关了,家庭路由器通过DHCP协议分发的IP地址等信息就会默认配置默认网关为家庭路由器的IP地址。default路由会将没有匹配到本地任何路由条目的数据包默认发往该路径,此时我有两条默认路由,就会选择metric优先级高的Mihomo接口
  • metric 代表优先级,优先级越高该数值越小,第一条系统默认度量值,通常,默认路由的度量值被隐含设定为0。

netstat -rn

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ netstat -r                         
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default _gateway 0.0.0.0 UG 0 0 0 enp0s20f0u5u3
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.78.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s20f0u5u3
198.18.0.0 0.0.0.0 255.255.255.252 U 0 0 0 Mihomo
# -n 不显示名称
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.78.26 0.0.0.0 UG 0 0 0 enp0s20f0u5u3
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.78.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s20f0u5u3
198.18.0.0 0.0.0.0 255.255.255.252 U 0 0 0 Mihomo

  • Gateway 0.0.0.0 表示直接连接的网络(directly connected network)是指网络设备(路由器、交换机等、网桥)直接连接到的网络,不需要通过网关或中间设备来访问。即同一子网无需网关