From Fedora Project Wiki
< Networking | Ideas
Line 104: | Line 104: | ||
Use one configuration directives per feature whenever possible, use multiple configuration directives per feature where further tweaking is needed. | Use one configuration directives per feature whenever possible, use multiple configuration directives per feature where further tweaking is needed. | ||
=== Configuration directives === | |||
{| | {| | ||
Line 116: | Line 118: | ||
|||undefined||default for IPv6, use system default | |||undefined||default for IPv6, use system default | ||
|- | |- | ||
| | |rdisc||enabled||default, IPv6 only | ||
|- | |- | ||
|||disabled||skip directly to DHCP (if enabled) | |||disabled||skip directly to DHCP (if enabled) | ||
Line 127: | Line 129: | ||
|- | |- | ||
|||disabled||default | |||disabled||default | ||
|} | |||
=== Consequences on IPv6 configuration === | |||
{| | |||
!LL!!RD!!DHCP!!current status!!notes | |||
|- style="color: brown" | |||
|no||no||no||unsupported|| | |||
|- style="color: grey" | |||
|no||no||yes||invalid|| | |||
|- style="color: grey" | |||
|no||yes||no||invalid|| | |||
|- style="color: grey" | |||
|no||yes||yes||invalid|| | |||
|- style="color: green" | |||
|yes||no||no||method=link-local/manual||link-local | |||
|- style="color: red" | |||
|yes||no||yes||broken||link-local and DHCPv6 (without rdisc) | |||
|- style="color: brown" | |||
|yes||yes||no||unsupported||link-local and rdisc only | |||
|- style="color: green" | |||
|yes||yes||yes||method=auto||link-local and rdisc, DHCPv6 if requested by router | |||
|} | |||
==== Notes ==== | |||
* For any valid combination of the above directives, you can optionally add one or more manually specified addresses. | |||
=== Consequences on IPv4 configuration === | |||
{| | |||
!LL!!RD!!DHCP!!current status!!notes | |||
|- style="color: green" | |||
|no||no||method=disabled/manual|| | |||
|- style="color: green" | |||
|no||yes||method=auto||classic DHCP configuration | |||
|- style="color: brown" | |||
|yes||no||unsupported||link-local method doesn't allow manual addresses | |||
|- style="color: brown" | |||
|yes||yes||unsupported||immediate link-local, follow-up DHCP | |||
|- style="color: grey" | |||
|fallback||no||method=manual/link-local||not so useful | |||
|- style="color: brown" | |||
|fallback||yes||unsupported||DHCP with fallback to link-local} | |||
|} | |} |
Revision as of 10:46, 19 October 2013
Current status
Features
- Automatic link-local addresses
- Manual addresses
- Automatic global address
- Gateway/DNS for other hosts (IPv4 only)
Feature dependencies
- IPv6: Automatic global address needs link-local address
- Gateway needs a manual address (at least a default one), conflicts with dynamic address
IPv4/IPv6 methods
Method | Protocol | Link-local | Manual | Automatic | Gateway |
---|---|---|---|---|---|
disabled | IPv4 | none | forbidden | none | none |
ignore | IPv6 | kernel | forbidden | kernel | none |
link-local | IPv4 | userspace | forbidden | none | none |
link-local | IPv6 | kernel | forbidden | none | none |
manual | IPv4 | none | required | none | none |
manual | IPv6 | kernel | required | none | none |
auto | IPv4 | none | allowed | dhcp | none |
auto | IPv6 | kernel | allowed | ra+dhcp | none |
dhcp | IPv6 | kernel | allowed | dhcp | none |
shared | IPv4 | none | ? | none | dhcp+dns+NAT |
Notes
- Even when IPv4 is in the disabled state, the network interface communicates on the L2 level.
- There's no disable method for IPv6 and its semantics is unclear (whether disable means the same as link-local, or it also applies to the link-local address which is unaffected in all other methods).
- The usage of IPv4 and IPv6 link-local addresses substatially differs. While IPv6 uses link-local addresses for *all* methods, IPv4 only uses it for the special link-local method.
- The IPv4 disable and IPv4/manual methods only differ in the number of addresses (0 versus >=1), therefore one of them is redundant.
- The IPv6 link-local and IPv6/manual methods only differ in the number of addresses (0 versus >=1), therefore one of them is redundant.
- The IPv6 dhcp method is currently defunct.
- There's no IPv6 shared method, yet.
Feature combinations
L | M | A | G | IPv4 | IPv6 | notes |
---|---|---|---|---|---|---|
no | no | no | no | disabled | unsupported | kernel's disable_ipv6 buggy |
no | no | no | yes | invalid | invalid | missing manual address |
no | no | yes | no | auto | invalid | missing IPv6 link-local address |
no | no | yes | yes | invalid | invalid | missing manual address |
no | yes | no | no | manual | unsupported | missing kernel feature |
no | yes | no | yes | shared | unsupported | missing kernel feature |
no | yes | yes | no | auto | unsupported | missing kernel feature |
no | yes | yes | yes | invalid | invalid | both sides of dynamic configuration |
yes | no | no | no | link-local | link-local | |
yes | no | no | yes | invalid | invalid | missing manual address |
yes | no | yes | no | unsupported | auto | |
yes | no | yes | yes | invalid | invalid | missing manual address |
yes | yes | no | no | unsupported | manual | |
yes | yes | no | yes | shared | unsupported | |
yes | yes | yes | no | unsupported | auto | |
yes | yes | yes | yes | invalid | invalid | both sides of dynamic configuration |
- L: Automatic link-local addresses
- M: Manual addresses
- A: Automatic global address
- G: Gateway/DNS for other hosts
Notes
- There's a bug in the kernel (found by Dan Winship) that once setting IFF_UP with disable_ipv6=1 affects future state. But we shouldn't need disable_ipv6 just as we don't need disable_ipv4, see the next note.
- Kernel doesn't support turning link-local addressing on/off (without affecting other features).
Proposal
Use one configuration directives per feature whenever possible, use multiple configuration directives per feature where further tweaking is needed.
Configuration directives
name | value | meaning |
---|---|---|
link-local | enabled | configure LL address as soon as possible |
fallback | configure a LL address when other configuration methods failed | |
disabled | default for IPv4 | |
undefined | default for IPv6, use system default | |
rdisc | enabled | default, IPv6 only |
disabled | skip directly to DHCP (if enabled) | |
dhcp | enabled | default |
disabled | never use DHCP, only useful for IPv6 | |
sharing | enabled | provide sharing facilities |
disabled | default |
Consequences on IPv6 configuration
LL | RD | DHCP | current status | notes |
---|---|---|---|---|
no | no | no | unsupported | |
no | no | yes | invalid | |
no | yes | no | invalid | |
no | yes | yes | invalid | |
yes | no | no | method=link-local/manual | link-local |
yes | no | yes | broken | link-local and DHCPv6 (without rdisc) |
yes | yes | no | unsupported | link-local and rdisc only |
yes | yes | yes | method=auto | link-local and rdisc, DHCPv6 if requested by router |
Notes
- For any valid combination of the above directives, you can optionally add one or more manually specified addresses.
Consequences on IPv4 configuration
LL | RD | DHCP | current status | notes |
---|---|---|---|---|
no | no | method=disabled/manual | ||
no | yes | method=auto | classic DHCP configuration | |
yes | no | unsupported | link-local method doesn't allow manual addresses | |
yes | yes | unsupported | immediate link-local, follow-up DHCP | |
fallback | no | method=manual/link-local | not so useful | |
fallback | yes | unsupported | DHCP with fallback to link-local} |