目录
提示 | |
---|---|
关于GNU/Linux网络的通用手册,请查看Linux 网络管理员手册。 |
提示 | |
---|---|
关于Debian专属的网络手册,请查看Debian管理员手册—网络配置。 |
警告 | |
---|---|
本章是基于 2013 年发布的 Debian 7.0 ( |
提示 | |
---|---|
尽管本手册仍用旧的
ifconfig(8)
命令和IPv4协议当作网络配置的例子,Debian在 |
让我们来回顾一下现代Debian操作系统中的基本网络架构。
表 5.1. 网络配置工具一览表
软件包 | 流行度 | 大小 | 类型 | 说明 |
---|---|---|---|---|
ifupdown
|
V:566, I:995 | 204 | 配置::ifupdown | 用来启动/关闭网络的标准工具(Debian特有) |
ifplugd
|
V:4, I:19 | 209 | 同上 | 自动管理有线网络 |
ifupdown-extra
|
V:0, I:1 | 96 | 同上 |
网络测试脚本,加强"ifupdown "软件包的功能
|
ifmetric
|
V:0, I:1 | 36 | 同上 | 设置网络接口的路由度量 |
guessnet
|
V:0, I:1 | 402 | 同上 |
脚本文件,利用"/etc/network/interfaces "文件来加强"ifupdown "的功能
|
ifscheme
|
V:0, I:0 | 58 | 同上 |
映射脚本文件,增强"ifupdown "软件包的功能
|
ifupdown-scripts-zg2
|
V:0, I:0 | 147 | 同上 | Zugschlus写的脚本,用于ifupdown手动管理 |
network-manager
|
V:367, I:472 | 11192 | 配置::NM | NetworkManager(守卫进程):自动管理网络 |
network-manager-gnome
|
V:246, I:416 | 6132 | 同上 | NetworkManager(GNOME前端) |
wicd
|
I:34 | 34 | 配置::wicd | 有线和无线网络管理器(元软件包) |
wicd-cli
|
V:0, I:2 | 58 | 同上 | 有线和无线网络管理器(命令行客户端) |
wicd-curses
|
V:1, I:5 | 174 | 同上 | 有线和无线网络管理器(文本界面客户端) |
wicd-daemon
|
V:30, I:39 | 951 | 同上 | 有线和无线网络管理器(守护进程) |
wicd-gtk
|
V:24, I:36 | 573 | 同上 | 有线和无线网络管理器(GTK+客户端) |
iptables
|
V:243, I:993 | 1525 | 配置::Netfilter | 封包过滤和网络地址转换管理工具(Netfilter) |
iproute
|
V:134, I:531 | 23 | 配置::iproute2 | iproute2, IPv6和其他高级网络配置:ip(8),tc(8)等等 |
ifrename
|
V:0, I:2 | 121 | 同上 | 根据不同的静态标准来重命名网络接口:ifrename(8) |
ethtool
|
V:93, I:263 | 331 | 同上 | 显示或更改以太网设备的设定 |
iputils-ping
|
V:262, I:996 | 111 | 测试::iproute2 | 测试能否连接远程主机,通过主机名或IP 地址(iproute2) |
iputils-arping
|
V:67, I:390 | 58 | 同上 | 测试能否连接远程主机,通过ARP地址 |
iputils-tracepath
|
V:17, I:288 | 75 | 同上 | 跟踪访问远程主机的路径 |
net-tools
|
V:421, I:998 | 934 | 配置::net-tools | NET-3网络工具箱(net-tools,IPv4网络配置):ifconfig(8)等等。 |
inetutils-ping
|
V:0, I:1 | 337 | 测试::net-tools | 测试能否连接远程主机,通过hostname或IP 地址(传统方式,GNU) |
arping
|
V:2, I:28 | 103 | 同上 | 测试能否连接远程主机,通过ARP地址(传统方法) |
traceroute
|
V:75, I:992 | 154 | 同上 | 跟踪连接远程主机的路径(传统方法,控制台) |
isc-dhcp-client
|
V:421, I:960 | 651 | 配置::底层 | DHCP客户端 |
wpasupplicant
|
V:292, I:547 | 2531 | 同上 | WPA和WPA2客户端支持(IEEE 802.11i) |
wpagui
|
V:0, I:4 | 781 | 同上 | wpa_supplicant Qt 图形界面客户端 |
wireless-tools
|
V:86, I:276 | 265 | 同上 | 操控Linux无线扩展的工具 |
ppp
|
V:177, I:519 | 927 | 同上 |
使用chat 连接PPP/PPPoE
|
pppoeconf
|
V:0, I:12 | 290 | 配置::辅助 | 配置助手,以便于使用PPPoE连接 |
pppconfig
|
V:1, I:4 | 805 | 同上 |
配置助手,以便于使用chat 连接PPP
|
wvdial
|
V:0, I:8 | 276 | 同上 |
配置助手,以便于使用wvdial 和ppp 连接PPP
|
mtr-tiny
|
V:7, I:60 | 105 | 测试::底层 | 追踪连接远程主机的路径(文本界面) |
mtr
|
V:6, I:40 | 150 | 同上 | 追踪连接远程主机的路径(文本界面和GTK+界面) |
gnome-nettool
|
V:14, I:283 | 2111 | 同上 | 获取常见网络信息的工具(GNOME) |
nmap
|
V:50, I:452 | 22296 | 同上 | 网络映射/端口扫描(Nmap,控制台) |
zenmap
|
V:3, I:12 | 2824 | 同上 | 网络映射/端口扫描(GTK+) |
tcpdump
|
V:22, I:198 | 1153 | 同上 | 网络流量分析(Tcpdump,控制台) |
wireshark
|
V:5, I:65 | 74 | 同上 | 网络流量分析(Wireshark,GTK+) |
tshark
|
V:3, I:37 | 365 | 同上 | 网络流量分析(控制台) |
nagios3
|
I:8 | NOT_FOUND | 同上 | 主机、服务、网络监控及管理系统(Nagios) |
tcptrace
|
V:0, I:1 | 392 | 同上 |
根据tcpdump 的输出生成的连接数据统计
|
snort
|
V:1, I:1 | 1920 | 同上 | 灵活的网络入侵侦测系统(Snort) |
ntopng
|
V:0, I:1 | 578 | 同上 | 在网页浏览器中展示网络流量 |
dnsutils
|
V:90, I:901 | 462 | 同上 | BIND软件包提供的网络客户端程序:nslookup(8),nsupdate(8),dig(8) |
dlint
|
V:1, I:22 | 96 | 同上 | 利用域名服务器查询来查看DNS域信息 |
dnstracer
|
V:0, I:2 | 56 | 同上 | 跟踪DNS查询直至源头 |
主机名解析,目前也是由 NSS (名字服务转换 Name Service Switch) 机制来支持。这个解析的流程如下。
"/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) 来找到,则返回所有有效地址并退出。
例如, "/etc/hosts
" 看起来如下。
127.0.0.1 localhost 127.0.1.1 <host_name> # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
在这个例子的第二行 127.0.1.1
IP 地址也许不会在其它类 Unix 系统发现。Debian Installer 为没有永久 IP
地址的系统创建这个条目,作为某些软件(如 GNOME)的一个变通方法,见文档 bug
#719621.
<host_name> 匹配在"/etc/hostname
"里定义的主机名。
对于有永久 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 工作站,除了基本的 files
和
dns
方式之外,主机名还能够通过组播 DNS (mDNS, 零配置网络 Zeroconf)进行解析。
Avahi 提供 Debian 下的组播 DNS 发现框架。
libnss-mdns
插件包提供 mDNS 的主机名解析,GNU C 库 (glibc)的 GNU 名字服务转换
Name Service Switch (NSS) 功能支持 mDNS。
"/etc/nsswitch.conf
" 文件应当有像 "hosts: files
mdns4_minimal [NOTFOUND=return] dns mdns4
" 这样的一段.
".local"结尾的主机名,使用 pseudo-top-level domain (TLD) 来解析.
mDNS IPv4 本地连接组播地址 "224.0.0.251
" 或它相应的 IPv6 地址
"FF02::FB
" 被用来作为 ".local
" 结尾名字的 DNS
查询。
较老的 Windows 系统安装 winbind
软件包来提供旧的 NETBios over TCP/IP
主机名解析。为启用这个功能,"/etc/nsswitch.conf
" 文件应当有这样的一段:
"hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
wins
"。 (现代 Windows 系统通常使用 dns
方式来进行主机名解析。)
注意 | |
---|---|
域名系统 Domain Name System 中的扩展通用顶级域名 expansion of generic Top-Level Domains (gTLD) 还在进行中。在局域网内,选择一个域名时,请提防名字冲突 name collision。 |
网络接口名称,比如说 eth0
, 是在 Linux
内核里分配给每一个硬件的,当这个硬件被内核发现的时候,通过用户层的配置机制udev
(参见 第 3.3 节 “udev 系统”)来分配.网卡接口名称也就是
ifup(8)
和
interfaces(5)里的
physical interface。
为了保证每个网络接口名称在每次重启后一致,会用到 MAC 地址
等,有一个规则文件"/etc/udev/rules.d/70-persistent-net.rules
".
这个文件是由"/lib/udev/write_net_rules
" 程序自动生成,是由
"persistent-net-generator.rules
"
规则文件来运行. 你可以修改该文件来改变命名规则。
小心 | |
---|---|
当编辑 " |
让我们重新提醒下在 rfc1918 里规定的局域网 local area networks (LANs)IPv4 32 位地址在各类地址的保留范围. 这些地址保证不会与因特网上专有的地址冲突。
表 5.2. 网络地址范围列表
类别 | 网络地址 | 子网掩码 | 子网掩码/位数 | # 子网数 |
---|---|---|---|---|
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。 |
尽管 Debian 系统支持大多数硬件设备,但依旧有一些网络设备需要 DFSG non-free 固件来支持它们。参见 第 9.9.6 节 “硬件驱动和固件”。
Debian squeeze
和新的发行版都可以通过后台守护进程(daemon)管理软件来管理网络连接,例如 NetworkManager (NM)(network-manager
和相关软件包)或 Wicd(wicd 和相关软件包)。
它们有自己的 GUI 和命令行程序来作为用户界面。
它们有自己的后台守护进程(daemon)作为它们的系统后端。
它们使你可以简单地将系统连接到网络。
它们使你可以简单地管理有线和无线网络的配置。
它们允许你配置网络而不依赖传统的 ifupdown
软件包。
注意 | |
---|---|
不要在服务器上使用这些自动网络配置工具。它们主要针对于笔记本电脑上的移动桌面用户。 |
这些现代的网络配置工具需要进行适当的配置,以避免与传统 ifupdown
软件包发生冲突,它的配置文件位于
“/etc/network/interfaces
”。
提示 | |
---|---|
使用 systemd 的系统中,可以在
|
注意 | |
---|---|
这些自动网络配置工具的一些功能可能会带来令人烦扰的问题。它们不像传统的 |
Debian 系统 NM 和 Wicd 的官方文档分别位于
“/usr/share/doc/network-manager/README.Debian
” 和
“/usr/share/doc/wicd/README.Debian
”。
本质上,如下操作即可完成桌面的网络配置。
通过下列命令使桌面用户 foo
归属 “netdev
” 组(另外,例如
GNOME 和 KDE 这样的现代桌面环境会通过 D-bus 自动完成该操作)。
$ sudo adduser foo netdev
使 “/etc/network/interfaces
” 的配置保持下面那样简洁。
auto lo iface lo inet loopback
通过下列命令重新启动 NM 或 Wicd。
$ sudo /etc/init.d/network-manager restart
$ sudo /etc/init.d/wicd restart
通过图形界面配置网络。
注意 | |
---|---|
只有不列在
“ |
提示 | |
---|---|
如果你想扩展 NM 的网络配置功能,请寻找适当的插件模块和补充软件包,例如
|
小心 | |
---|---|
这些自动网络配置工具可能无法兼容 “ |
如果 第 5.2 节 “现代的桌面网络配置” 中描述的方法无法满足你的需要,那你应该使用结合了许多普通工具的传统网络连接和配置方法。
传统网络连接的每个方法都是特定的(参见 第 5.4 节 “网络连接方式(传统)”)。
用于 Linux 底层网络配置的程序有两种类型(参见 第 5.7.1 节 “Iproute2 命令”)。
来自 Linux NET-3 网络系统的旧 net-tools 程序(ifconfig(8)……)。它们中的大多数都已经过时了。
来自现在的 Linux 网络系统的新 Linux iproute2 程序(ip(8)……)。
尽管底层程序十分强大,但它们使用繁琐。因此创建了高层网络配置系统。
ifupdown
软件包是 Debian 中这种高层网络配置系统的实际标准。它让你可以简单地通过例如
“ifup eth0
” 这样的命令来打开网络。它的配置文件位于
“/etc/network/interfaces
” 中并且其典型内容如下。
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
resolvconf
软件包是为了使 ifupdown
系统支持自动重写解析器配置文件 “/etc/resolv.conf
” 来使网络地址解析平滑地重新配置。现在,大多数
Debian 网络配置软件包都使用了 resolvconf
软件包(参见
“/usr/share/doc/resolvconf/README.Debian
”)。
ifupdown
软件包的辅助脚本,例如
ifplugd
、guessnet
、ifscheme
等,是为了进行网络环境的自动动态配置,例如位于有线局域网中的移动电脑。这些相对来说比较难使用,但在当前的
ifupdown
系统下工作良好。
详细的案例参见 第 5.5 节 “使用 ifupdown 进行基本网络配置(旧)” 和 第 5.6 节 “使用 ifupdown 的高级网络配置(旧)”。
小心 | |
---|---|
在这节描述的连接测试方式仅仅用于测试目的。不应当直接用于日常的网络连接。建议你使用 NM, Wicd, 或
|
一台电脑典型的网络连接方式和连接路径,能够使用下面的内容概述。
表 5.3. 网络连接方式和连接路径列表
PC | 连接方式 | 连接路径 |
---|---|---|
串口 (ppp0 )
|
PPP | ⇔ modem ⇔ POTS ⇔ 拨号接入点 ⇔ ISP |
以太网口 (eth0 )
|
PPPoE/DHCP/Static | ⇔ 宽带-modem ⇔ 宽带链路 ⇔ 宽带接入点 ⇔ ISP |
以太网口 (eth0 )
|
DHCP/Static | ⇔ LAN ⇔ 网络地址转换 (NAT) 的宽带路由器 (⇔ 宽带-modem …) |
每种连接方式配置脚本汇总。
表 5.4. 网络连接配置列表
连接方式 | 配置 | 后端包 |
---|---|---|
PPP | pppconfig 创建固定的 chat
|
pppconfig , ppp |
PPP (选用) | wvdialconf 创建启发式的 chat
|
ppp , wvdial |
PPPoE | pppoeconf 创建固定的 chat
|
pppoeconf , ppp |
DHCP |
在 "/etc/dhcp/dhclient.conf " 里描述
|
isc-dhcp-client
|
静态 IP (IPv4) |
在 "/etc/network/interfaces " 里描述
|
iproute 或 net-tools (旧)
|
静态 IP (IPv6) |
在 "/etc/network/interfaces " 里描述
|
iproute
|
网络连接缩略语意义如下。
注意 | |
---|---|
通过电视线缆的广域网服务,通常使用 DHCP 或 PPPoE。ADSL 和 FTTP 通常使用 PPPoE。你需要咨询你的互联网服务提供商来获得广域网连接使用的精确配置。 |
注意 | |
---|---|
当宽带路由器用来搭建家庭局域网环境时,局域网上的电脑需要使用宽带路由器上的 网络地址转换(NAT),来连接到广域网。在这样的情况下,局域网上的电脑网络接口需使用静态 IP 或者宽带路由器提供的 DHCP 服务。宽带路由器必须按 ISP 的指引来配置连接到广域网。 |
典型的现代家庭和小的商业网络,也就是局域网,使用一些消费等级的宽带路由器连接到广域网(因特网)。路由器后面的局域网通常使用路由器上运行的动态主机配置协议(DHCP) 服务端提供的服务。
仅仅需要安装 isc-dhcp-client
包为以太网提供动态主机配置协议 (DHCP)服务。
参见 dhclient.conf(5).
配置脚本 pppconfig
配置 PPP
连接,仅需要交互式的选择下面内容。
电话号码
ISP 用户名
ISP 密码
端口速率
modem 通信端口
认证方式
表 5.6. 使用 pppconfig 的 PPP 连接配置文件列表
小心 | |
---|---|
"<isp_name>" 是 " |
你可以使用下面的底层网络配置工具测试配置。
$ sudo pon <isp_name> ... $ sudo poff <isp_name>
参见 "/usr/share/doc/ppp/README.Debian.gz
".
一个不同的使用pppd(8)
方案是使用来自 wvdial
包的
wvdial(1)。代替
pppd
运行
chat(8)
来拨号和协商连接,wvdial
进行拨号和初始化协商,然后启动 pppd
进行余下操作。
配置脚本 wvdialconf
配置 PPP 连接,仅需要交互式的选择下面内容。
电话号码
ISP 用户名
ISP 密码
在大部分情况下,wvdial
能够成功建立连接并自动维护认证鉴权数据。
你可以使用下面的底层网络配置工具测试配置。
$ sudo wvdial ... $ sudo killall wvdial
参见 wvdial(1) 和 wvdial.conf(5).
当你的互联网提供商提供 PPPoE 连接,并且你决定把电脑直接连接到广域网,那你的电脑网络必须使用 PPPoE 来配置。PPPoE 表示以太网上的
PPP。配置脚本pppoeconf
交互式的配置 PPPoE 连接。
配置文件在下面。
你可以使用下面的底层网络配置工具测试配置。
$ sudo /sbin/ifconfig eth0 up $ sudo pon dsl-provider ... $ sudo poff dsl-provider $ sudo /sbin/ifconfig eth0 down
参见 "/usr/share/doc/pppoeconf/README.Debian
".
Debian 系统上的传统 TCP/IP 网络
搭建,ifupdown
软件包是作为一个上层工具来使用。有两个典型场景。
像移动电脑上的 动态 IP 系统,你可以使用 resolvconf
包搭建 TCP/IP
网络,它能够使你快速切换你的网络配置。 (参见 第 5.5.4 节 “使用 DHCP 的网络接口”).
像服务器上的 静态 IP 系统,你不需要 resolvconf
包来搭建你的 TCP/IP
网络,并保持你的系统简单(参见 第 5.5.5 节 “使用静态 IP 地址的网络接口”).
如果你想设置高级配置,这些传统的设置方法,是相当有用的。在下面的内容中发现细节。
ifupdown
包提供 Debian 系统中标准的高层网络配置框架。在本节中,我们通过
ifupdown
的简单介绍和许多典型列子来学习基本的网络配置。
ifupdown
包包含有两个命令:
ifup(8)
和
ifdown(8).
它们提供专注于"/etc/network/interfaces" 配置文件的上层网络配置。
表 5.9. 使用 ifupdown 进行基本网络配置的命令列表
命令 | 操作 |
---|---|
ifup eth0
|
如果 "iface eth0 " 节存在,使用 eth0
的配置来启动网络接口 eth0
|
ifdown eth0
|
如果 "iface eth0 " 节存在,使用 eth0 的配置来关闭网络接口
eth0
|
警告 | |
---|---|
请不要使用 ifconfig(8) 和 ip(8) 这类的底层网络配置工具命令来配置一个 up 状态的接口。 |
注意 | |
---|---|
并没有一个叫 |
在
interfaces(5)
里解释的 "/etc/network/interfaces
" 关键语法,能够用下面的表格概括。
表 5.10. "/etc/network/interfaces
" 里面的节列表
节 | 说明 |
---|---|
"auto <interface_name> "
|
当系统启动时,启动接口 < interface_name> |
"allow-auto <interface_name> "
|
同上 |
"allow-hotplug <interface_name> "
|
当内核从接口检测到一个热拔插事件时,启动接口 <interface_name> |
"iface <config_name> … " 开头的行
|
定义 <config_name> 的网络配置 |
"mapping <interface_name_glob> " 开头的行
|
定义 <config_name> 的映射值来匹配 <interface_name> |
"# " 号开始的行
|
像注释一样忽略(行尾注释不被支持) |
"\ " 反斜杠结尾的行
|
扩展配置到下一行 |
以 iface
开头行的节,有下面的语法。
iface <config_name> <address_family> <method_name> <option1> <value1> <option2> <value2> ...
对于基本配置, mapping
节没有被使用,你可以使用网络接口名作为网络配置名。 (参见 第 5.6.5 节 “映射节 mapping stanza”).
警告 | |
---|---|
在
" |
在启动系统的时候, "/etc/network/interfaces
" 文件里下面的配置条目启动了回环网络接口
lo
。 (通过 auto
节).
auto lo iface lo inet loopback
这节内容在 "/etc/network/interfaces
" 文件里面一直存在。
按 第 5.4.1 节 “以太网 DHCP 连接”
准备系统后,在"/etc/network/interfaces
" 里面,按下面的内容创建配置条目后,网络接口的
DHCP 便配置好了。
allow-hotplug eth0 iface eth0 inet dhcp
当 Linux 内核检测到物理接口 eth0
, allow-hotplug
节促使
ifup
启动接口,iface
促使 ifup
使用 DHCP 来配置接口。
在 "/etc/network/interfaces
" 文件里面创建配置条目,来配置静态 IP
网络接口。如下所示。
allow-hotplug eth0 iface eth0 inet static address 192.168.11.100 netmask 255.255.255.0 gateway 192.168.11.1 dns-domain example.com dns-nameservers 192.168.11.1
当 Linux 内核检测到 eth0
, allow-hotplug
节促使
ifup
启动接口,iface
节促使
ifup
使用静态 IP 来配置接口。
这里,我假设下面的配置。
局域网的 IP 地址范围: 192.168.11.0
-
192.168.11.255
网关的 IP 地址: 192.168.11.1
电脑的 IP 地址: 192.168.11.100
resolvconf
包:已安装
域名: "example.com
"
DNS 服务器的 IP 地址:192.168.11.1
当 resolvconf
包没有安装时,DNS 相关的配置,需要按下面的方式手工编辑
"/etc/resolv.conf
" 。
nameserver 192.168.11.1 domain example.com
小心 | |
---|---|
用在上面例子里的 IP 地址,不意味着照抄。你应当按你实际网络配置调整 IP 地址。 |
无线 LAN (简称 WLAN) 提供快速的无线连接,使用基于 IEEE 802.11 标准集的非授权无线宽带扩频通信技术。
无线接口跟以太网接口非常像,但在初始化时,要求提供一些网络 ID
和密钥数据。他们的上层网络工具差不多和以太网接口一样,除开接口名有一点点不同,按使用的不同内核驱动,像 eth1
, wlan0
, ath0
,
wifi0
……
提示 | |
---|---|
|
这里有一些需要记住的 WLAN 关键词。
表 5.11. WLAN 缩写词列表
缩略语 | 全称 | 说明 |
---|---|---|
NWID | Network ID | 802.11 之前 WaveLAN 网络使用的 16 位网络号 (强烈不赞成使用) |
(E)SSID | (Extended) Service Set Identifier | 无线接入点 (APs) 的网络名称,互连形成一个完整的 802.11 无线局域网, 域名 ID |
WEP, (WEP2) | Wired Equivalent Privacy | 使用 40 位密钥的第一代 64位(128位)无线加密标准(不赞成使用) |
WPA | Wi-Fi Protected Access | 第二代无线加密标准(实现大部分 802.11i),和 WEP 兼容 |
WPA2 | Wi-Fi Protected Access 2 | 第三代无线加密标准(完全的 802.11i),与 WEP 不兼容 |
实际选择使用的协议是由你配置的无线路由器所限制。
你需要安装 wpasupplicant
包来支持 WLAN 使用新的 WPA/WPA2.
使用 DHCP
的无线局域网连接,"/etc/network/interfaces
" 文件的条目需要按下面的内容设置。
allow-hotplug ath0 iface ath0 inet dhcp wpa-ssid homezone # hexadecimal psk is encoded from a plaintext passphrase wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
参见 "/usr/share/doc/wpasupplicant/README.modes.gz
".
你需要安装 wireless-tools
包来支撑老的 WEP
无线局域网。(你的消费等级的路由器可能仍然使用不安全的架构,但这总比没有好。)
小心 | |
---|---|
请注意:WEP 无线局域网上的网络流量,可以被其他人监听。 |
使用 DHCP
的无线局域网连接,"/etc/network/interfaces
" 文件的条目需要按下面的内容设置。
allow-hotplug eth0 iface eth0 inet dhcp wireless-essid Home wireless-key1 0123-4567-89ab-cdef wireless-key2 12345678 wireless-key3 s:password wireless-defaultkey 2 wireless-keymode open
参见 "/usr/share/doc/wireless-tools/README.Debian
".
你需要按之前的描述配置 PPP 连接(参见 第 5.4.3 节 “使用 pppconfig 的 PPP 连接”). 然后,按下面的方式给第一个 PPP 设备
ppp0
增加 “/etc/network/interfaces
"
文件里的条目.
iface ppp0 inet ppp provider <isp_name>
你需要按之前的描述先配置好使用 wvdial
的另外一种 PPP 连接(参见第 5.4.4 节 “使用 wvdialconf 的另一种可选的 PPP 连接”). 然后,按下面的方式给第一个
PPP 设备 ppp0
增加
“/etc/network/interfaces
" 文件里的条目.
iface ppp0 inet wvdial
使用 PPPoE 直接连接到广域网的电脑,你需要按之前的描述用 PPPoE 连接配置系统(参见 第 5.4.5 节 “使用 pppoeconf 的 PPPoE 以太网连接”). 然后,按下面的方式给第一个 PPPoE 设备
eth0
增加 “/etc/network/interfaces
"
文件里的条目.
allow-hotplug eth0 iface eth0 inet manual pre-up /sbin/ifconfig eth0 up up ifup ppp0=dsl down ifdown ppp0=dsl post-down /sbin/ifconfig eth0 down # The following is used internally only iface dsl inet ppp provider dsl-provider
"/etc/network/run/ifstate
" 文件保存了由
ifupdown
软件包管理的当前所有的活动网络接口的期望状态。但不幸的是,即使ifupdown
系统没有按期望的启动某个网络接口,"/etc/network/run/ifstate
"
文件仍然会把它列为激活状态。
如果对一个网络接口的 ifconfig(8) 命令输出没有如下列子中的一行,那它就不能够作为 IPV4 网络的一部分使用.
inet addr:192.168.11.2 Bcast:192.168.11.255 Mask:255.255.255.0
注意 | |
---|---|
对于连接到 PPPoE 的以太网设备, ifconfig(8) 命令的输出看起来像上面的列子。 |
当你试图重新配置接口,如 eth0
时,你必须首先用 "sudo ifdown eth0
" 命令关闭它.
这将从"/etc/network/run/ifstate
" 文件里面移除
eth0
条目。 (如果 eth0
之前没有被适当配置,或没有激活,这个命令将导致出现一些错误信息。迄今为止,对于简单的单用户工作站,在任何时间执行这个操作,看起来都是安全的。)
你现在可以按需要重新配置网络接口 eth0
,重写
"/etc/network/interfaces
" 文件的内容。
然后,你可以使用 "sudo ifup
eth0
" 命令,重新激活 eth0
。
提示 | |
---|---|
你可以简单的执行 " |
ifupdown-extra
包提供简易的网络连接测试,和 ifupdown
包一道使用.
network-test(1) 命令能够在 shell 里使用。
自动脚本将运行每一个 ifup
执行的命令。
network-test
命令把你从麻烦的执行分析网络问题的底层命令中解放出来。
自动脚本安装在 " /etc/network/*/
"并执行下面的操作。
检查网络线缆连接
检查重复 IP 地址使用
按 "/etc/network/routes
" 的定义,建立系统静态路由
检查网络的网关是否可以到达
在 "/var/log/syslog
" 文件里面记录结果
系统日志记录对管理远程系统的网络问题非常有用。
提示 | |
---|---|
|
ifupdown
软件包,使用其高级用法,其功能就能够超出在 第 5.5 节 “使用 ifupdown 进行基本网络配置(旧)” 所描述的内容。
描述在这里的这些功能是完全可选的。我,由于懒惰和极简主义,几乎不使用这些令人烦扰的东西。
小心 | |
---|---|
如果你不能够通过 第 5.5 节 “使用 ifupdown 进行基本网络配置(旧)” 里的信息建立网络连接,使用下面的信息,你就会使你的情形变得比较糟糕。 |
ifplugd
软件包是一个老的自动网络配置工具,它仅能够管理以太网连接。解决了移动 PC
等拔插以太网线缆的问题。如果你有安装 NetworkManager 或
Wicd (参见 第 5.2 节 “现代的桌面网络配置”),就不需要这个软件包。
这个软件包运行一个后台守护进程(daemon) 来代替 auto 或 allow-hotplug 的功能 (参见 表 5.10 “"/etc/network/interfaces
" 里面的节列表”),并启动网络连接上的接口。
以太网端口怎样使用 ifplugd
软件包,比如 eth0
,请看下面。
删除 "/etc/network/interfaces
" 里面的节: "auto
eth0
" 或 "allow-hotplug eth0
".
保留 "/etc/network/interfaces
" 里的节: "iface eth0
inet …
" 和 "mapping …
".
安装 ifplugd
软件包.
运行 "sudo dpkg-reconfigure ifplugd
".
把 eth0
作为 "由 ifplugd 监控的静态网卡".
现在,网络按你希望的方式重新配置了。
在打开电源或发现硬件的时候启动,接口不会自己启动自己。
快速启动过程,没有长的 DHCP 等待时间。
没有适当 IPv4 地址的接口不会被滑稽的激活 (参见 第 5.5.12 节 “ifupdown 网络配置状态”).
发现以太网线缆时,启动接口。
在拔掉以太网线缆后启动一段时间,然后接口自动关闭。
在插入另外的以太网线缆时,接口在新的网络环境下启动。
提示 | |
---|---|
ifplugd(8) 命令的参数能够设置其行为,比如说重新配置接口的延时。 |
ifmetric
软件包使我们能够根据经验来维护路由度量值,即使是 DHCP 的路由度量值。
下面设置 eth0
接口的值,让其在有 wlan0
接口的情况下,更加适当。
安装 ifmetric
软件包。
在 "/etc/network/interfaces
" 里,增加一行 "metric
0
",紧挨着放在"iface eth0 inet dhcp
"这行下面。
在 "/etc/network/interfaces
" 里,增加一行 "metric
1
" ,紧挨着放在 "iface wlan0 inet dhcp
" 这行下面.
metric 0 意味着最高路由优先级,是默认值。大的 metric 值意味着较低的路由优先级。具有最低 metric 值的活动的接口 IP 地址,成为原始路由。参见ifmetric(8)。
单个物理以太网接口能够配置为使用不同的 IP 地址的多个虚拟接口。这样做的目的,通常是把接口连接到几个 IP 子网。比如说,只有一个网卡的基于 IP 地址的虚拟 web 主机,就是这样一个应用。
举个例子,让我们假设下面的情况。
你主机上的单个以太网接口连接到以太网集线器(不是宽带路由器)。
以太网集线器同时连接到互联网和本地局域网。
局域网使用子网 192.168.0.x/24
.
你主机的物理接口 eth0
使用 DHCP 提供的 IP 地址来连接互联网。
你的主机使用 192.168.0.1
作为局域网的虚拟接口 eth0:0
的地址。
"/etc/network/interfaces
" 里下面的节配置你的网络。
iface eth0 inet dhcp metric 0 iface eth0:0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 metric 1
小心 | |
---|---|
虽然这个配置列子,并使用 netfilter/iptables (参见 第 5.9 节 “Netfilter 网络过滤框架”) 的网络地址转换(NAT),能够给只有单个网络接口的局域网提供廉价的路由器,但这样设置,没有真正的防火墙能力。你应当使用 2 块物理网卡的 NAT 来使本地网络更安全,隔离不安全的互联网。 |
ifupdown
软件包提供高级网络配置,使用网络配置名和网络接口名。我使用的术语和
ifup(8)
以及
interfaces(5)有少量不同。
表 5.12. 网络设备术语列表
man 手册页术语 | 本文术语 | 下面文本的列子 | 说明 |
---|---|---|---|
物理接口名 | 网络接口名 | lo , eth0 ,
<interface_name> |
Linux 内核给出的名字 (使用 udev 机制)
|
逻辑接口名 | 网络配置名 | config1 , config2 ,
<config_name> |
在 "/etc/network/interfaces " 里紧跟着 iface 的名字
|
在 第 5.5.1 节 “简单的命令语法” 里的基本网络配置命令,需要网络配置名来标识匹配
"/etc/network/interfaces
" 里 iface
节的网络接口名。
高级网络配置命令能够按下面的方式区分 "/etc/network/interfaces
" 里的网络配置名和网络接口名。
表 5.13. ifupdown 高级网络配置命令列表
命令 | 操作 |
---|---|
ifup eth0=config1
|
使用配置 config1 启动网络接口 eth0
|
ifdown eth0=config1
|
使用配置 config1 关闭网络接口 eth0
|
ifup eth0
|
使用 mapping 节选择的
eth0 配置启动网络接口
|
ifdown eth0
|
使用 mapping 节选择的
eth0 配置关闭网络接口
|
为了避免复杂,我们在 第 5.5.2 节 “"/etc/network/interfaces" 基本语法”
里省略了解释 "/etc/network/interfaces
" 里的 mapping
节。
mapping <interface_name_glob> script <script_name> map <script_input1> map <script_input2> map ...
这给 /etc/network/interfaces
文件提供了一个高级特征,可以自动选择映射脚本
<script_name>
定义的配置。
让我们来跟随下面的执行。
$ sudo ifup eth0
当 "<interface_name_glob>
" 匹配
"eth0
", 这个执行过程执行下面的命令来自动配置 eth0
。
$ sudo ifup eth0=$(echo -e '<script_input1> \n <script_input2> \n ...' | <script_name> eth0)
这里," map
" 脚本输入行是可选和可以重复的。
注意 | |
---|---|
|
以下是如何在几个网络配置中进行手动切换,而无需像 第 5.5.13 节 “网络重新配置基础” 中那样重写
“/etc/network/interfaces
” 文件。
对于你需要访问的所有网络配置,你需要在 “/etc/network/interfaces
”
文件中像下面那样创建一个单独的节。
auto lo iface lo inet loopback iface config1 inet dhcp iface config2 inet static address 192.168.11.100 netmask 255.255.255.0 gateway 192.168.11.1 dns-domain example.com dns-nameservers 192.168.11.1 iface pppoe inet manual pre-up /sbin/ifconfig eth0 up up ifup ppp0=dsl down ifdown ppp0=dsl post-down /sbin/ifconfig eth0 down # The following is used internally only iface dsl inet ppp provider dsl-provider iface pots inet ppp provider provider
请注意,iface
后面标识的
网络配置名称 不用于标识 网络接口名称。另外,也没有 auto
或 allow-hotplug
节来根据事件自动启动网络接口
eth0
。
现在,你可以切换网络配置了。
让我们通过 DHCP 将你的 PC 移动到局域网。你可以通过下列命令开启由网络配置名称(逻辑接口名称)config1
指定的网络接口(物理接口) eth0
。
$ sudo ifup eth0=config1 Password: ...
eth0
接口已开启,由 DHCP 配置并连接到了局域网。
$ sudo ifdown eth0=config1 ...
eth0
接口已关闭并断开局域网连接。
让我们通过静态 IP 使你的 PC 移动到局域网。你可以通过下列命令开启由网络配置名称 config2
指定的网络接口 eth0
。
$ sudo ifup eth0=config2 ...
开启 eth0
接口,使用静态 IP 配置并连接到局域网。像 dns-*
这样的额外参数会配置 “/etc/resolv.conf
” 的内容。如果安装了
resolvconf
,“/etc/resolv.conf
” 会更容易管理。
$ sudo ifdown eth0=config2 ...
eth0
接口再次关闭并断开局域网连接。
让我们将你的 PC 移动到 PPPoE 服务器的 BB-modem 上的一个端口。你可以通过下列命令开启由网络配置名称 pppoe
指定的网络接口 eth0
。
$ sudo ifup eth0=pppoe ...
eth0
接口已开启,由 PPPoE 配置直接连接到 ISP。
$ sudo ifdown eth0=pppoe ...
eth0
接口再次关闭并断开连接。
让我们将你的 PC 移动到使用 POTS 和 modem 的位置,而非局域网或 BB-modem。你可以通过下列命令开启由网络配置名称 ppp0
指定的网络接口 eth0
。
$ sudo ifup ppp0=pots ...
开启 ppp0
接口,并使用 PPP 连接到互联网。
$ sudo ifdown ppp0=pots ...
关闭 ppp0
接口并断开网络。
你应该检查 “/etc/network/run/ifstate
”
文件,查看ifupdown
系统当前网络配置的状态。
警告 | |
---|---|
如果你有多个网络接口,你可能需要调整 |
ifupdown
系统会自动运行安装在 “/etc/network/*/
”
中的脚本,而且会传递环境变量给脚本。
表 5.14. ifupdown 系统传递的环境变量
环境变量 | 传递值 |
---|---|
"$IFACE "
|
处理中的接口的物理名称(接口名称) |
"$LOGICAL "
|
处理中的接口的逻辑名称(配置名称) |
"$ADDRFAM "
|
接口的 <address_family> |
"$METHOD "
|
接口的 <method_name> (例如 “static”) |
"$MODE "
|
如果是 ifup 运行的,则值为 “start”;如果是 ifdown
运行的,则值为 “stop”
|
"$PHASE "
|
根据 “$MODE ”,但有更细致的区分,共分为
pre-up 、post-up 、pre-down
和 post-down 阶段
|
"$VERBOSITY "
|
指示是否使用了 “--verbose ”;是为 1,否为 0
|
"$PATH "
|
命令搜索路径:“/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ”
|
"$IF_<OPTION> "
|
位于 iface 这节的相应选项值
|
这里,每一个环境变量,"$IF_<OPTION>
",是在相应的选项名字 <option1>
和 <option2> 前增加 "$IF_
" 来创建,
把字母转换为大写字母,将中划线替换为下划线,忽略非字母数字的字符。
提示 | |
---|---|
<address_family>, <method_name>, <option1> 和 <option2> 的说明,请参见第 5.5.2 节 “"/etc/network/interfaces" 基本语法”。 |
ifupdown-extra
软件包 (参见 第 5.5.14 节 “ifupdown-extra 包”)使用这些环境变量来扩展ifupdown
软件包的功能. ifmetric
软件包 (参见 第 5.6.2 节 “ifmetric 软件包”)安装
"/etc/network/if-up.d/ifmetric
"脚本,这个脚本通过"$IF_METRIC
"变量来设置
metric 路由度量值. guessnet
软件包 (参见 第 5.6.8 节 “guessnet Mapping 映射”),提供简单和功能强大的框架,用于通过 mapping
映射机制自动选择网络配置,这个软件包也使用了这些环境变量。
注意 | |
---|---|
使用这些环境变量进行个性化网络配置的列子,你可以查看" |
为了替代在 第 5.6.6 节 “手动的可切换网络配置” 描述的手工选择配置,你可以使用在 第 5.6.5 节 “映射节 mapping stanza” 描述的映射机制,自动选择个性化脚本来进行配置网络。
guessnet
软件包提供的
guessnet-ifupdown(8)
命令,是被设计作为映射脚本,并提供强力框架来增强ifupdown
系统.
在 iface
节下的每一个网络配置,列出测试条件作为guessnet
选项的值。
映射机制选择第一个没有错误结果的 iface
作为网络配置。
guessnet-ifupdown
使用的映射脚本和
ifupdown
的原始网络配置架构,这两种对
"/etc/network/interfaces
" 文件的用法,不会造成负面的影响,因为 guessnet
选项仅仅只导出额外的环境变量到
ifupdown
系统运行的脚本。细节参见
guessnet-ifupdown(8).
注意 | |
---|---|
当多个 |
Iproute2 命令集提供完整的底层网络配置能力。有个从旧的 net-tools 命令集到新的 iproute2 命令集的转换表。
表 5.15. 从旧的 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) | 以太网设备设置 |
参见 ip(8) 和 IPROUTE2 工具套件 Howto.
你可以按下面的方式安全的使用底层网络命令,这些命令不会改变网络配置。
表 5.16. 底层网络命令列表
命令 | 说明 |
---|---|
ifconfig
|
显示活动的网络接口连接和地址状态 |
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 信息
|
提示 | |
---|---|
部分底层网络配置工具放在 " |
通用的网络优化超出了本文的范围。我提及消费等级连接相关的主题。
表 5.17. 网络优化工具列表
软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
iftop
|
V:10, I:109 | 93 | 显示一个网络接口上的带宽使用信息 |
iperf
|
V:4, I:54 | 160 | 互联网协议带宽测量工具 |
apt-spy
|
V:0, I:3 | 105 |
基于带宽测试来写 /etc/apt/sources.list 文件
|
ifstat
|
V:1, I:10 | 55 | 接口统计监控 |
bmon
|
V:1, I:12 | 143 | 便携式带宽监视器和网速估计工具 |
ethstatus
|
V:0, I:3 | 39 | 快速测量网络设备吞吐的脚本 |
bing
|
V:0, I:2 | 62 | 实验性的随机带宽测试器 |
bwm-ng
|
V:2, I:17 | 88 | 小巧简单的控制台带宽监测器 |
ethstats
|
V:0, I:1 | 20 | 基于控制台的以太网统计监视器 |
ipfm
|
V:0, I:0 | 78 | 带宽分析工具 |
最大传输单元 Maximum Transmission Unit
(MTU) 的值能够通过加 "-M do
" 选项的
ping(8)
实验来确定,它发送从 1500 字节(对于IP+ICMP 包头,有 28 字节的偏移)大小开始的 ICMP 包,来找出 IP 不分片的最大包大小。
尝试下列例子
$ ping -c 1 -s $((1500-28)) -M do www.debian.org PING www.debian.org (194.109.137.218) 1472(1500) bytes of data. From 192.168.11.2 icmp_seq=1 Frag needed and DF set (mtu = 1454) --- www.debian.org ping statistics --- 0 packets transmitted, 0 received, +1 errors
尝试 1454 代替 1500
你看到用 1454 ping(8) 成功了。
这个过程是 路径 MTU (PMTU) 发现 (RFC1191) , tracepath(8) 命令能够自动完成这个。
提示 | |
---|---|
上面的列子,PMTU 的值是 1454,这是我先前的光纤到户提供商,使用了 异步传输模式 Asynchronous Transfer Mode (ATM) 作为他们的骨干网络,并使用 PPPoE 作为客户端。实际 PMTU 值依赖于你的环境,比如说,我新的光纤到户提供商是 1500。 |
表 5.18. 最佳 MTU 值的基本指引方法
网络环境 | MTU | 基本原理 |
---|---|---|
拨号连接(IP: PPP) | 576 | 标准的 |
以太网连接 (IP: DHCP 或固定) | 1500 | 默认标准值 |
以太网连接 (IP: PPPoE) | 1492 (=1500-8) | PPP 头部 2 字节 和 PPPOE 头部 6 字节 |
以太网连接 (ISP 骨干网: ATM, IP: DHCP 或固定 IP) | 1462 (=48*31-18-8) | 作者推断:18 字节的以太网头,8字节 SAR 尾(译注:SAR 为 ATM 技术名词) |
以太网连接 (ISP 骨干: ATM, IP: PPPoE) | 1454 (=48*31-8-18-8) | 参见 "Optimal MTU configuration for PPPoE ADSL Connections" 来了解基本原理 |
除了这些基本的指引方法外,你还应当知道下面的信息。
使用任何隧道方式(VPN 等.)的最佳 MTU 需要进一步减去它们上面的头部。
MTU 值不应当超过通过实验验证的 PMTU 值。
当遇到其它限制的时候,较大的 MTU 值通常比较好。
这里示例设置 MTU 值,从默认的 1500 设置到 1454.
对于 DHCP (参见 第 5.5.4 节 “使用 DHCP 的网络接口”),
你能够使用下面的方式替换 "/etc/network/interfaces
" 文件里 iface
节相关的行.
iface eth0 inet dhcp pre-up /sbin/ifconfig $IFACE mtu 1454
对于静态 IP (参见 第 5.5.5 节 “使用静态 IP 地址的网络接口”),
你能够使用下面的方式替换 "/etc/network/interfaces
" 文件里 iface
节相关的行.
iface eth0 inet static address 192.168.11.100 netmask 255.255.255.0 gateway 192.168.11.1 mtu 1454 dns-domain example.com dns-nameservers 192.168.11.1
对于直接 PPPoE (参见 第 5.4.5 节 “使用 pppoeconf 的 PPPoE 以太网连接”),你能够使用下面的方式替换
"/etc/ppp/peers/dsl-provider
" 里 "mtu
"
相关的行.
mtu 1454
最大分片大小 (MSS) 是另外一种衡量包大小的方法。MSS 和 MTU 的关系如下.
对于 IPv4, MSS = MTU - 40
对于 IPv6,MSS = MTU - 60
注意 | |
---|---|
基于 iptables(8) (参见 第 5.9 节 “Netfilter 网络过滤框架”) 的优化,能够通过 MSS 来压缩包大小,路由器会用到 MMS 。参见 iptables(8)中的"TCPMSS" . |
TCP 吞吐量能够通过调整 TCP 缓冲大小的参数来最大化,对现代大带宽和高延时的 WAN,在 "TCP Tuning Guide" 和 "TCP tuning"里有描述. 到目前为止,当前 Debian 默认设置能够很好的服务好我的 1G bps 光纤到户 LAN 连接。
Netfilter 使用 Linux 内核 模块 (参见 第 3.3.1 节 “内核模块初始化”) 提供 状态防火墙 和 网络地址转换 (NAT) 框架。
表 5.19. 防火墙工具列表
软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
iptables
|
V:243, I:993 | 1525 | netfilter 管理工具(iptables(8) 用于 IPv4, ip6tables(8) 用于 IPv6) |
arptables
|
V:0, I:2 | 124 | netfilter 管理工具(arptables(8) 用于 ARP) |
ebtables
|
V:30, I:56 | 358 | netfilter 管理工具 (ebtables(8) 用于以太网桥) |
iptstate
|
V:0, I:4 | 115 | 持续性监控 netfilter 状态 (和 top(1) 相似) |
shorewall-init
|
V:0, I:0 | 78 | Shoreline 防火墙 初始化 |
shorewall
|
V:6, I:16 | 2334 | Shoreline 防火墙, netfilter 配置文件生成器 |
shorewall-lite
|
V:0, I:0 | 84 | Shoreline 防火墙, netfilter 配置文件生成器 (精简版) |
shorewall6
|
V:0, I:2 | 892 | Shoreline 防火墙, netfilter 配置文件生成器(IPv6 版本) |
shorewall6-lite
|
V:0, I:0 | 82 | Shoreline 防火墙, netfilter 配置文件生成器 (IPv6,精简版) |
netfilter 主要的用户层程序是 iptables(8).你能从 shell 手工交付式的配置 netfilter,使用 iptables-save(8) 保存当前状态,当系统重启时,通过 init 脚本调用 iptables-restore(8) 来恢复。
像 shorewall 这样的配置帮助脚本能够使这个过程变得更简单。
参见 http://www.netfilter.org/documentation/
上的文档(或在 "/usr/share/doc/iptables/html/
" 里面的文档).
提示 | |
---|---|
虽然这些是为 Linux 2.4 写的,iptables(8) 命令和 netfilter 内核功能都能够在 Linux2.6 和 3.x 内核系列实现. |