# is DHCP mandatory ? [SOLVED]

## brazzmonkey

hi there,

my computer is connected to a router modem, which has dynamic IP. being a complete noob in networks, my connection is configured via DHCP.

i noticed my computer is always given the same IP (whereas my router's IP changes). i was wondering if i could get rid of DHCP and save several (precious) seconds at boot time. if so, what do i have to change in my config files ?

i remember i tried to change "dhcp" to my computer's IP in /etc/conf.d/net (if i remember correctly...), but of course this was too straightforward to work...

i've been through gentoo documentation, but network stuff is far from being crystal clear to me...

could you help me in that please ?

thxLast edited by brazzmonkey on Wed Feb 15, 2006 7:38 pm; edited 1 time in total

----------

## thoughtform

here's my setup. i'm behind a modem and a router as well.

i don't use dhcp, but a static ip.

check out my config with the comments:

teh home # cat /etc/conf.d/net

##############################################################################

# 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" )

# 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" )

##############################################################################

# 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)

#config_eth0=( "192.168.0.2/24" )

#config_eth0=( "192.168.0.2 netmask 255.255.255.0" )

# We can also specify a broadcast

#config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )

config_eth0=( "192.168.1.113 netmask 255.255.255.0 broadcast 192.168.1.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

#config_eth0=(

#       "192.168.0.2/24"

#       "192.168.0.3/24"

#       "192.168.0.4/24"

#)

# You can also use IPv6 addresses

#config_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

#config_eth0=( "noop" "192.168.0.2/24" )

# If you don't want ANY address (only useful when calling for advanced stuff)

#config_eth0=( "null" )

# Here's how todo routing if you need it - the below sets the default gateway

routes_eth0=(

        "default via 192.168.1.1"

)

# If a specified module fails (like dhcp - see below), you can specify a

# fallback like so

#fallback_eth0=( "192.168.0.2 netmask 255.255.255.0" )

#fallback_route_eth0=( "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

# 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_eth0="-Dprism54" # For Prism54 based 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_eth0=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"

#dns_servers_ESSID=( "192.168.0.1" "192.168.0.2" )

#dns_domain_ESSID="some.domain"

#dns_search_domains_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_dns_servers_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" )

#-----------------------------------------------------------------------------

# 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"

# 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 nodns nontp nonis"

# 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...

#       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.

#       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" )

# 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

----------

## brazzmonkey

so all you have is :

```
config_eth0=( "192.168.1.113 netmask 255.255.255.0 broadcast 192.168.1.255" ) 

routes_eth0=(

"default via 192.168.1.1"

) 
```

do you have a modem AND a router ? i only have a router modem...

my computer is always given 192.168.1.2. i assume my router modem has an _internal_ IP (something like 192.168.1.1) and a _public_ IP which is dynamically assigned by my ISP. is this correct ?

now, assuming i can use a similar config to yours :

```
config_eth0=( "192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255" ) 

routes_eth0=(

"default via 192.168.1.1"

) 
```

is it something like that or am i even noober than i thought ?

----------

## thoughtform

looks like you want 

```
config_eth0=( "192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255" )

routes_eth0=(

"default via 192.168.1.1"

)

```

yes i have a cable modem and a linksys router, with an external and internal interface doing NAT like yours.

----------

## brazzmonkey

yes, i made a typo but that's what i meant.

i don't know what NAT is, but i trust you  :Wink: 

i'll try that in afew hours and let you know.

thanks very much for helping Scorpaen !

----------

## brazzmonkey

that's it !

thanks for that one Scorpaen !

----------

## thoughtform

NAT is when you translate one or more public IP addresses (like the one you have on your WAN interface, provided by your service provider) into private ip addresses.

Most routers these days do NAT as you are going to have more machines on your LAN than you have public IP addresses on your WAN. To share these, you use NAT. Also acts as a nice incoming firewall, to which you open up ports (port forwarding) as needed for apps, games, servers, etc.

you're quite welcome.

Scorpaen

----------

