cannot ping6 router unless it's in promisc mode
Shadow Hawkins on Friday, 08 August 2008 01:49:15
I have a router running debian linux (2.6.25 kernel), with aiccu on it. Its tunnel endpoint is 2001:4830:1200:7c::2, and I have a subnet, 2001:4830:1231::/48, advertised to the local network with radvd. This is all set up and working except for one problem. If I add a address from the subnet to an interface on the router, I can ping it from outside, but cannot ping it from the internal network:
PING 2001:4830:1231::1(2001:4830:1231::1) 56 data bytes
From 2001:4830:1231:0:20c:f1ff:feb2:9663 icmp_seq=1 Destination unreachable: Address unreachable
That address was added to the router's lan-facing ethernet via the command:
ip -6 addr add 2001:4830:1231::1/64 dev eth0
Hosts inside the subnet can ping the tunnel endpoint ok, and there's no routing trouble between them and the rest of the net.
ipv6tables is empty; the router has net.ipv6.conf.all.forwarding=1. (It also has net.ipv4.ip_forward=1 and has the ipmasq debian package installed, for masqerading on the ipv4 side.)
What I really don't understand is, if I put the router's eth0 in promisc mode, clients are now able to ping it. This tcpdump shows a ping that's failing until I ifconfig eth0 promisc, then it immediatly begins to succeed.
19:41:32.341227 IP6 2001:4830:1231:0:20c:f1ff:feb2:9663 > ff02::1:ff00:1: ICMP6,
solicitation, who has 2001:4830:1231::1, length 32
19:41:33.341228 IP6 2001:4830:1231:0:20c:f1ff:feb2:9663 > ff02::1:ff00:1: ICMP6,
solicitation, who has 2001:4830:1231::1, length 32
19:41:34.341219 IP6 2001:4830:1231:0:20c:f1ff:feb2:9663 > ff02::1:ff00:1: ICMP6,
solicitation, who has 2001:4830:1231::1, length 32
19:41:35.361195 IP6 2001:4830:1231:0:20c:f1ff:feb2:9663 > ff02::1:ff00:1: ICMP6,
solicitation, who has 2001:4830:1231::1, length 32
19:41:36.361193 IP6 2001:4830:1231:0:20c:f1ff:feb2:9663 > ff02::1:ff00:1: ICMP6,
solicitation, who has 2001:4830:1231::1, length 32
19:41:37.361196 IP6 2001:4830:1231:0:20c:f1ff:feb2:9663 > ff02::1:ff00:1: ICMP6,
solicitation, who has 2001:4830:1231::1, length 32
19:41:39.365205 IP6 2001:4830:1231:0:20c:f1ff:feb2:9663 > ff02::1:ff00:1: ICMP6,
solicitation, who has 2001:4830:1231::1, length 32
19:41:39.365895 IP6 2001:4830:1231::1 > 2001:4830:1231:0:20c:f1ff:feb2:9663: ICM
or advertisement, tgt is 2001:4830:1231::1, length 32
19:41:39.366064 IP6 2001:4830:1231:0:20c:f1ff:feb2:9663 > 2001:4830:1231::1: ICM
equest, seq 8, length 64
19:41:39.366600 IP6 2001:4830:1231::1 > 2001:4830:1231:0:20c:f1ff:feb2:9663: ICM
eply, seq 8, length 64
19:41:40.365382 IP6 2001:4830:1231:0:20c:f1ff:feb2:9663 > 2001:4830:1231::1: ICM
equest, seq 9, length 64
(BTW, I have just been using the tunnel endpoint address when I want to access the router from inside the subnet. However, one of the machine inside the subnet now has an aiccu tunnel of its own, and so it routes the tunnel endpoint out through that tunnel and over the internet. So I'd like to use one of the subnet addresses, since the routing for those goes through the router.)
cannot ping6 router unless it's in promisc mode
Shadow Hawkins on Friday, 08 August 2008 02:04:52
Update: I found this old message, which seems like a related problem.
http://72.14.205.104/search?q=cache:LmZJLWb4DIwJ:https://pdos.csail.mit.edu/pipermail/click/2002-February/001006.html+ipv6+ping+promisc&hl=en&ct=clnk&cd=4&gl=us
And I can also fix my problem with ifconfig eth0 allmulti, which I guess is better than promisc. But I still don't understand what's going on here.
cannot ping6 router unless it's in promisc mode
Shadow Hawkins on Friday, 08 August 2008 02:13:04
So I've now found the many other threads in this forum that end with "enable allmulti -> all fixed"
If anyone with a clue looks at this, my main remaining question is, if allmulti fixes the problem, is the underlying problem likely to be in the router's ethernet driver, and is there any point in trying to get it fixed there? Can switches screw up multicast in a way that allmulti somehow recovers from?
cannot ping6 router unless it's in promisc mode
Jeroen Massar on Friday, 08 August 2008 09:48:28
If 'allmulti' is a problem then you have a multicast problem on your network card.
One way to find out is to wireshark/tcpdump without promisc mode and then see what results you get with and without allmulti.
What type of NIC do you have in your machine? As I haven't seen this problem in quite some time.
cannot ping6 router unless it's in promisc mode
Shadow Hawkins on Friday, 08 August 2008 20:21:14
This particular machine is a thecus n2100 with RTL-8169 ethernet.
Tcpdump on the router shows no traffic at all, until I put it in allmulti, then immediatly there's neighbor discovery and ICMP6 traffic.
cannot ping6 router unless it's in promisc mode
Jeroen Massar on Friday, 08 August 2008 21:14:31
Two things come to mind:
1) realtek is not the best brand there is; but then again, I haven't had problems with those NIC's for quite some time.
2) Thecus n2100 is an ARM platform, maybe there is some kernel driver issue which causes initialization to go wrong?
IPv6 worked fine on my two slugs, I just have to revive them one day as one of the kernel updates broke both of them (lesson: never upgrade both at the same time without rebooting at that point and then having a powercut force-reboot them and find out that both are dead in the water...)
cannot ping6 router unless it's in promisc mode
Shadow Hawkins on Monday, 10 August 2009 19:18:37
See my update to http://bugs.debian.org/494363: works for me with the N2100. But I don't use the N2100 as router, it's just another machine on my network. Sorry, Joey!
Posting is only allowed when you are logged in. |