| 
 
          [ << ]
        
          [ < ]
        
      [ 主页 ]
      
            [ > ]
          
            [ >> ] 
           
 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的设定时,你可能需要查看文档变量名称。
 | 
 
 
          [ << ]
        
          [ < ]
        
      [ 主页 ]
      
            [ > ]
          
            [ >> ] 
           
 本文档的内容遵循知识共享-署名-相同方式共享许可协议 |