doc:appunti:net:ipv6_on_ppp
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:appunti:net:ipv6_on_ppp [2024/07/05 12:51] – [IPv6 source address problem] niccolo | doc:appunti:net:ipv6_on_ppp [2024/07/05 15:37] (current) – [Troubleshooting IPv6 problems] niccolo | ||
---|---|---|---|
Line 547: | Line 547: | ||
To give a **persistent addresses** to the client, take note of the DUID received by the server and put it into a **host** section of the server configuration **dhcp6s.conf** (see above). The DUID is composed of a 64 bit random string and the MAC address of the client' | To give a **persistent addresses** to the client, take note of the DUID received by the server and put it into a **host** section of the server configuration **dhcp6s.conf** (see above). The DUID is composed of a 64 bit random string and the MAC address of the client' | ||
- | ==== IPv6 source | + | FIXME: What to do to protect LAN hosts from the internet? |
+ | |||
+ | ===== MRU and MTU for PPPoE ===== | ||
+ | |||
+ | In Debian GNU/Linux the default configuration file for the **pppd** daemon is **/ | ||
+ | |||
+ | The standard MTU size for Ethernet is 1500 bytes; PPPoE header uses 6 bytes and the PPP protocol ID uses 2 bytes, so the default MTU on a PPPoE interface is **1492** bytes. On the receiving side we don't want to pose restrictions to the peer, so we stay with the 1500 bytes default: | ||
+ | |||
+ | < | ||
+ | debug | ||
+ | mtu 1492 | ||
+ | mru 1500 | ||
+ | </ | ||
+ | |||
+ | During the negotiation phase the **pppd** daemon may receive specific MRU requests from the internet provider, here it is a //debug// log in syslog: | ||
+ | |||
+ | < | ||
+ | pppd[975]: rcvd [LCP ConfReq id=0x1 <mru 1488> <auth pap> <magic 0xd18deef6> | ||
+ | </ | ||
+ | |||
+ | In this case the pppd will configure the **ppp** interface with the requested **1488 MTU**, instead of the 1492 from the configuration file. | ||
+ | |||
+ | ===== IPv6 Prefixes ===== | ||
+ | |||
+ | ^ FE80::/ | ||
+ | ^ FF02:: | ||
+ | ^ FF02:: | ||
+ | ^ FF02:: | ||
+ | |||
+ | |||
+ | ===== Troubleshooting IPv6 problems ===== | ||
+ | |||
+ | In general, to troubleshoot any networking issue, you use the **ping** command to check if the remote address is responding: | ||
+ | |||
+ | < | ||
+ | # ping -6 2a01: | ||
+ | </ | ||
- | FIXME It was a problem | + | In some cases it is useful also to **ping your own addresses** (you can have more than one). Discover all of them with: |
< | < | ||
- | ip -6 address show dev enp0s7 | + | # ip -6 address show dev enp0s7 |
</ | </ | ||
Line 565: | Line 601: | ||
</ | </ | ||
- | Notice | + | In the example above the interface have two **global** scope addresses, one assigned via DHCPv6 and the other obtained via SLAAC. The first one has the **dadfailed** |
- | Enabling the DHCPv6 | + | If you have only one global IP address |
< | < | ||
+ | # ip -6 route show | ||
+ | 2a02: | ||
+ | 2a02: | ||
+ | fe80::/64 dev enp0s7 proto kernel metric 256 pref medium | ||
+ | default via fe80:: | ||
+ | </ | ||
+ | |||
+ | **NOTICE**: The default router can be reached via its **link** scope address (as seen above) or via its **global** scope address: both can be used. | ||
+ | |||
+ | If you sniff the ping request on the router, you can see the problem more clearly: | ||
+ | |||
+ | < | ||
+ | # tcpdump -i eth0 -n ' | ||
+ | ... | ||
IP6 fe80:: | IP6 fe80:: | ||
id 56698, seq 1, length 64 | id 56698, seq 1, length 64 | ||
Line 576: | Line 626: | ||
</ | </ | ||
- | The default gateway on the client | + | The client |
< | < | ||
- | ip -6 route get 2a01: | + | # ip -6 route get 2a01: |
2a01: | 2a01: | ||
via 2a02: | via 2a02: | ||
Line 587: | Line 638: | ||
</ | </ | ||
- | You can compare the result when the SLAAC is enabled: | + | You can compare the result when you have at least one working global IP address: |
< | < | ||
- | ip -6 route get 2a01: | + | # ip -6 route get 2a01: |
2a01: | 2a01: | ||
via fe80:: | via fe80:: | ||
Line 598: | Line 649: | ||
</ | </ | ||
- | In the first case the **src** address is the **link scope** one, not suitable for routing. In the second case it is the one received via SLAAC, which has a **global scope** and indeed it is working. Notice that the address of the router (shown as the **via** address) is not releveant, the //link scope// one does work. | + | In the first case the **src** address is the **link scope** one, not suitable for routing. In the second case it is the one received via SLAAC, which has a **global scope** and indeed it is working. Notice that the address of the router (shown as the **via** address) is not releveant, |
- | FIXME How to solve? | ||
- | |||
- | FIXME: What to do to protect LAN hosts from the internet? | ||
- | |||
- | ===== MRU and MTU for PPPoE ===== | ||
- | |||
- | In Debian GNU/Linux the default configuration file for the **pppd** daemon is **/ | ||
- | |||
- | The standard MTU size for Ethernet is 1500 bytes; PPPoE header uses 6 bytes and the PPP protocol ID uses 2 bytes, so the default MTU on a PPPoE interface is **1492** bytes. On the receiving side we don't want to pose restrictions to the peer, so we stay with the 1500 bytes default: | ||
- | |||
- | < | ||
- | debug | ||
- | mtu 1492 | ||
- | mru 1500 | ||
- | </ | ||
- | |||
- | During the negotiation phase the **pppd** daemon may receive specific MRU requests from the internet provider, here it is a //debug// log in syslog: | ||
- | |||
- | < | ||
- | pppd[975]: rcvd [LCP ConfReq id=0x1 <mru 1488> <auth pap> <magic 0xd18deef6> | ||
- | </ | ||
- | |||
- | In this case the pppd will configure the **ppp** interface with the requested **1488 MTU**, instead of the 1492 from the configuration file. | ||
- | |||
- | ===== IPv6 Prefixes ===== | ||
- | |||
- | ^ FE80::/ | ||
- | ^ FF02:: | ||
- | ^ FF02:: | ||
- | ^ FF02:: | ||
===== Web References ===== | ===== Web References ===== |
doc/appunti/net/ipv6_on_ppp.1720176680.txt.gz · Last modified: 2024/07/05 12:51 by niccolo