Debian教程

Debian网络配置

无论是用于个人桌面还是企业服务器,Debian都能提供强大的网络功能。本教程将详细介绍Debian的网络配置,包括基本网络架构、现代的桌面网络配置、没有图像界面的现代网络配置、云环境下的现代网络配置以及底层网络配置等方面。

一、基本网络架构

现代Debian操作系统中的基本网络架构如下:

网络配置工具一览表:

软件包 流行度 大小 类型 说明
network-manager V:390, I:455 15414 配置::NM NetworkManager(守卫进程):自动管理网络
network-manager-gnome V:121, I:368 5583 配置::NM NetworkManager(GNOME前端)
netplan.io V:1, I:5 249 config::NM+networkd Netplan (generator): Unified, declarative interface to NetworkManager and systemd-networkd backends
ifupdown V:593, I:980 199 配置::ifupdown 用来启动/关闭网络的标准工具(Debian特有)
isc-dhcp-client V:217, I:980 2866 配置::底层 DHCP客户端
pppoeconf V:0, I:5 186 配置::辅助 配置助手,以便于使用PPPoE连接
wpasupplicant V:346, I:509 3862 配置::辅助 WPA和WPA2客户端支持(IEEE 802.11i)
wpagui V:0, I:1 774 配置::辅助 wpa_supplicant Qt 图形界面客户端
wireless-tools V:174, I:241 292 配置::辅助 操控Linux无线扩展的工具
iw V:35, I:472 302 配置::辅助 配置 Linux 无线设备的工具
iproute2 V:727, I:970 3597 配置::iproute2 iproute2, IPv6和其他高级网络配置:ip(8),tc(8)等等
iptables V:315, I:740 2414 配置::Netfilter 封包过滤和网络地址转换管理工具(Netfilter)
nftables V:101, I:675 182 配置::Netfilter administration tools for packet filtering and NAT (Netfilter) (successor to {ip,ip6,arp,eb}tables)
iputils-ping V:200, I:997 120 测试 测试能否连接远程主机,通过主机名或IP 地址(iproute2)
iputils-arping V:3, I:39 49 测试 测试能否连接远程主机,通过ARP地址
iputils-tracepath V:2, I:31 45 测试 跟踪访问远程主机的路径
ethtool V:94, I:268 739 测试 显示或更改以太网设备的设定
mtr-tiny V:5, I:47 156 测试::底层 追踪连接远程主机的路径(文本界面)
mtr V:5, I:42 209 测试::底层 追踪连接远程主机的路径(文本界面和GTK界面)
gnome-nettool V:0, I:18 2492 测试::底层 获取常见网络信息的工具(GNOME)
nmap V:26, I:202 4498 测试::底层 网络映射/端口扫描(Nmap,控制台)
tcpdump V:17, I:178 1340 测试::底层 网络流量分析(Tcpdump,控制台)
wireshark I:45 10514 测试::底层 网络流量分析(Wireshark,GTK)
tshark V:2, I:25 501 测试::底层 网络流量分析(控制台)
tcptrace V:0, I:2 401 测试::底层 根据tcpdump的输出生成的连接数据统计
snort V:0, I:0 2203 测试::底层 灵活的网络入侵侦测系统(Snort)
ntopng V:0, I:1 15904 测试::底层 在网页浏览器中展示网络流量
dnsutils V:18, I:293 272 测试::底层 BIND软件包提供的网络客户端程序:nslookup(8),nsupdate(8),dig(8)
dlint V:0, I:3 53 测试::底层 利用域名服务器查询来查看DNS域信息
dnstracer V:0, I:1 59 测试::底层 跟踪DNS查询直至源头

1、主机名解析

主机名解析,目前也是由 NSS (名字服务转换 Name Service Switch) 机制来支持。这个解析的流程如下。

1、"/etc/nsswitch.conf" 文件里的 "hosts: files dns" 这段规定主机名解析顺序。 (代替 "/etc/host.conf" 文件里的"order" 这段原有的功能。)

2、files 方式首先被调用。如果主机名在 "/etc/hosts" 文件里面发现,则返回所有有效地址并退出。 ( "/etc/host.conf" 文件包含 "multi on".)

3、dns 方式被调用。如果主机名通过查询 "/etc/resolv.conf" 文件里面写的 互联网域名系统 Domain Name System (DNS) 来找到,则返回所有有效地址并退出。

一台典型的工作站在安装时可能会将主机名设置为 "host_name",并将可选域名设置为空字符串。这样,"/etc/hosts "就会如下所示:

127.0.0.1 localhost
127.0.1.1 host_name
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

每一行由 IP 地址 开始,接下来是相关联的主机名。

在这个例子的第二行 127.0.1.1 IP 地址也许不会在其它类 Unix 系统发现。Debian Installer 为没有永久 IP 地址的系统创建这个条目,作为某些软件(如 GNOME)的一个变通方法。

  • 对于有永久 IP 地址的系统,这个永久 IP 地址应当代替这里的 127.0.1.1。
  • 对于有永久 IP 地址和有 域名系统 Domain Name System (DNS)提供完全资格域名 fully qualified domain name (FQDN) 的系统,规范名 host_name.domain_name 应当被用来代替 host_name.

如果 resolvconf 软件包没有安装,"/etc/resolv.conf" 是一个静态文件。如果安装了,它是一个符号链接。此外,它包含有解析策略的初始化信息。如 DNS 是 IP="192.168.11.1",则包含如下。

nameserver 192.168.11.1

resolvconf 软件包使这个 "/etc/resolv.conf" 文件成为一个符号链接,并通过钩子脚本自动管理其内容。

对于典型的 adhoc 局域网环境中的 PC 工作站,除了基本的文件和 dns 方法外,还可以通过组播 DNS (mDNS) 解析主机名。

  • Avahi 提供 Debian 下的组播 DNS 发现框架;
  • 它和 Apple Bonjour / Apple Rendezvous 相当;
  • libnss-mdns 插件包提供 mDNS 的主机名解析,GNU C 库 (glibc)的 GNU 名字服务转换 Name Service Switch (NSS) 功能支持 mDNS;
  • /etc/nsswitch.conf "文件中应包含类似 "hosts: files mdns4_minimal [NOTFOUND=return] dns"的说明。使用 IPv4 地址 "224.0.0.251 "或 IPv6 地址 "FF02::FB "在多播 UDP 数据包中发送 mDNS 查询消息,即可解析后缀为".local "伪顶级域的主机名。

注意:

  • 域名系统 Domain Name System 中的扩展通用顶级域名 expansion of generic Top-Level Domains (gTLD) 还在进行中。在局域网内,选择一个域名时,请提防名字冲突 name collision;
  • 使用 libnss-resolve 和 systemd-resolved、libnss-myhostname 或 libnss-mymachine 等软件包,并在"/etc/nswitch.conf "文件的 "hosts "行中列出 coressponding 列表,可以覆盖上文讨论的传统网络配置。

2、网络接口名称

systemd 使用"enp0s25" 之类的 "可预测网络接口名称"。

3、局域网网络地址范围

让我们重新提醒下在 rfc1918 里规定的局域网 local area networks (LANs)IPv4 32 位地址在各类地址的保留范围. 这些地址保证不会与因特网上专有的地址冲突。

注意:IP 地址书写中有冒号的是 IPv6 地址,例如,"::1" 是 localhost 本地主机。

网络地址范围列表:

类别 网络地址 子网掩码 子网掩码/位数 子网数
A 10.x.x.x 255.0.0.0 /8 1
B 172.16.x.x — 172.31.x.x 255.255.0.0 /16 16
C 192.168.0.x — 192.168.255.x 255.255.255.0 /24 256

注意:如果这些地址分配到一个主机,那么这个主机一定不能够直接访问互联网,必须通过一个作为网关的代理服务或通过 网络地址转换 Network Address Translation (NAT). 消费局域网环境,宽带路由器通常使用 NAT。

4、网络设备支持

尽管 Debian 系统支持大多数硬件设备,但依旧有一些网络设备需要 DFSG non-free 固件来支持它们。

二、现代的桌面网络配置

对于使用 systemd 的现代 Debian 桌面系统,网络接口通常由两个服务进行初始化:lo 接口通常在“networking.service”处理,而其它接口则由“NetworkManager.service”处理。

Debian 可以通过后台守护进程(daemon)管理软件来管理网络连接,例如 NetworkManager (NM)(network-manager 和相关软件包)。

  • 它们有自己的 GUI 和命令行程序来作为用户界面;
  • 它们有自己的后台守护进程(daemon)作为它们的系统后端;
  • 它们使你可以简单地将系统连接到网络;
  • 它们使你可以简单地管理有线和无线网络的配置;
  • 它们允许你配置网络而不依赖传统的 ifupdown 软件包。

注意:不要在服务器上使用这些自动网络配置工具。它们主要针对于笔记本电脑上的移动桌面用户。

这些现代的网络配置工具需要进行适当的配置,以避免与传统 ifupdown 软件包发生冲突,它的配置文件位于 “/etc/network/interfaces”。

1、图形界面的网络配置工具

Debian 系统 NM 的官方文档位于 “/usr/share/doc/network-manager/README.Debian” 。本质上,如下操作即可完成桌面的网络配置。

通过下列命令使桌面用户 foo 归属 “netdev” 组(另外,例如 GNOME 和 KDE 这样的现代桌面环境会通过 D-bus 自动完成该操作)。

$ sudo usermod -a -G foo netdev

使 “/etc/network/interfaces” 的配置保持下面那样简洁。

auto lo
iface lo inet loopback

通过下列命令重新启动 NM。

$ sudo systemctl restart network-manager

通过图形界面配置网络。

注意:

  • 只有不列在 “/etc/network/interfaces” 中的接口会被 NM 管理,以避免与 ifupdown 的冲突;
  • 如果你想扩展 NM 的网络配置功能,请寻找适当的插件模块和补充软件包,例如 network-manager-openconnect、network-manager-openvpn-gnome、network-manager-pptp-gnome、mobile-broadband-provider-info、gnome-bluetooth 等等。

三、没有图像界面

使用 systemd 的系统中,可以在 /etc/systemd/network/ 里配置网络。参见 systemd-resolved(8)、resolved.conf(5) 和 systemd-networkd(8)。这个允许在没有图像界面的情况下配置现代网络。

DHCP 客户端的配置可以通过创建 "/etc/systemd/network/dhcp.network" 文件来进行设置。例如:

[Match]
Name=en*
[Network]
DHCP=yes

一个静态网络配置能够通过创建 "/etc/systemd/network/static.network" 来设置.比如:

[Match]
Name=en*
[Network]
Address=192.168.0.15/24
Gateway=192.168.0.1

1、使用DHCP

可通过创建数据源文件"/etc/netplan/50-dhcp.yaml "来设置 DHCP 客户端配置:

network:
version: 2
ethernets:
all-en:
match:
name: "en*"
dhcp4: true
dhcp6: true

2、使用静态 IP 的现代云网络配置

可通过创建数据源文件"/etc/netplan/50-static.yml "来设置静态网络配置:

network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.0.15/24
routes:
- to: default
via: 192.168.0.1

3、使用 Network Manger 的现代云网络配置

通过创建数据源文件"/etc/netplan/00-network-manager.yml",可以使用 Network Manger 基础架构设置网络客户端配置:

network:
version: 2
renderer: NetworkManager

四、底层网络配置

在 Linux 上的底层网络配置,使用 iproute2 程序 (ip(8), …) .

1、Iproute2 命令

Iproute2 命令集提供完整的底层网络配置能力。有个从旧的 net-tools 命令集到新的 iproute2 命令集的转换表。

从旧的 net-tools 命令集到新的 iproute2 命令集转换表:

旧的 net-tools 新的 iproute2 操作
ifconfig(8) ip addr 一个设备上的协议(IP 或 IPv6)地址
route(8) ip route 路由表条目
arp(8) ip neigh ARP 或 NDISC 缓存条目
ipmaddr ip maddr 多播地址
iptunnel ip tunnel IP 隧道
nameif(8) ifrename(8) 基于 MAC 地址的网络接口名
mii-tool(8) ethtool(8) 以太网设备设置

2、安全的底层网络操作

可以按下面的方式安全的使用底层网络命令,这些命令不会改变网络配置。

底层网络命令列表:

命令 说明
ip addr show 显示活动的网络接口连接和地址状态
route -n 用数字地址显示全部路由表
ip route show 用数字地址显示全部路由表
arp 显示当前 ARP 缓存表的内容
ip neigh 显示当前 ARP 缓存表的内容
plog 显示 ppp 后台守护进程(daemon)日志
ping yahoo.com 检查到 "yahoo.com" 的因特网连接
whois yahoo.com 在域名数据库里面检查谁注册了 "yahoo.com"
traceroute yahoo.com 跟踪到 "yahoo.com" 的因特网连接
tracepath yahoo.com 跟踪到 "yahoo.com" 的因特网连接
mtr yahoo.com 跟踪到 "yahoo.com" 的因特网连接(重复的)
dig [@dns-server.com] example.com [{a|mx|any}] 查询由 "dns-server.com" 提供服务的 "example.com" 域名的 DNS 记录: "a", "mx" 或 "any" 记录
iptables -L -n 查看包过滤
netstat -a 找出所有打开的端口
netstat -l --inet 找出监听端口
netstat -ln --tcp 找出 TCP 监听端口(数字的)
dlint example.com 查询 "example.com" 的 DNS zone 信息

部分底层网络配置工具放在 "/usr/sbin/" 目录。你可以像 "/usr/sbin/ifconfig" 这样使用完整命令路径,或把 "/usr/sbin" 加到 "~/.bashrc" 文件列出的 "$PATH" 环境变量里 。

广告合作
QQ群号:707632017

温馨提示:

1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com。(#改为@)

2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

目录