[ << ]
[ < ]
[ 主页 ]
[ > ]
[ >> ]
3. 模块化网络
内容:
3.a. 网络模块
我们现在支持模块化的网络脚本,这意味着我们可以很方便地增添新的网络接口和配置模块,同时和原来已存在的模块或是接口保持良好的兼容性。
只要模块需要的软件包已安装,它就会被默认载入。如果你指定一个模块而它需要的软件包未被安装,则你就会收到一个错误信息通知你需要安装哪一个软件包。一般来说,只有当你安装了提供相同服务的两个及以上的软件包时,你才需要使用模块设定来选择你想使用其中的哪一个。
注意:
除非有特别说明,这里所讨论的全部设定都保存在/etc/conf.d/net中。
|
代码 1.1: 模块选择 |
modules=( "iproute2" )
modules_eth0=( "pump" )
modules=( "!iwconfig" )
|
3.b. 网络接口处理程序
目前我们提供了两个网络接口处理程序:ifconfig和iproute2。你可以使用i这两个程序中的一个进行任意种类的网络配置。
ifconfig是目前Gentoo默认使用的网络接口处理程序,而且它也包含在系统的profile之中。iproute2是另一个灵活且强大的软件包,但是默认的系统配置中并不包含它。
代码 2.1: 安装iproute2 |
# emerge sys-apps/iproute2
modules=( "iproute2" )
|
由于ifconfig和iproute2的功能很类似,我们允许使用它们的基本配置功能以使二者可以通用。例如说下面的代码片段对于它们之中的任何一个来说都是起效的。
代码 2.2: ifconfig和iproute2示例 |
config_eth0=( "192.168.0.2/24" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0" )
config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )
|
3.c. DHCP
DHCP是一种通过DHCP服务器来获得相关的网络信息(比如IP地址、DNS服务器、网关等)的方式。这意味着如果在网络上存在着一个DHCP服务器的话,你只要让每一个客户端使用DHCP,这些客户端就会自动地配置好相关的网络设置。当然,如果在使用DHCP之前还需要配置无线网络或是PPP等其他设定的话,你就必须先配置好这些才行。
dhclient、dhcpcd或者pump都可以提供DHCP功能。每一种DHCP模块都有各自的优缺点——下面是一个快速的检阅。
DHCP模块 |
软件包 |
优点 |
缺点 |
dhclient |
net-misc/dhcp |
由ISC(也是BIND DNS软件的开发人员)制作;高度可配置性。
|
配置起来过于复杂;软件十分臃肿;无法通过DHCP获得NTP服务器;默认不发送主机名。
|
dhcpcd |
net-misc/dhcpcd |
Gentoo一直以来的预设软件;不依赖其他外部软件;由Gentoo开发的。
|
有时很慢;当租约为无穷大时不会变成守护进程。 |
pump |
net-misc/pump |
轻量级的;不依赖其他外部软件
|
不再被上游维护,不可靠,尤其在使用modem的时候;不能通过DHCP获得NIS服务器。
|
当你在系统上安装有不止一种DHCP客户端,你需要指定使用哪一个——否则如果系统装有dhcpcd,我们将默认使用它。
你可以使用module_eth0="..."(把module改成你所使用DHCP模块的名称——例如:dhcpcd_eth0)为DHCP模块指定选项。
我们尝试使DHCP的配置更加灵活——所以我们通过dhcp_eth0变量来支持下面这些命令,默认不使用它们中的任何一个:
-
release - 释放IP地址以便它可以被重新使用
-
nodns - 不覆盖/etc/resolv.conf
-
nontp - 不覆盖/etc/ntp.conf
-
nonis - 不覆盖/etc/yp.conf
代码 3.1: 在/etc/conf.d/net中的DHCP配置范例 |
modules=( "dhcpcd" )
config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10"
dhcp_eth0="release nodns nontp nonis"
|
注意:
由于dhcpcd和pump默认会把主机名发送给DHCP服务器,所以你就可以不用去指定它了。
|
3.d. 基于PPPoE/PPPoA的ADSL
首先我们安装ADSL软件。
代码 4.1: 安装ppp软件包 |
# emerge net-dialup/ppp
|
注意:
如果你需要PPPoA,确保你使用的是>=baselayout-1.12.x。
|
其次,创建PPP网络脚本和PPP所使用的以太网卡的网络脚本:
代码 4.2: 创建PPP和以太网卡网络脚本 |
# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
|
确保在/etc/conf.d/rc设定RC_NET_STRICT_CHECKING="yes"。
现在我们需要配置/etc/conf.d/net。
代码 4.3: 一个基本的PPPoE设定 |
config_eth0=( null )
config_ppp0=( "ppp" )
link_ppp0="eth0"
plugins_ppp0=( "pppoe" )
username_ppp0='user'
password_ppp0='password'
pppd_ppp0=(
"noauth"
"defaultroute"
"usepeerdns"
"holdoff 3"
"child-timeout 60"
"lcp-echo-interval 15"
"lcp-echo-failure 3"
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp
)
depend_ppp0() {
need net.eth0
}
|
你也可以在/etc/ppp/pap-secrets中定义你的密码。
代码 4.4: /etc/ppp/pap-secrets范例 |
"username" * "password"
|
如果你通过一个USB调制解调器来使用PPPoE,你需要emerge br2684ctl。请阅读/usr/portage/net-dialup/speedtouch-usb/files/README来了解如果正确的配置它。
重要:
请仔细阅读/etc/conf.d/net.example里有关ADSL和PPP的部分。它包含了你的PPP设定可能需要的设置的详尽解释。
|
3.e. APIPA(自动获得私有的IP地址)
APIPA通过在某网络接口arping在169.254.0.0-169.254.255.255范围内的某个随机地址的方式来在该范围内尝试寻找空闲地址。如果没有收到任何ARP应答,该IP地址就会被绑定到这个网络接口上。
只有在网络上不存在DHCP服务器,同时本机不直接连接到internet并且其他所有的计算机都使用APIPA时才适用。
为了支持APIPA,请emerge net-misc/iputils或net-analyzer/arping。
代码 5.1: /etc/conf.d/net中的APIPA配置 |
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )
config_eth0=( "apipa" )
|
3.f. 绑定
为了使用连接绑定,请emerge net-misc/ifenslave。
绑定可以用来增加网络带宽。如果你有两块网卡连接到同一个网络,你可以把它们绑定在一起这样你的应用程序只看到一个网卡,但实际上却是在同时使用两个物理网卡传送数据。
代码 6.1: 在/etc/conf.d/net中配置绑定 |
slaves_bond0="eth0 eth1 eth2"
config_bond0=( "null" )
depend_bond0() {
need net.eth0 net.eth1 net.eth2
}
|
3.g. 桥接(802.1d的支持)
为了获得对桥接支持,请emerge net-misc/bridge-utils。
桥接是用来把两个网络连接在一起。举例来说,你有一台通过ADSL modem接入internet的服务器,它同时通过无线网卡为其他计算机提供internet接入服务。你就可以创建桥接把这两个网络接口连接在一起。
代码 7.1: /etc/conf.d/net中桥接的配置 |
brctl_br0=( "setfd 0" "sethello 0" "stp off" )
bridge_br0="eth0 eth1"
config_eth0=( "null" )
config_eth1=( "null" )
config_br0=( "192.168.0.1/24" )
depend_br0() {
need net.eth0 net.eth1
}
|
重要:
在使用一些桥接的设定时,你可能需要参考文档变量名称
|
3.h. MAC地址
如果你使用的是sys-apps/baselayout-1.11.14或者更新版本的话,你无需安装任何软件就可以更改网络接口对应的MAC地址或者为某个网络接口指定一个MAC地址。不过,如果你需要为网络接口指定一个随机的MAC地址或者你的baselayout的版本比上述版本要旧的话,你需要安装好net-analyzer/macchanger后才能使用这些功能。
代码 8.1: MAC地址变更示例 |
mac_eth0="00:11:22:33:44:55"
mac_eth0="random-ending"
mac_eth0="random-samekind"
mac_eth0="random-anykind"
mac_eth0="random-full"
|
3.i. 隧道
你不需要安装任何软件就可以使用隧道,因为网络接口处理程序会帮你做好这些事。
代码 9.1: 在/etc/conf.d/net中配置隧道 |
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
config_vpn0=( "192.168.0.2 peer 192.168.1.1" )
|
3.j. VLAN(802.1q的支持)
为了获得对VLAN的支持,请emerge net-misc/vconfig.
虚拟局域网(Virtual LAN)是一组有如运作在同个网段的一组网络设备的集合——尽管实际上可能不是。VLAN成员只能看到同一VLAN的成员,哪怕和其他VLAN成员处于同一物理网段中。
代码 10.1: 在/etc/conf.d/net中配置VLAN |
vlans_eth0="1 2"
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )
config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )
|
重要:
在使用一些VLAN的设定时,你可能需要查看文档变量名称。
|
[ << ]
[ < ]
[ 主页 ]
[ > ]
[ >> ]
本文档的内容遵循知识共享-署名-相同方式共享许可协议
|