IPv4

Due to obvious reasons, IPv4 is fully supported in default firmware.

The following sections describe the configuration of IPv4 connections to your ISP or an upstream router.

For an uplink with native IPv4 connectivity you can just use the default configuration.

# uci show network
...
network.wan=interface
network.wan.device='eth0.2'
network.wan.proto='dhcp'
...
# cat /etc/config/network
...
config interface 'wan'
	option device 'eth0.2'
	option proto 'dhcp'
...
Name Type Required Default Description
ipaddr ip address yes, if no ip6addr is set. (none) IP address. [openwrt 12.09] It could be a list of ipaddr , that is: several ipaddresses will be assigned to the interface. If, instead of a list, several ipaddr are specified as options, only the last is applied.
netmask netmask yes, if no ip6addr is set (none) Netmask
gateway ip address no (none) Default gateway
broadcast ip address no (none) Broadcast address (autogenerated if not set)
dns list of ip addresses no (none) DNS server(s)
dns_search list of domain names no (none) Search list for host-name lookup
metric integer no 0 Specifies the default route metric to use
Name Type Required Default Description
gateway string no (none) Suppresses DHCP-assigned default gateway if set to 0.0.0.0
(deprecated)
broadcast boolean no 0 Enable the broadcast flag in DHCP requests, required for certain ISPs, e.g. Charter with DOCSIS 3
ipaddr IP address no (none) IP address to request from the DHCP server
hostname string no (none) Hostname to include in DHCP requests
clientid string no system default Override client identifier in DHCP requests
vendorid string no system default Override the vendor class in DHCP requests
dns list of ip addresses no (none) Supplement DHCP-assigned DNS server(s), or use only these if peerdns is 0
peerdns boolean no 1 Use DHCP-provided DNS server(s)
defaultroute boolean no 1 Whether to create a default route via the received gateway
customroutes string no (none) Space-separated list of additional routes to insert via the received gateway
metric integer no 0 Specifies the route metric to use for both default route and custom routes
classlessroute boolean no 1 Whether to request the “classless route” option (DHCP option 121) — available since LEDE r2001
reqopts string no (none) Space-separated list of additional DHCP options to request from the server
sendopts string no (none) Space-separated list of additional DHCP options to send to the server. Syntax: option:value where option is either an integer code or a symbolic name such as hostname.
norelease boolean no 0 If set DO NOT release DHCP address on interface shutdown
zone firewall zone no (none) Firewall zone to which this interface should be added

:!: These parameters are handled partially by netifd (in interface.c) and partially by a shell script in lib/netifd/proto/dhcp.sh. Note prior to commit 3cee6f3f24 the norelease option was known as release and had the opposite sense.

FIXME Outdated information, please proofread and test it:

:!: If an interface is configured as dhcp client, the default route received by dhcp will be the only one listed and will remove other default route/metrics defined for other interfaces if those interfaces comes “before” the interface with dhcp in terms of “device” values. For example:

config interface 'wan'
    option device 'eth0'
    option proto 'static'
    ...
 
config interface 'wan2'
    option device 'eth1'
    option proto 'dhcp'
    ...

The interface with dhcp comes after (because eth1 comes after eth0 in a lexicografical order) and will overwrite the default routes set up by the interface “wan”. While is not true the contrary. If we have:

config interface 'wan'
    option device 'eth0'
    option proto 'dhcp'
    ...
 
config interface 'wan2'
    option device 'eth1'
    option proto 'static'
    ...

Both default routes set up by wan and wan2 will appear in the routing table.

For a downlink with IPv4 connectivity you can just use the default configuration, DHCP server is enabled by default, please see DHCP configuration for more details on that.

# uci show network
network.lan=interface
network.lan.device='br-lan'
network.lan.proto='static'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'
network.lan.ipaddr='192.168.1.1'
...
# /etc/config/network
config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option netmask '255.255.255.0'
	option ip6assign '60'
	option ipaddr '192.168.1.1'
 
config device 'lan_dev'
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan3'
	list ports 'lan4'
...

Below are a few examples for special, non-standard interface configurations.

config interface 'example'
	option proto   'none'
	option device  'br-lan'
	option auto    '1'
 
config device 'example_dev'
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth0'
	list ports 'eth1'
config interface 'example'
	option proto   'dhcp'
	option device  'eth0'
	option defaultroute' '0'
config interface 'example'
	option proto     'dhcp'
	option device    'eth0'
 
config alias
	option interface 'example'
	option proto     'static'
	option ip6addr   '2001:0DB8:100:F00:BA3::1'
config interface 'example'
	option proto     'static'
	option device    'eth0'
	option ipaddr    '192.168.1.200'
	option netmask   '255.255.255.0'
	list   dns       '192.168.1.1'
	list   dns       '192.168.10.1'

:!: The last DNS listed will be the first one to be chosen for the name resolution.

:!: Restart the service to apply the new DNS configuration: service dnsmasq restart

config interface 'example'
	option proto     'static'
	option device    'eth0'
	option ipaddr    '192.168.1.200'
	option netmask   '255.255.255.0'
	option dns       '192.168.1.1'
 
config route
	option interface 'example'
	option target    '0.0.0.0'
	option netmask   '0.0.0.0'
	option gateway   '192.168.1.1'
	option metric    '100'

Assigning multiple IP addresses to the same interface:

config interface 'foo'
	option device 'eth1'
	list ipaddr '10.8.0.1/24'
	list ipaddr '10.9.0.1/24'
	list ip6addr 'fdca:abcd::1/64'
	list ip6addr 'fdca:cdef::1/64'

Specifying multiple interfaces sharing the same device:

config interface 'foo'
	option device 'eth1'
	option ipaddr '10.8.0.1'
	option netmask '255.255.255.0'
	option ip6addr 'fdca:abcd::1/64'
 
config interface 'foo2'
	option device 'eth1'
	option ipaddr '10.9.0.1'
	option netmask '255.255.255.0'
	option ip6addr 'fdca:cdef::1/64'

Originally posted at https://dev.openwrt.org/ticket/2829#comment:7.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2021/09/09 20:47
  • by vgaetera