[ << ]
[ < ]
[ Home ]
[ > ]
[ >> ]
3. Modular Networking
Content:
3.a. Network Modules
We now support modular networking scripts, which means we can easily add support
for new interface types and configuration modules while keeping compatibility
with existing ones.
Modules load by default if the package they need is installed. If you specify a
module here that doesn't have its package installed then you get an error
stating which package you need to install. Ideally, you only use the modules
setting when you have two or more packages installed that supply the same
service and you need to prefer one over the other.
Note:
All settings discussed here are stored in /etc/conf.d/net unless
otherwise specified.
|
Code Listing 1.1: Module preference |
modules="ifconfig"
modules_eth0="pump"
modules="!iwconfig"
|
3.b. Interface Handlers
We provide two interface handlers presently: ifconfig and
iproute2. You need one of these to do any kind of network configuration.
ifconfig is installed by default (the net-tools package is part of
the system profile). iproute2 is a more powerful and flexible package,
but it's not included by default.
Code Listing 2.1: To install iproute2 |
# emerge sys-apps/iproute2
modules="ifconfig"
|
As both ifconfig and iproute2 do very similar things we allow
their basic configuration to work with each other. For example both the below
code snippet work regardless of which module you are using.
Code Listing 2.2: ifconfig and iproute2 examples |
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 is a means of obtaining network information (IP address, DNS servers,
Gateway, etc) from a DHCP server. This means that if there is a DHCP server
running on the network, you just have to tell each client to use DHCP and it
sets up the network all by itself. Of course, you will have to configure for
other things like wireless, PPP or other things if required before you can use
DHCP.
DHCP can be provided by dhclient, dhcpcd, or pump. Each
DHCP module has its pros and cons - here's a quick run down.
| DHCP Module |
Package |
Pros |
Cons |
| dhclient |
net-misc/dhcp |
Made by ISC, the same people who make the BIND DNS software. Very
configurable
|
Configuration is overly complex, software is quite bloated, cannot get
NTP servers from DHCP, does not send hostname by default
|
| dhcpcd |
net-misc/dhcpcd |
Long time Gentoo default, no reliance on outside tools, actively developed
by Gentoo
|
Can be slow at times, does not yet daemonize when lease is infinite |
| pump |
net-misc/pump |
Lightweight, no reliance on outside tools
|
No longer maintained upstream, unreliable, especially over modems, cannot
get NIS servers from DHCP
|
If you have more than one DHCP client installed, you need to specify which one
to use - otherwise we default to dhcpcd if available.
To send specific options to the DHCP module, use module_eth0="..."
(change module to the DHCP module you're using - i.e. dhcpcd_eth0).
We try and make DHCP relatively agnostic - as such we support the following
commands using the dhcp_eth0 variable. The default is not to set any of
them:
-
release - releases the IP address for re-use
-
nodns - don't overwrite /etc/resolv.conf
-
nontp - don't overwrite /etc/ntp.conf
-
nonis - don't overwrite /etc/yp.conf
Code Listing 3.1: Sample DHCP configuration in /etc/conf.d/net |
modules="dhcpcd"
config_eth0="dhcp"
dhcpcd_eth0="-t 10"
dhcp_eth0="release nodns nontp nonis"
|
Note:
dhcpcd and pump send the current hostname to the
DHCP server by default so you don't need to specify this anymore.
|
3.d. ADSL with PPPoE/PPPoA
First we need to install the ADSL software.
Code Listing 4.1: Install the ppp package |
# emerge net-dialup/ppp
|
Second, create the PPP net script and the net script for the ethernet interface
to be used by PPP:
Code Listing 4.2: Creating the PPP and ethernet scripts |
# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
|
Be sure to set rc_depend_strict to "YES" in /etc/rc.conf.
Now we need to configure /etc/conf.d/net.
Code Listing 4.3: A basic PPPoE setup |
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"
rc_need_ppp0="net.eth0"
|
You can also set your password in /etc/ppp/pap-secrets.
Code Listing 4.4: Sample /etc/ppp/pap-secrets |
"username" * "password"
|
If you use PPPoE with a USB modem you'll need to emerge br2684ctl. Please
read /usr/portage/net-dialup/speedtouch-usb/files/README for
information on how to properly configure it.
Important:
Please carefully read the section on ADSL and PPP in
/usr/share/doc/openrc-0.8.3-r1/net.example.bz2. It contains many
more detailed explanations of all the settings your particular PPP setup will
likely need. Of course, change 0.8.3-r1 with the version of OpenRC
installed on your system.
|
3.e. APIPA (Automatic Private IP Addressing)
APIPA tries to find a free address in the range 169.254.0.0-169.254.255.255 by
arping a random address in that range on the interface. If no reply is found
then we assign that address to the interface.
This is only useful for LANs where there is no DHCP server and you don't connect
directly to the internet and all other computers use APIPA.
For APIPA support, emerge net-misc/iputils or net-analyzer/arping.
Code Listing 5.1: APIPA configuration in /etc/conf.d/net |
config_eth0="dhcp"
fallback_eth0="apipa"
config_eth0="apipa"
|
3.f. Bonding
For link bonding/trunking emerge net-misc/ifenslave.
Bonding is used to increase network bandwidth. If you have two network cards
going to the same network, you can bond them together so your applications see
just one interface but they really use both network cards.
Code Listing 6.1: bonding configuration in /etc/conf.d/net |
slaves_bond0="eth0 eth1 eth2"
config_bond0="null"
rc_need_bond0="net.eth0 net.eth1 net.eth2"
|
3.g. Bridging (802.1d support)
For bridging support emerge net-misc/bridge-utils.
Bridging is used to join networks together. For example, you may have a server
that connects to the internet via an ADSL modem and a wireless access card to
enable other computers to connect to the internet via the ADSL modem. You could
create a bridge to join the two interfaces together.
Code Listing 7.1: Bridge configuration in /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"
rc_need_br0="net.eth0 net.eth1"
|
Important:
For using some bridge setups, you may need to consult the variable name documentation.
|
3.h. MAC Address
If you need to, you can change the MAC address of your interfaces through
the network configuration file too.
Code Listing 8.1: MAC Address change example |
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. Tunnelling
You don't need to emerge anything for tunnelling as the interface handler can do
it for you.
Code Listing 9.1: Tunnelling configuration in /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 support)
For VLAN support, emerge net-misc/vconfig.
Virtual LAN is a group of network devices that behave as if they were connected
to a single network segment - even though they may not be. VLAN members can only
see members of the same VLAN even though they may share the same physical
network.
Code Listing 10.1: VLAN configuration in /etc/conf.d/net |
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"
|
Important:
For using some VLAN setups, you may need to consult the variable name documentation.
|
[ << ]
[ < ]
[ Home ]
[ > ]
[ >> ]
The contents of this document, unless otherwise expressly stated, are licensed under the CC-BY-SA-2.5 license. The Gentoo Name and Logo Usage Guidelines apply.
|