《NetBSD指南-23.1.速览内核配置》
发表于 : 2010-03-07 6:30
在我们深入到配置网络各项参数前, 我们先速览一下必须或可以提供给内核的一些细节. 参 Chapter 31, 编译内核 以获取有关编译内核更详尽的信息, 我们在这将精选内核的配置. 我们这里将以i386的GENERIC配置文件为例. 其它平台的配置文件也包含了类似的信息, 配置文件中的注释内容提供了简要的提示. 除了这里提到的内容, 每个内核选项也收录在 options(4) 用户手册里, 而且一般每个驱动程序也提供了用户手册, 例如: tlp(4).
每个配置文件的第一行显示了版本号, 它可以用来通过CVS与其它版本进行比较, 或者报告bugs.
如果你想运行网络时间协议(NTP), 启用这个选项可以得到最精确的时间. 如果没有提供这个选项, NTP仍会运行. 参 ntpd(8) 以获取更多的信息.
如果你想通过网络文件系统(NFS)使用另一台机器的硬盘, 需要开启这个选项. 28.1 小节, “网络文件系统(NFS)” 提供了有关NFS的更详尽的信息.
这个选项包含了NFS远程文件共享协议的服务器端. 如果你想让其它的计算机使用你的硬盘要需要启用它. 28.1 小节, “网络文件系统(NFS)” 提供了有关NFS的更详尽的信息.
如果你想建立一个路由器,在网络或网络接口之间转发数据, 你需要设定这个选项。 如果不仅要开启数据转发, 而且还要增加一些缓冲区,参 options(4) 以获取更多的细节.
这个选项在内核中启用的TCP/IP代码. 即便你不想/不用网络, 你仍需要这个选项来提供子系统之间在机器内部的通讯,像 X Window系统. 参 inet(4) 以获取更多的信息.
如果你想使用IPv6(从NetBSD 1.5开始提供), 启用它. 反之, 删除/注释掉此选项. 参 inet6(4) 用户手册 和 22.7 小节, “下一代Internet协议 - IPv6” 以获取更多的信息.
包含了对IPsec协议的支持以及key、策略的管理、认证、压缩。 如果你只想使用IPv4,即使没有启用前面IPv6选项,这个选项仍可以IPv4下使用. 参 ipsec(4) 以获取更多的信息.
除了启用IPSEC,如果你想在IPsec内启用加密,需要启用此选项.
如果多播服务,如MBone服务需要被路由, 需要包含这个选项. 说明:路由线路本身由 mrouted(8) 进程控制.
这个选项启用了系列施乐网络系统(TM)协议. 它与TCP/IP协议堆栈无关, 目前已很少使用了. ns(4) 用户手册提供了更多的细节.
这个选项包含了 OSI 协议堆栈, 传了有年头了 —— 它将是网络的未来. 目前这些小谣几乎已经快成为历史了. :-) 参 iso(4) 用户手册以获取更多的信息.
这个选项启用 X.25 协议组以便通过串口线传送数据. 它是/曾经是与用于与OSI协议配合以及包含在广域网中.
包含了对 AppleTalk 协议堆栈的支持. 用户岛服务器程序需要用到它. 参pkgsrc/net/netatalk 和 pkgsrc/net/netatalk-asun对这类软件包的说明. 有关AppleTalk协议和协议堆栈更详尽的信息在 atalk(4) 用户手册里.
这些选项调整点到点协议. 当第三个选项启用代码过滤一些数据包时,第一、第二个选项指定使用的压缩算法及可用性.
这些选项启用NetBSD中的防火墙IPFilter. 参 ipf(4) 和 ipf(8) 用户手册以获取更多的IPFilter操作信息, 以及 23.5.1 小节, “配置网关/防火墙” 的实例.
这个选项仅在你的网络中还有机器运行4.2BSD或从它衍生出的网站堆栈时才需要这个选项。 如果你的网络上有一个或多个4.2BSD-系统, 你要留心设置正确的广播地址, 因为4.2BSD在网络代码中有关广播地址部分存在一个bug。 这个bug迫使你需要将所有的广播地址中的主机位设置成 “0”. TCP_COMPAT_42 选项帮助你确保这样.
如果内核被告知使用NFS根文件系统,这些选项启用了通过DHCP或BOOTPARAM查找数据。 参 diskless(8) 用户手册以获取更详尽的信息.
这些行告诉内核去哪里找它的根文件系统, 且指定使用的是哪种文件系统类型. 如果你想定制一个内核,让它通过tlp0接口使用一个NFS根文件系统, 你可以用 “root on tlp0 type nfs”来实现. 如果用一个 ? 代替一个设备/类型, 内核将自己尝试着一个合适的.
如果你想使用PPP或SLIP, 你需要一些串行(com)接口. 其它的像附加 USB, PCMCIA 或 PUC 也同理.
这个相当长的名单包含了所有类型的网络驱动程序. 请根据注释挑出匹配你硬件的驱动程序. 对多数驱动程序来说, 也提供了用户手册, 例如 tlp(4), ne(4)等.
这部分列出了特有的网卡介质接口. 选适合你的,如果不清楚就全选,然后看内核选的是哪个. 参 mii(4) 用户手册以获取更详尽的信息.
USB-ethernet adapters only have about 2MBit/s bandwidth, but they are very convenient to use. Of course this needs other USB related options which we won't cover here, as well as the necessary hardware. See the corresponding manpages for more information.
这个伪设备允许嗅探各类数据包. 不但tcpdump, 还有一些其它的需要知道网络通讯的情况的应用程序需要它. 参 bpf(4) 以获取更多信息.
这个启用IPFilter的包过滤内核接口,用于防火墙, NAT(IP伪装)等. 参 ipf(4) 和 23.5.1 小节, “配置网关/防火墙” 以获取更多的信息.
这是 “lo0” 软件回路网络设备,它在目前被一些程序使用, 同时也负责路由. 这个不应被注释掉. 参 lo(4) 以获取更多的信息.
如果你想使用PPP,无论是通过串口或以太网(PPPoE),你需要启用它. 参 ppp(4) 中有关此接口的详细信息.
Serial Line IP是一个通过串行线路IP的简单封装。它不负责协商IP地址以及其它选项, 因此现在已经很少用了. 参 sl(4).
如果你碰巧有一个老式的 Metricom Ricochet packet radio 无线网络设备, 用这个伪设备使用它. 参 strip(4) 用户手册以获取有更详尽的信息。
这个网络设备可以将网络数据包传送到一个设备文件, /dev/tun*上. 路由到tun0接口的数据包可以从 /dev/tun0上读取, 并且写道 /dev/tun0 的数据将被发送到tun0网络接口. 这可以被用于在用户岛内实现例如 QoS 路由的功能。参 tun(4) .
GRE封装可用来通过IP传送任意的第三层数据包, 例如, 实现 VPN. 参 gre(4) for more.
另一个IP-in-IP封装设备, 用另一种封装格式. 参 ipip(4) 用户手册.
使用 GIF 允许通过IPv4传送IPv6,这可用于在没有IPv6能力的上行(ISP)线路上保证IPv6的连通性. 也可融合其它选项. 参 gif(4) 用户手册上的实例.
这个faith接口扑捉IPv6的TCP通讯, 用来实现用户岛IPv6到IPv4的TCP中继,例如,协议转换. 参 faith(4) 用户手册.
这个选项增加了一个网络设备,它可以用来通过IPv4传送IPv6数据,而且不用事先建立一个配置通道. 出站数据包的源地址包含了这个IPv4地址, 它允许路由通过IPv4转换回来. 参 stf(4) 用户手册和 Section 23.9, “23.9. IPv6连通性 & 通过6to4传送” .
这个接口提供了对IEEE 802.1Q 虚拟局域网的支持, 它允许用一个“vlan” ID标记以太网框架。使用合适的配置 (当然也要支持VLAN), 它可以用来在一组无法通讯(广播和其他)的计算机间构建虚拟局域网. vlan(4) 用户手册上有更详尽的描述.
每个配置文件的第一行显示了版本号, 它可以用来通过CVS与其它版本进行比较, 或者报告bugs.
代码: 全选
options NTP # NTP phase/frequency locked loop
如果你想运行网络时间协议(NTP), 启用这个选项可以得到最精确的时间. 如果没有提供这个选项, NTP仍会运行. 参 ntpd(8) 以获取更多的信息.
代码: 全选
file-system NFS # Network File System client
如果你想通过网络文件系统(NFS)使用另一台机器的硬盘, 需要开启这个选项. 28.1 小节, “网络文件系统(NFS)” 提供了有关NFS的更详尽的信息.
代码: 全选
options NFSSERVER # Network File System server
这个选项包含了NFS远程文件共享协议的服务器端. 如果你想让其它的计算机使用你的硬盘要需要启用它. 28.1 小节, “网络文件系统(NFS)” 提供了有关NFS的更详尽的信息.
代码: 全选
#options GATEWAY # packet forwarding
如果你想建立一个路由器,在网络或网络接口之间转发数据, 你需要设定这个选项。 如果不仅要开启数据转发, 而且还要增加一些缓冲区,参 options(4) 以获取更多的细节.
代码: 全选
options INET # IP + ICMP + TCP + UDP
这个选项在内核中启用的TCP/IP代码. 即便你不想/不用网络, 你仍需要这个选项来提供子系统之间在机器内部的通讯,像 X Window系统. 参 inet(4) 以获取更多的信息.
代码: 全选
options INET6 # IPV6
如果你想使用IPv6(从NetBSD 1.5开始提供), 启用它. 反之, 删除/注释掉此选项. 参 inet6(4) 用户手册 和 22.7 小节, “下一代Internet协议 - IPv6” 以获取更多的信息.
代码: 全选
#options IPSEC # IP security
包含了对IPsec协议的支持以及key、策略的管理、认证、压缩。 如果你只想使用IPv4,即使没有启用前面IPv6选项,这个选项仍可以IPv4下使用. 参 ipsec(4) 以获取更多的信息.
代码: 全选
#options IPSEC_ESP # IP security (encryption part; define w/IPSEC)
除了启用IPSEC,如果你想在IPsec内启用加密,需要启用此选项.
代码: 全选
#options MROUTING # IP multicast routing
如果多播服务,如MBone服务需要被路由, 需要包含这个选项. 说明:路由线路本身由 mrouted(8) 进程控制.
代码: 全选
options NS # XNS
#options NSIP # XNS tunneling over IP
这个选项启用了系列施乐网络系统(TM)协议. 它与TCP/IP协议堆栈无关, 目前已很少使用了. ns(4) 用户手册提供了更多的细节.
代码: 全选
options ISO,TPIP # OSI
#options EON # OSI tunneling over IP
这个选项包含了 OSI 协议堆栈, 传了有年头了 —— 它将是网络的未来. 目前这些小谣几乎已经快成为历史了. :-) 参 iso(4) 用户手册以获取更多的信息.
代码: 全选
options CCITT,LLC,HDLC # X.25
这个选项启用 X.25 协议组以便通过串口线传送数据. 它是/曾经是与用于与OSI协议配合以及包含在广域网中.
代码: 全选
options NETATALK # AppleTalk networking protocols
包含了对 AppleTalk 协议堆栈的支持. 用户岛服务器程序需要用到它. 参pkgsrc/net/netatalk 和 pkgsrc/net/netatalk-asun对这类软件包的说明. 有关AppleTalk协议和协议堆栈更详尽的信息在 atalk(4) 用户手册里.
代码: 全选
options PPP_BSDCOMP # BSD-Compress compression support for PPP
options PPP_DEFLATE # Deflate compression support for PPP
options PPP_FILTER # Active filter support for PPP (requires bpf)
这些选项调整点到点协议. 当第三个选项启用代码过滤一些数据包时,第一、第二个选项指定使用的压缩算法及可用性.
代码: 全选
options PFIL_HOOKS # pfil(9) packet filter hooks
options IPFILTER_LOG # ipmon(8) log support
这些选项启用NetBSD中的防火墙IPFilter. 参 ipf(4) 和 ipf(8) 用户手册以获取更多的IPFilter操作信息, 以及 23.5.1 小节, “配置网关/防火墙” 的实例.
代码: 全选
# Compatibility with 4.2BSD implementation of TCP/IP. Not recommended.
#options TCP_COMPAT_42
这个选项仅在你的网络中还有机器运行4.2BSD或从它衍生出的网站堆栈时才需要这个选项。 如果你的网络上有一个或多个4.2BSD-系统, 你要留心设置正确的广播地址, 因为4.2BSD在网络代码中有关广播地址部分存在一个bug。 这个bug迫使你需要将所有的广播地址中的主机位设置成 “0”. TCP_COMPAT_42 选项帮助你确保这样.
代码: 全选
options NFS_BOOT_DHCP,NFS_BOOT_BOOTPARAM
如果内核被告知使用NFS根文件系统,这些选项启用了通过DHCP或BOOTPARAM查找数据。 参 diskless(8) 用户手册以获取更详尽的信息.
代码: 全选
# Kernel root file system and dump configuration.
config netbsd root on ? type ?
#config netbsd root on sd0a type ffs
#config netbsd root on ? type nfs
这些行告诉内核去哪里找它的根文件系统, 且指定使用的是哪种文件系统类型. 如果你想定制一个内核,让它通过tlp0接口使用一个NFS根文件系统, 你可以用 “root on tlp0 type nfs”来实现. 如果用一个 ? 代替一个设备/类型, 内核将自己尝试着一个合适的.
代码: 全选
# ISA serial interfaces
com0 at isa? port 0x3f8 irq 4 # Standard PC serial ports
com1 at isa? port 0x2f8 irq 3
com2 at isa? port 0x3e8 irq 5
如果你想使用PPP或SLIP, 你需要一些串行(com)接口. 其它的像附加 USB, PCMCIA 或 PUC 也同理.
代码: 全选
# Network Interfaces
这个相当长的名单包含了所有类型的网络驱动程序. 请根据注释挑出匹配你硬件的驱动程序. 对多数驱动程序来说, 也提供了用户手册, 例如 tlp(4), ne(4)等.
代码: 全选
# MII/PHY support
这部分列出了特有的网卡介质接口. 选适合你的,如果不清楚就全选,然后看内核选的是哪个. 参 mii(4) 用户手册以获取更详尽的信息.
代码: 全选
# USB Ethernet adapters
aue* at uhub? port ? # ADMtek AN986 Pegasus based adapters
cue* at uhub? port ? # CATC USB-EL1201A based adapters
kue* at uhub? port ? # Kawasaki LSI KL5KUSB101B based adapters
USB-ethernet adapters only have about 2MBit/s bandwidth, but they are very convenient to use. Of course this needs other USB related options which we won't cover here, as well as the necessary hardware. See the corresponding manpages for more information.
代码: 全选
# network pseudo-devices
pseudo-device bpfilter 8 # Berkeley packet filter
这个伪设备允许嗅探各类数据包. 不但tcpdump, 还有一些其它的需要知道网络通讯的情况的应用程序需要它. 参 bpf(4) 以获取更多信息.
代码: 全选
pseudo-device ipfilter # IP filter (firewall) and NAT
这个启用IPFilter的包过滤内核接口,用于防火墙, NAT(IP伪装)等. 参 ipf(4) 和 23.5.1 小节, “配置网关/防火墙” 以获取更多的信息.
代码: 全选
pseudo-device loop # network loopback
这是 “lo0” 软件回路网络设备,它在目前被一些程序使用, 同时也负责路由. 这个不应被注释掉. 参 lo(4) 以获取更多的信息.
代码: 全选
pseudo-device ppp 2 # Point-to-Point Protocol
如果你想使用PPP,无论是通过串口或以太网(PPPoE),你需要启用它. 参 ppp(4) 中有关此接口的详细信息.
代码: 全选
pseudo-device sl 2 # Serial Line IP
Serial Line IP是一个通过串行线路IP的简单封装。它不负责协商IP地址以及其它选项, 因此现在已经很少用了. 参 sl(4).
代码: 全选
pseudo-device strip 2 # Starmode Radio IP (Metricom)
如果你碰巧有一个老式的 Metricom Ricochet packet radio 无线网络设备, 用这个伪设备使用它. 参 strip(4) 用户手册以获取有更详尽的信息。
代码: 全选
pseudo-device tun 2 # network tunneling over tty
这个网络设备可以将网络数据包传送到一个设备文件, /dev/tun*上. 路由到tun0接口的数据包可以从 /dev/tun0上读取, 并且写道 /dev/tun0 的数据将被发送到tun0网络接口. 这可以被用于在用户岛内实现例如 QoS 路由的功能。参 tun(4) .
代码: 全选
pseudo-device gre 2 # generic L3 over IP tunnel
GRE封装可用来通过IP传送任意的第三层数据包, 例如, 实现 VPN. 参 gre(4) for more.
代码: 全选
pseudo-device ipip 2 # IP Encapsulation within IP (RFC 2003)
另一个IP-in-IP封装设备, 用另一种封装格式. 参 ipip(4) 用户手册.
代码: 全选
pseudo-device gif 4 # IPv[46] over IPv[46] tunnel (RFC 1933)
使用 GIF 允许通过IPv4传送IPv6,这可用于在没有IPv6能力的上行(ISP)线路上保证IPv6的连通性. 也可融合其它选项. 参 gif(4) 用户手册上的实例.
代码: 全选
#pseudo-device faith 1 # IPv[46] tcp relay translation i/f
这个faith接口扑捉IPv6的TCP通讯, 用来实现用户岛IPv6到IPv4的TCP中继,例如,协议转换. 参 faith(4) 用户手册.
代码: 全选
#pseudo-device stf 1 # 6to4 IPv6 over IPv4 encapsulation
这个选项增加了一个网络设备,它可以用来通过IPv4传送IPv6数据,而且不用事先建立一个配置通道. 出站数据包的源地址包含了这个IPv4地址, 它允许路由通过IPv4转换回来. 参 stf(4) 用户手册和 Section 23.9, “23.9. IPv6连通性 & 通过6to4传送” .
代码: 全选
pseudo-device vlan # IEEE 802.1q encapsulation
这个接口提供了对IEEE 802.1Q 虚拟局域网的支持, 它允许用一个“vlan” ID标记以太网框架。使用合适的配置 (当然也要支持VLAN), 它可以用来在一组无法通讯(广播和其他)的计算机间构建虚拟局域网. vlan(4) 用户手册上有更详尽的描述.