############################################################################## # QUICK-START # # The quickest start is if you want to use DHCP. # In that case, everything should work out of the box, no configuration # necessary, though the startup script will warn you that you haven't # specified anything. # # If you want to use a static address or use DHCP explicitly, jump # down to the section labelled INTERFACE HANDLERS. # # If you want to do anything more fancy, you should take the time to # read through the rest of this file. ############################################################################## # MODULES # # We now support modular networking scripts which means we can easily # add support for new interface types and modules while keeping # compatability with existing ones. # # Modules load by default if the package they need is installed. If # you specify a module here that doesn't have it's 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. # # In other words, you probably should DO NOTHING HERE... # Prefer iproute2 over ifconfig #modules=( "iproute2" ) # You can also specify other modules for an interface # In this case we prefer udhcpc over dhcpcd #modules_eth0=( "udhcpc" ) #modules_eth1=( "iwconfig" ) # You can also specify which modules not to use - for example you may be # using a supplicant or linux-wlan-ng to control wireless configuration but # you still want to configure network settings per ESSID associated with. #modules=( "!iwconfig" ) #modules_eth1=( "ipw2200" ) ############################################################################## # INTERFACE HANDLERS # # We provide two interface handlers presently: ifconfig and iproute2. # You need one of these to do any kind of network configuration. # For ifconfig support, emerge sys-apps/net-tools # For iproute2 support, emerge sys-apps/iproute2 # If you don't specify an interface then we prefer ifconfig it it's installed # Prefer iproute2 over ifconfig #modules=( "iproute2" ) # For a static configuration, use something like this # (They all do exactly the same thing btw) #ifconfig_eth0=( "192.168.0.2/24" ) #ifconfig_eth0=( "192.168.0.2 netmask 255.255.255.0" ) # We can also specify a broadcast #ifconfig_eth0=( "192.168.0.2/24 brd 192.168.0.255" ) #ifconfig_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" ) # If you need more than one address, you can use something like this # NOTE: ifconfig creates an aliased device for each extra IPv4 address # (eth0:1, eth0:2, etc) # iproute2 does not do this #ifconfig_eth0=( # "192.168.0.2/24" # "192.168.0.3/24" # "192.168.0.4/24" #) # You can also use IPv6 addresses #ifconfig_eth0=( # "192.168.0.2/24" # "4321:0:1:2:3:4:567:89ab" # "4321:0:1:2:3:4:567:89ac" #) # If you wish to keep existing addresses + routing and the interface is up, # you can specify a noop (no operation). If the interface is down or there # are no addresses assigned, then we move onto the next step (default dhcp) # This is useful when configuring your interface with a kernel command line # or similar #ifconfig_eth0=( "noop" "192.168.0.2/24" ) # If you don't want ANY address (only useful when calling for advanced stuff) #ifconfig_eth0=( "null" ) ifconfig_eth0=( "dhcp" ) ifconfig_eth1=( "dhcp" ) # Here's how todo routing if you need it - the below sets the default gateway #routes_eth0=( # "default via 192.168.0.1" # "default via 4321:0:1:2:3:4:567:89ab" #) # If a specified module fails (like dhcp - see below), you can specify a # fallback like so #fallback_eth0=( "192.168.0.19 netmask 255.255.255.0" ) #fallback_route_eth0=( "default via 192.168.0.1" ) fallback_eth1=( "192.168.0.19 netmask 255.255.255.0" ) fallback_route_eth1=( "default via 192.168.0.1" ) # NOTE: fallback entry must match the entry location in config_eth0 # As such you can only have one fallback route. ############################################################################## # OPTIONAL MODULES #----------------------------------------------------------------------------- # WIRELESS (802.11 support) # Wireless can be provided by iwconfig or wpa_supplicant # iwconfig # emerge net-wireless/wireless-tools # Wireless options are held in /etc/conf.d/wireless - but could be here too # Consult the sample file /etc/conf.d/wireless.example for instructions # iwconfig is the default #modules=( "iwconfig" ) # wpa_supplicant # emerge net-wireless/wpa-supplicant # Wireless options are held in /etc/wpa_supplicant.conf # Consult the sample file /etc/wpa_supplicant.conf.example for instructions # To choose wpa_supplicant over iwconfig # modules=( "wpa_supplicant" ) # To configure wpa_supplicant #wpa_supplicant_eth1="-Dipw2200" # For Intel Centrino A/B/G cards #wpa_supplicant_ath0="-Dmadwifi" # For Atheros based cards # Consult wpa_supplicant for more drivers # By default we give wpa_suppliant 60 seconds to associate and authenticate #wpa_timeout_eth1=60 # GENERIC WIRELESS OPTIONS # PLEASE READ THE INSTRUCTIONS IN /etc/conf.d/wireless.example FOR # HOW TO USE THIS ESSID VARIABLE # You can also override any settings found here per ESSID - which is very # handy if you use different networks a lot #config_ESSID=( "dhcp" ) #dhcpcd_ESSID="-t 5" # Setting name/domain server causes /etc/resolv.conf to be overwritten # Note that if DHCP is used, and you want this to take precedence then # set dhcp_ESSID="nodns" #nameservers_ESSID=( "192.168.0.1" "192.168.0.2" ) #domain_ESSID="some.domain" #searchdomains_ESSID="search.this.domain search.that.domain" # Please check the man page for resolv.conf for more information # as domain and search (searchdomains) are mutually exclusive and # searchdomains takes precedence # You can also override any settings found here per MAC address of the AP # incase you use Access Points with the same ESSID but need different # networking configs. Below is an example - of course you use the same # method with other variables #mac_config_001122334455=( "dhcp" ) #mac_dhcpcd_001122334455="-t 10" #mac_nameservers_001122334455=( "192.168.0.1" "192.168.0.2" ) # When an interface has been associated with an Access Point, a global # variable called ESSID is set to the Access Point's ESSID for use in the # pre/post user functions below (although it's not available in preup as you # won't have associated then) # If you're using anything else to configure wireless on your interface AND # you have installed any of the above packages, you need to disable them #modules=( "!iwconfig" "!wpa_supplicant" ) #iwconfig_eth1=" " #----------------------------------------------------------------------------- # DHCP # DHCP can be provided by dhcpcd, dhclient, udhcpc or pump # # dhcpcd: emerge net-misc/dhcpcd # dhclient: emerge net-misc/dhcp # udhcpc: emerge net-misc/udhcp # pump: emerge net-misc/pump # If you have more than one DHCP client installed, you need to specify which # one to use - otherwise we default to dhcpcd if available #modules=( "udhcpc" ) # to select udhcpc over dhcpcd # # Notes: # - dhcpcd, udhcpc and pump send the current hostname # to the DHCP server by default # - dhcpcd does not daemonize when the lease time is infinite # - udhcp-0.9.3-r3 and earlier does not support getting NTP servers # - dhclient does not support getting NTP servers # - pump does not support getting NIS servers # - DHCP tends to erase any existing device information - so add # static addresses after dhcp if you need them # Regardless of which DHCP client you prefer, you configure them the # same way using one of following depending on which interface modules # you're using. #config_eth0=( "dhcp" ) # For passing custom options to dhcpcd use something like the following. This # example reduces the timeout for retrieving an address from 60 seconds (the # default) to 10 seconds. dhcpcd_eth0="-t 10" dhcpcd_eth1="-t 30" # dhclient, udhcpc and pump don't have many runtime options # You can pass options to them in a similar manner to dhcpcd though #dhclient_eth0="..." #udhcpc_eth0="..." #pump_eth0="..." # To set options for dhclient, you need to have an /etc/dhclient.conf file # See the dhclient man page for details # GENERIC DHCP OPTIONS # Set generic DHCP options like so #dhcp_eth0="release" #dhcp_eth1="release" # This tells the dhcp client to release it's lease when it stops and not to # overwrite dns, ntp and nis settings when it starts. You can use any # combination of the above options - the default is not to use any of them #----------------------------------------------------------------------------- # Automatic Private IP Addressing (APIPA) # For APIPA support, emerge net-misc/iputils or net-analyzer/arping # APIPA is a module that 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. #config_eth0=( "dhcp" ) #fallback_eth0=( "apipa" ) #----------------------------------------------------------------------------- # VLAN (802.1q support) # For VLAN support, emerge net-misc/vconfig # Specify the VLAN numbers for the interface like so # Please ensure your VLAN IDs are NOT zero-padded #vlans_eth0="1 2" # You can also configure the VLAN - see for vconfig man page for more details #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" ) #----------------------------------------------------------------------------- # Bonding # For link bonding/trunking emerge net-misc/ifenslave # To bond interfaces together #slaves_bond0="eth0 eth1 eth2" #config_bond0=( "null" ) # You may not want to assign an IP the the bond # If any of the slaves require extra configuration - for example wireless or # ppp devices - we need to write a depend function for the bond so they get # configured correctly. # This is exactly the same as a depend() function in our init scripts #depend_br0() { # need net.eth0 net.eth1 #} #----------------------------------------------------------------------------- # ADSL # For ADSL support, emerge net-dialup/rp-pppoe # You should make the following settings and also put your # username/password information in /etc/ppp/pap-secrets # Configure the interface to use ADSL #config_eth0=( "adsl" ) # You probably won't need to edit /etc/ppp/pppoe.conf if you set this #adsl_user_eth0="my-adsl-username" #----------------------------------------------------------------------------- # ISDN # For ISDN support, emerge net-dialup/isdn4k-utils # You should make the following settings and also put your # username/password information in /etc/ppp/pap-secrets # Configure the interface to use ISDN #config_ippp0=( "dhcp" ) # It's important to specify dhcp if you need it! #config_ippp0=( "192.168.0.1/24" ) # Otherwise, you can use a static IP # NOTE: The interface name must be either ippp or isdn followed by a number # You may need this option to set the default route #ipppd_eth0="defaultroute" #----------------------------------------------------------------------------- # MAC changer # For changing MAC addresses emerge net-analyzer/macchanger # - to set a specific MAC address #mac_eth0="00:11:22:33:44:55" # - to randomize the last 3 bytes only #mac_eth0="random-ending" # - to randomize between the same physical type of connection (eg fibre, # copper, wireless) , all vendors #mac_eth0="random-samekind" # - to randomize between any physical type of connection (eg fibre, copper, # wireless) , all vendors #mac_eth0="random-anykind" # - full randomization - WARNING: some MAC addresses generated by this may NOT # act as expected #mac_eth0="random-full" # custom - passes all parameters directly to net-analyzer/macchanger #mac_eth0="some custom set of parameters" #----------------------------------------------------------------------------- # TUN/TAP # For TUN/TAP support emerge sys-apps/usermode-utilities # # NOTE: The interface name must be either tun or tap followed by a number #config_tun1=( "192.168.0.1/24") # For passing custom options to tunctl use something like the following. This # example sets the owner to adm #tunctl_tun1="-u adm" #----------------------------------------------------------------------------- # Bridging (802.1d) # For bridging support emerge net-misc/bridge-utils # To add ports to bridge br0 #bridge_br0="eth0 eth1" # You need to configure the ports to null values so dhcp does not get started #config_eth0=( "null" ) #config_eth1=( "null" ) # Finally give the bridge an address - dhcp or a static IP #config_br0=( "dhcp" ) #config_br0=( "192.168.0.1/24" ) # If any of the ports require extra configuration - for example wireless or # ppp devices - we need to write a depend function for the bridge so they get # configured correctly. # This is exactly the same as a depend() function in our init scripts #depend_br0() { # need net.eth0 net.eth1 #} # NOTE: This creates an interface called br0 - you can give the interface # any name you like # Below is an example of configuring the bridge # Consult "man brctl" for more details #brctl_br0=( "setfd 0" "sethello 0" "stp off" ) #----------------------------------------------------------------------------- # Tunnelling # For GRE tunnels #iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255" # For IPIP tunnels #iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255" # To configure the interface #config_vpn0=( "192.168.0.2 pointopoint 192.168.1.2" ) # ifconfig style #config_vpn0=( "192.168.0.2 peer 192.168.1.1" ) # iproute2 style ############################################################################## # ADVANCED CONFIGURATION # # Four functions can be defined which will be called surrounding the # start/stop operations. The functions are called with the interface # name first so that one function can control multiple adapters. # # The return values for the preup and predown functions should be 0 # (success) to indicate that configuration or deconfiguration of the # interface can continue. If preup returns a non-zero value, then # interface configuration will be aborted. If predown returns a # non-zero value, then the interface will not be allowed to continue # deconfiguration. # # The return values for the postup and postdown functions are ignored # since there's nothing to do if they indicate failure. # # ${IFACE} is set to the interface being brought up/down # ${IFVAR} is ${IFACE} converted to variable name bash allows #preup() { # # Test for link on the interface prior to bringing it up. This # # only works on some network adapters and requires the mii-diag # # package to be installed. # if mii-tool ${IFACE} 2> /dev/null | grep -q 'no link'; then # ewarn "No link on ${IFACE}, aborting configuration" # return 1 # fi # # # Test for link on the interface prior to bringing it up. This # # only works on some network adapters and requires the ethtool # # package to be installed. # if ethtool ${IFACE} | grep -q 'Link detected: no'; then # ewarn "No link on ${IFACE}, aborting configuration" # return 1 # fi # # # Remember to return 0 on success # return 0 #} predown() { # The default in the script is to test for NFS root and disallow # downing interfaces in that case. Note that if you specify a # predown() function you will override that logic. Here it is, in # case you still want it... # This kills PPTP for Uni WLAN ESSID="`/usr/sbin/iwconfig eth1 | grep ESSID | awk '{ print $4; }' | awk -F\: '{ print $NF; }' `" if [[ $ESSID == "\"Uni-Bremen\"" ]] ; then while [[ `ps a | grep pptp | grep -v grep | grep pptp` != "" ]] ; do echo "killall pptp" killall pptp done fi # if is_net_fs /; then # eerror "root filesystem is network mounted -- can't stop ${IFACE}" # return 1 # fi # # # Remember to return 0 on success return 0 } postup() { # This function could be used, for example, to register with a # dynamic DNS service. Another possibility would be to # send/receive mail once the interface is brought up. # This fires up pptp for Uni WLAN ESSID="`/usr/sbin/iwconfig eth1 | grep ESSID | awk '{ print $4; }' | awk -F\: '{ print $NF; }' `" if [[ $ESSID == "\"Uni-Bremen\"" ]] ; then while [[ "`route -n | awk '{ print $1 }' | grep '0\.0\.0\.0'`" == "0.0.0.0" ]] ; do /sbin/route del default done /usr/sbin/pptp login.fb3.wlan name lippold defaultroute usepeerdns fi return 0 } #postdown() { # # This function is mostly here for completeness... I haven't # # thought of anything nifty to do with it yet ;-) # # Return 0 always # return 0 #} ############################################################################## # FORCING MODULES # The Big Fat Warning :- If you use module forcing do not complain to us or # file bugs about it not working! # # Loading modules is a slow afair - we have to check each one for the following # 1) Code sanity # 2) Has the required package been emerged? # 3) Has it modified anything? # 4) Have all the dependant modules been loaded? # Then we have to strip out the conflicting modules based on user preference # and default configuration and sort them into the correct order. # Finally we check the end result for dependancies. # This, of course, takes valuable CPU time so we provide module forcing as a # means to speed things up. We still do *some* checking but not much. # It is essential that you force modules in the correct order and supply all # the modules you need. You must always supply an interface module - we # supply ifconfig or iproute2. # The Big Fat Warning :- If you use module forcing do not complain to us or # file bugs about it not working! # Now that we've warned you twice, here's how to do it #modules_force=( "ifconfig" ) #modules_force=( "iproute2" "dhcpcd" ) # We can also apply this to a specific interface #modules_force_eth1=( "iproute2" ) # The below will not work #modules_force=( "dhcpcd" ) # No interface (ifconfig/iproute2) #modules_force=( "ifconfig" "essidnet" "iwconfig" ) #modules_force_eth1=( "essidnet" "iwconfig" ) # Although it will not crash, essidnet will not work as it has to come after # iwconfig #modules_force=( "iproute2" "ifconfig" ) # The interface will be setup twice which will cause problems