Linux 网络配置基础
文章目录
- 1. 前言
- 2. Linux 的网络配置
- 2.1 传统的网络配置方法
- 2.2 新的网络配置方法
- 2.3 用 DHCP 客户端管理网络
- 3. 参考资料
1. 前言
限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。
2. Linux 的网络配置
2.1 传统的网络配置方法
Linux
下传统的网络通过目录 /etc/network
下的一系列文件进行配置,通常通过 /etc/network/interfaces
文件进行配置。如:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
iface eth1 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
上面的文件配置了 lo
,eth0
,eth1
:lo
配置为回环接口(loop)
,eth0
配置为通过 DHCP
协议来分配 IP
,而 eth1
使用静态 IP
。那么谁使用了 /etc/network/interfaces
?答案是 ifupdown
工具包。使用 /etc/network/interfaces
的情形下,在 /etc/init.d
目录下会对应有一个启动网络的脚本,如 /etc/init.d/S28network
:
#!/bin/sh
#
# Start the network....
#
# Debian ifupdown needs the /run/network lock directory
mkdir -p /run/network
case "$1" in
start)
printf "Starting network: "
/sbin/ifup -a
[ $? = 0 ] && echo "OK" || echo "FAIL"
;;
stop)
printf "Stopping network: "
/sbin/ifdown -a
[ $? = 0 ] && echo "OK" || echo "FAIL"
;;
restart|reload)
"$0" stop
"$0" start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?
可以看到,上面的启动脚本通过 ifup
和 ifdown
工具来启停网口。它们都是用了 /etc/network/interfaces
配置文件:
# strace ifdown eth0
[......]
openat(AT_FDCWD, "/etc/network/interfaces", O_RDONLY) = 3
[......]
# strace ifup eth0
[......]
openat(AT_FDCWD, "/etc/network/interfaces", O_RDONLY) = 3
[......]
顺便说一句,ifconfig
和 /etc/network/interfaces
配置文件没有任何关系,ifconfig
的任何修改都是临时的。
2.2 新的网络配置方法
现代系统(如 Ubuntu 18.04
及以后),使用 netplan
配置工具用于网络接口的配置,通常会使用 systemd
或 NetworkManager
来管理网络接口,而不是依赖 ifup/ifdown
或 ifconfig
。
ifconfig
仍然可以用来查看网络状态和临时配置,但网络接口的配置会通过 netplan
配置文件来进行管理。
2.3 用 DHCP 客户端管理网络
当系统中使用 DHCP 客户端
(如 dhcpcd
)时,默认配置下会通过 DHCP
协议为系统中所有网络接口分配 IP
,但也可以显式的将接口配置为静态 IP
,或者将接口排除在 DHCP 客户端
的管理之外。以 dhcpcd
为例来说明如何如何将网路接口配置为静态 IP
。通过修改 dhcpcd
的配置文件 /etc/dhcpcd.conf
,将 eth1
排除在 dhcpcd
的管理之外:
denyinterfaces eth1
或者,将 eth1
配置为静态 IP
:
interface eth1
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
最好不要同时使用 ifupdown
和 dhcp
客户端工具,如果使用,也不要让同一个网络接口同时被 ifupdown
和 dhcp
客户端工具管理。
3. 参考资料
[1] https://manpages.debian.org/buster/dhcpcd5/dhcpcd.conf.5.en.html