2

I am trying to get an IPv6 IP that allows me to access my Pi Zero from other devices, specifically for Pi-Hole DNS. I would like to use this IP in the settings of my router to replace the default IPv6 DNS. Currently when running "ifconfig" Pi returns the following IPv4 and IPv6 addresses:

inet 192.168.2.2  netmask 255.255.255.0  broadcast 192.168.2.255
inet6 fe80::be5:fb6e:5196:1f51  prefixlen 64  scopeid 0x20<link>

I am certain that the router supports IPv6 as all the connected smartphones and PCs show their own global IPv6 address inside the control panel of the router and pinging google.com via IPv6 from these devices works. Pinging google.com from Pi returns the following:

pi@raspberrypi:~ $ ping6 google.com
connect: Network is unreachable

The Pi is connected to the router via a Micro-USB to Ethernet adapter. I have tried enabling local IPv6 address (ULA) in the router, but it did not change the content of "ifconfig". It did however give the other devices a ULA address. What would I have to do to so that the Pi has a static and functioning IPv6 address that would allow me to specify it inside the DNS settings of the router/devices in the same network.

4
  • edit /etc/dhcpcd.conf and add the static IP in there Commented Feb 5, 2021 at 0:27
  • Doing that just adds a "global" IPv6 address. Pinging it still returns "Destination host unreachable".
    – Terrails
    Commented Feb 5, 2021 at 12:03
  • Can you ping6 the routers link-local ipv6 address? This should do if there is no other router between it.
    – Ingo
    Commented Feb 5, 2021 at 20:37
  • Getting the same "Network is unreachable" error. Pinging the router from other devices work flawlessly.
    – Terrails
    Commented Feb 5, 2021 at 21:49

1 Answer 1

2

After debugging with tcpdump I realized that the router was sending an advertisement. I have also realized that an IPv6 address was assigned to the Pi when running tcpdump. After asking on another forum, I found out that my ethernet adapter fails to handle multicast correctly. This is why it has worked when using tcpdump because tcpdump turns promiscuous mode on while its running.

To enable promiscuous mode use the following command for the desired interface (in my case it was eth0):

ip link set promisc on dev eth0

I have also added the same line to rc.local, so that it stays in promiscuous mode on reboot.

Buying a better ethernet adapter would probably be a better idea, which is what I'm going to. This is just a temporary solution.

1
  • 2
    Please take note that using /etc/rc.local has limitations due to Compatibility with SysV. We have seen many problems here on this site using it. Following the recommendation of the developers from systemd you should avoid using it.
    – Ingo
    Commented Feb 6, 2021 at 20:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.