网络设置¶
- 关于 Debian 专属的网络手册,请查看 Debian 管理员手册—网络配置。
systemd环境下,可以用networkd来配置网络。请参考systemd-networkd(8)。
1. 基本网络架构¶
给出一些网络配置工具:
- 网络管理:
network-manager、network-manager-gnome、ifupdown - DHCP/WiFi:
isc-dhcp-client、wpasupplicant、wireless-tools - 诊断工具:
iw、iproute2、iptables、nftables - 测试工具:
iputils-ping、ethtool、nmap、tcpdump - 高级工具:
wireshark、dnsutils
主机名的解析流程为:
/etc/nsswitch.conf文件里的hosts: files dns这段规定主机名解析顺序。(代替/etc/host.conf文件里的order这段原有的功能。)files方式首先被调用。在/etc/hosts文件里面寻找主机名。(/etc/host.conf文件包含multi on。)dns方式被调用。查询/etc/resolv.conf文件里面写的互联网域名系统(Domain Name System,DNS)。
下面则是一些其他配置:
-
如果有永久 IP 地址,文件
/etc/hosts内应该有一行如下: -
如果
resolvconf软件包没有安装,/etc/resolv.conf是一个静态文件。 -
对于典型 adhoc 局域网环境下的 PC 工作站,除了基本的
files和dns方式之外,主机名还能够通过 Multicast DNS(mDNS)进行解析。libnss-mdns插件包提供 mDNS 的主机名解析,GNU C 库(glibc)的 GNU 名字服务转换 Name Service Switch(NSS)功能支持 mDNS。- 此时
/etc/nsswitch.conf文件应当有像hosts: files mdns4_minimal [NOTFOUND=return] dns这样的一段(其它配置参见/usr/share/doc/libnss-mdns/README.Debian)。
-
可以使用
systemd提供的 NSS (Name Service Switch) 模块来替代传统的网络主机名解析方式。- 可以联合的模块:
libnss-resolve、libnss-myhostname、libnss-mymachines - 更多信息参见
nss-resolve(8)、systemd-resolved(8)、nss-myhostname(8)和nss-mymachines(8)
- 可以联合的模块:
-
systemd使用enp0s25之类的“可预测网络接口名称”。 - 私有网络地址范围:
10.0.0.0/8、172.16.0.0/12、192.168.0.0/16
2. 现代的桌面网络配置¶
对于使用 systemd 的现代 Debian 桌面系统,网络接口通常由两个服务进行初始化:lo 接口通常在 networking.service 处理,而其它接口则由 NetworkManager.service 处理。
-
Debian 可以通过 daemon 管理软件来管理网络连接,例如
network-manager和相关软件包。注意(只在 Dibian 系操作系统上)
不要在服务器上使用自动网络配置工具。它们主要针对于笔记本电脑上的移动桌面用户。
传统 ifupdown 软件包的配置文件位于 /etc/network/interfaces。
2.1. 图形界面的网络配置工具¶
Debian 系统 NM 的官方文档位于 /usr/share/doc/network-manager/README.Debian。
如下操作即可完成桌面环境的网络配置:
-
使桌面用户 foo 归属 “netdev” 组(GNOME 和 KDE 这样的现代桌面环境会通过 D-bus 自动完成该操作)
-
使
/etc/network/interfaces的配置保持简洁 -
重启 NM 后,用图形界面配置网络
注意
只有不列在 /etc/network/interfaces 中的接口会被 NM 管理,以避免与 ifupdown 的冲突。
提示
如果你想扩展 NM 的网络配置功能,请寻找适当的插件模块和补充软件包,例如 network-manager-openconnect、network-manager-openvpn-gnome、network-manager-pptp-gnome、mobile-broadband-provider-info、gnome-bluetooth 等等。
2.2. 没有图形界面的网络配置¶
使用 systemd 的系统中,可以在 /etc/systemd/network/ 里配置网络。参见 systemd-resolved(8)、resolved.conf(5) 和 systemd-networkd(8)。
-
DHCP 客户端(静态网络)的配置可以通过创建
/etc/systemd/network/dhcp.network(.../static.network)文件来进行设置
2.3. 现代云网络配置¶
云的现代网络配置可以使用 cloud-init 和 netplan.io 软件包。
- 参见:
netplan(5),netplan-generate(8)和netplan-apply(8)。 - 也可以参见 Cloud-init documentation(特别是围绕 "Configuration sources" 和 "Netplan Passthrough")了解
cloud-init是怎样能够集成替代的数据源到netplan.io配置。
3. 底层网络配置¶
在 Linux 上的底层网络配置,使用 iproute2 程序(ip(8))。
3.1. iproute2 命令¶
-
从旧的 net-tools 命令集到新的 iproute2 命令集转换表:
旧的 net-tools新的 iproute2ifconfig(8)ip addrroute(8)ip routearp(8)ip neighipmaddrip maddriptunnelip tunnelnameif(8)ifrename(8)mii-tool(8)ethtool(8)
参见 ip(8) 和 Linux 高级路由和流量控制(Linux Advanced Routing & Traffic Control)
3.2. 底层网络命令列表¶
你可以按下面的方式安全的使用底层网络命令,这些命令不会改变网络配置。
- 网络接口和地址管理:
ip addr show、ip route show、route -n - ARP缓存管理:
arp、ip neigh - 网络连接测试:
ping yahoo.com、traceroute yahoo.com、tracepath yahoo.com、mtr yahoo.com - DNS查询:
dig [@dns-server.com] example.com [{a|mx|any}]、whois yahoo.com、dlint example.com - 网络连接和端口监控:
netstat -a、netstat -l --inet、netstat -ln --tcp - 防火墙管理:
iptables -L -n - PPP连接管理:
plog
4. 网络优化¶
通用的网络优化超出了本文的范围。仅提及消费等级连接相关的主题。
-
网络优化工具列表
- 详细分析单个连接:
iftop - 需要测试最大带宽:
iperf - 需要长期监控:
bmon或bwm-ng - 快速检查状态:
ifstat
- 详细分析单个连接:
-
找出最佳 MUT
-
路径 MTU (PMTU) 发现的测试命令:
-
tracepath(8)能自动完成 PMTU 发现机制 - 最大分片大小 (MSS) 是另外一种衡量包大小的方法
-
注意
基于 iptables(8) 的优化,能够通过 MSS 来压缩包大小,路由器会用到 MMS 。参见 iptables(8) 中的“TCPMSS”。
5. Netfilter 网络过滤框架¶
Netfilter 是 Linux 内核模块提供的网络包过滤框架,提供状态防火墙和网络地址转换(NAT)功能。