[Dibbler] Dibbler relay issue

Mathias Koerber mathias at koerber.org
Mon Jul 1 10:13:27 CEST 2013


I am trying to get a DIbbler relay working in a purely VMware VM setup

I have a VMware Fusion setup with 3 guest hosts

networks:  VMnet1:  shared
                 VMnet6:  HostOnly


System A: Dibbler client
VMnet1:
> $ ifconfig eth0
> eth0      Link encap:Ethernet  HWaddr 00:0C:29:8B:21:8E  
>           inet addr:172.16.195.132  Bcast:172.16.195.255 
> Mask:255.255.255.0
>           inet6 addr: fd77:6202:2954:2b49::1:132/112 Scope:Global
>           inet6 addr: fe80::20c:29ff:fe8b:218e/64 Scope:Link
>           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>           RX packets:3838 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:2122 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:1000
>           RX bytes:4593945 (4.3 MiB)  TX bytes:190321 (185.8 KiB)
>
VMnet6:
> $ ifconfig eth2
> eth2      Link encap:Ethernet  HWaddr 00:0C:29:8B:21:A2  
>           inet addr:10.10.10.132  Bcast:10.10.10.255  Mask:255.255.255.0
>           inet6 addr: fd77:6202:2954:2b49::6:132/112 Scope:Global
>           inet6 addr: fe80::20c:29ff:fe8b:21a2/64 Scope:Link
>           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>           RX packets:201 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:546 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:1000
>           RX bytes:24706 (24.1 KiB)  TX bytes:48742 (47.5 KiB)
    with /etc/dibbler/client.conf:

     log-mode full
     log-level 8
     iface eth2 {
           option dns-server
           option domain
           ia
            }



System B: Dibbler Relay:


# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:8A:40:AA 
          inet addr:172.16.195.188  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fd77:6202:2954:2b49::1:188/112 Scope:Global
          inet6 addr: fe80::20c:29ff:fe8a:40aa/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:495 errors:0 dropped:0 overruns:0 frame:0
          TX packets:342 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:47386 (46.2 KiB)  TX bytes:44822 (43.7 KiB)

[root at mk-rhel64-64-a ~]# ifconfig eth2
eth2      Link encap:Ethernet  HWaddr 00:0C:29:8A:40:BE 
          inet addr:10.6.1.188  Bcast:10.6.1.255  Mask:255.255.255.0
          inet6 addr: fd77:6202:2954:2b49::6:188/112 Scope:Global
          inet6 addr: fe80::20c:29ff:fe8a:40be/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:92 errors:0 dropped:0 overruns:0 frame:0
          TX packets:103 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:9972 (9.7 KiB)  TX bytes:8006 (7.8 KiB)

and the following config:

# cat /etc/dibbler/relay.conf
log-level 8
log-mode full

interface-id-order after

iface eth0 {
    server unicast fd77:6202:2954:2b49::1:136
}

iface eth2 {
        client multicast yes
        interface-id 2000
}


I can start he dibbler-relay just fine:

> [root at mk-rhel64-64-a dibbler]# dibbler-relay start
> | Dibbler - a portable DHCPv6, version 0.8.4 (RELAY, Linux port)
> | Authors : Tomasz Mrugalski<thomson(at)klub.com.pl>,Marek
> Senderski<msend(at)o2.pl>
> | Licence : GNU GPL v2 only. Developed at Gdansk University of Technology.
> | Homepage: http://klub.com.pl/dhcpv6/
> Starting daemon...

The log also looks good:

> [root at mk-rhel64-64-a dibbler]# cat /var/log/dibbler/*log
> 2013.07.01 15:55:37 Relay Notice    | Dibbler - a portable DHCPv6,
> version 0.8.4 (RELAY, Linux port)
> 2013.07.01 15:55:37 Relay Notice    My pid (26095) is stored in
> /var/lib/dibbler/relay.pid
> 2013.07.01 15:55:37 Relay Notice    Detected iface eth2/4,
> MAC=00:0c:29:8a:40:be.
> 2013.07.01 15:55:37 Relay Notice    Detected iface eth1/3,
> MAC=00:0c:29:8a:40:b4.
> 2013.07.01 15:55:37 Relay Notice    Detected iface eth0/2,
> MAC=00:0c:29:8a:40:aa.
> 2013.07.01 15:55:37 Relay Notice    Detected iface lo/1,
> MAC=00:00:00:00:00:00.
> 2013.07.01 15:55:37 Relay Notice    Parsing /etc/dibbler/relay.conf
> config file...
> 2013.07.01 15:55:37 Relay Debug     Parsing config done.
> 2013.07.01 15:55:37 Relay Debug     2 interface(s) specified in
> /etc/dibbler/relay.conf
> 2013.07.01 15:55:37 Relay Info      Interface eth0/2 configuration has
> been loaded.
> 2013.07.01 15:55:37 Relay Info      Interface eth2/4 configuration has
> been loaded.
> 2013.07.01 15:55:37 Relay Debug     Guess-mode disabled. RELAY-REPL
> from the server without interface-id option will be dropped.
> 2013.07.01 15:55:37 Relay Notice    Creating srv unicast
> (fd77:6202:2954:2b49::1:188) socket on the eth0/2 interface.
> 2013.07.01 15:55:37 Relay Notice    Creating clnt multicast
> (ff02::1:2) socket on the eth2/4 interface.
> 2013.07.01 15:55:37 Relay Debug     Accepting messages.

So does netstat:

> [root at mk-rhel64-64-a dibbler]# netstat -nap | grep 547
> udp        0      0 ff02::1:2:547              
> :::*                                    26095/dibbler-relay
> udp        0      0 fd77:6202:2954:2b49::1:1:547
> :::*                                    26095/dibbler-relay


When I start the dibbler-client:

> # /usr/sbin/dibbler-client start
> | Dibbler - a portable DHCPv6, version 0.4.1(CLIENT, Linux port)
> | Authors : Tomasz Mrugalski<thomson(at)klub.com.pl>,Marek
> Senderski<msend(at)o2.pl>
> | Licence : GNU GPL v2 or later. Developed at Gdansk University of
> Technology.
> | Homepage: http://klub.com.pl/dhcpv6/
> Starting daemon...
> [root at mk-rhel4-64-b dibbler]

It sends solicit messages:

> # 15:58:38.581461 fe80::20c:29ff:fe8b:21a2.dhcpv6-client >
> ff02::1:2.dhcpv6-server: [udp sum ok] dhcp6 solicit (xid=fb1243
> (client ID hwaddr/time type 0 time 1372665517 000c298b21a2) (IA_NA
> IAID:1 T1:4294967295 T2:4294967295 (opt_5)) (elapsed time 1) (option
> request DNS opt_24)) [hlim 1] (len 88)
>         0x0000:  6000 0000 0058 1101 fe80 0000 0000 0000  `....X..........
>         0x0010:  020c 29ff fe8b 21a2 ff02 0000 0000 0000  ..)...!.........
>         0x0020:  0000 0000 0001 0002 0222 0223 0058 c8a6  .........".#.X..
>         0x0030:  01fb 1243 0001 000e 0001 0000 51d1 36ad  ...C........Q.6.
>         0x0040:  000c 298b 21a2 0003 0028 0000 0001 ffff  ..).!....(......
>         0x0050:  ffff ffff ffff 0005 0018 0000 0000 0000  ................
>         0x0060:  0000 0000 0000 0000 0000 ffff ffff ffff  ................
>         0x0070:  ffff 0008 0002 0001 0006 0004 0017 0018  ................
> 15:58:39.581172 fe80::20c:29ff:fe8b:21a2.dhcpv6-client >
> ff02::1:2.dhcpv6-server: [udp sum ok] dhcp6 solicit (xid=fb1243
> (client ID hwaddr/time type 0 time 1372665517 000c298b21a2) (IA_NA
> IAID:1 T1:4294967295 T2:4294967295 (opt_5)) (elapsed time 2) (option
> request DNS opt_24)) [hlim 1] (len 88)
>         0x0000:  6000 0000 0058 1101 fe80 0000 0000 0000  `....X..........
>         0x0010:  020c 29ff fe8b 21a2 ff02 0000 0000 0000  ..)...!.........
>         0x0020:  0000 0000 0001 0002 0222 0223 0058 c8a5  .........".#.X..
>         0x0030:  01fb 1243 0001 000e 0001 0000 51d1 36ad  ...C........Q.6.
>         0x0040:  000c 298b 21a2 0003 0028 0000 0001 ffff  ..).!....(......
>         0x0050:  ffff ffff ffff 0005 0018 0000 0000 0000  ................
>         0x0060:  0000 0000 0000 0000 0000 ffff ffff ffff  ................
>         0x0070:  ffff 0008 0002 0002 0006 0004 0017 0018  ................

I also see the solicit messages on eth2 of  the relay-server:
> 2013.07.01 15:55:37 Relay Notice    Creating clnt multicast
> (ff02::1:2) socket on the eth2/4 interface.
> 2013.07.01 15:55:37 Relay Debug     Accepting messages.
> 15:58:38.552707 IP6 fe80::20c:29ff:fe8b:21a2.dhcpv6-client >
> ff02::1:2.dhcpv6-server: dhcp6 solicit
> 15:58:39.552547 IP6 fe80::20c:29ff:fe8b:21a2.dhcpv6-client >
> ff02::1:2.dhcpv6-server: dhcp6 solicit
> 15:58:41.552737 IP6 fe80::20c:29ff:fe8b:21a2.dhcpv6-client >
> ff02::1:2.dhcpv6-server: dhcp6 solicit
> 15:58:45.552313 IP6 fe80::20c:29ff:fe8b:21a2.dhcpv6-client >
> ff02::1:2.dhcpv6-server: dhcp6 solicit
> 15:58:53.552353 IP6 fe80::20c:29ff:fe8b:21a2.dhcpv6-client >
> ff02::1:2.dhcpv6-server: dhcp6 solicit
> 15:59:09.553005 IP6 fe80::20c:29ff:fe8b:21a2.dhcpv6-client >
> ff02::1:2.dhcpv6-server: dhcp6 solicit
> 15:59:40.553355 IP6 fe80::20c:29ff:fe8b:21a2.dhcpv6-client >
> ff02::1:2.dhcpv6-server: dhcp6 solicit

But the packets are not logged by dibbler-relay, nor are they relayed to
the server via eth0


The relay-server can ping the configured server just fine:

> # ping6 fd77:6202:2954:2b49::1:136
> PING fd77:6202:2954:2b49::1:136(fd77:6202:2954:2b49::1:136) 56 data bytes
> 64 bytes from fd77:6202:2954:2b49::1:136: icmp_seq=1 ttl=64 time=0.886 ms
> 64 bytes from fd77:6202:2954:2b49::1:136: icmp_seq=2 ttl=64 time=0.295 ms
> 64 bytes from fd77:6202:2954:2b49::1:136: icmp_seq=3 ttl=64 time=0.378 ms
> 64 bytes from fd77:6202:2954:2b49::1:136: icmp_seq=4 ttl=64 time=0.344 ms
> ^C
> --- fd77:6202:2954:2b49::1:136 ping statistics ---
> 4 packets transmitted, 4 received, 0% packet loss, time 3109ms


when I strace the relay, I see that it does not receive the packets
(which tcpdump shows):

> [root at mk-rhel64-64-a dibbler]# strace -ff -o dibbler.strace
> /usr/local/sbin/dibbler-relay start  &
> [1] 28277
> [root at mk-rhel64-64-a dibbler]# | Dibbler - a portable DHCPv6, version
> 0.8.4 (RELAY, Linux port)
> | Authors : Tomasz Mrugalski<thomson(at)klub.com.pl>,Marek
> Senderski<msend(at)o2.pl>
> | Licence : GNU GPL v2 only. Developed at Gdansk University of Technology.
> | Homepage: http://klub.com.pl/dhcpv6/
> Starting daemon...
>
> [root at mk-rhel64-64-a dibbler]#
> [root at mk-rhel64-64-a dibbler]# tail -f *
> ==> dibbler-relay.log <==
> 2013.07.01 16:08:28 Relay Notice    Detected iface lo/1,
> MAC=00:00:00:00:00:00.
> 2013.07.01 16:08:28 Relay Notice    Parsing /etc/dibbler/relay.conf
> config file...
> 2013.07.01 16:08:28 Relay Debug     Parsing config done.
> 2013.07.01 16:08:28 Relay Debug     2 interface(s) specified in
> /etc/dibbler/relay.conf
> 2013.07.01 16:08:28 Relay Info      Interface eth0/2 configuration has
> been loaded.
> 2013.07.01 16:08:28 Relay Info      Interface eth2/4 configuration has
> been loaded.
> 2013.07.01 16:08:28 Relay Debug     Guess-mode disabled. RELAY-REPL
> from the server without interface-id option will be dropped.
> 2013.07.01 16:08:28 Relay Notice    Creating srv unicast
> (fd77:6202:2954:2b49::1:188) socket on the eth0/2 interface.
> 2013.07.01 16:08:28 Relay Notice    Creating clnt multicast
> (ff02::1:2) socket on the eth2/4 interface.
> 2013.07.01 16:08:28 Relay Debug     Accepting messages.
>
> ==> dibbler.strace.28280 <==
> munmap(0x7f577601a000, 4096)            = 0
> close(2)                                = 0
> getppid()                               = 28277
> rt_sigaction(SIGTTOU, {SIG_IGN, [TTOU], SA_RESTORER|SA_RESTART,
> 0x3493832920}, {SIG_DFL, [], 0}, 8) = 0
> rt_sigaction(SIGTTIN, {SIG_IGN, [TTIN], SA_RESTORER|SA_RESTART,
> 0x3493832920}, {SIG_DFL, [], 0}, 8) = 0
> rt_sigaction(SIGTSTP, {SIG_IGN, [TSTP], SA_RESTORER|SA_RESTART,
> 0x3493832920}, {SIG_DFL, [], 0}, 8) = 0
> clone(child_stack=0,
> flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
> child_tidptr=0x7f5775d0a9f0) = 28281
> close(3)                                = 0
> munmap(0x7f5776019000, 4096)            = 0
> exit_group(0)                           = ?
>
> ==> dibbler.strace.28281 <==
> set_robust_list(0x7f5775d0aa00, 0x18)   = 0
> setpgid(0, 0)                           = 0
> rt_sigaction(SIGHUP, {SIG_IGN, [HUP], SA_RESTORER|SA_RESTART,
> 0x3493832920}, {SIG_DFL, [], 0}, 8) = 0
> clone(child_stack=0,
> flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
> child_tidptr=0x7f5775d0a9f0) = 28282
> close(3)                                = 0
> munmap(0x7f5776019000, 4096)            = 0
> exit_group(0)                           = ?
>
> ==> dibbler.strace.28282 <==
> open("relay-TransMgr.xml", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 2
> write(2, "<TRelTransMgr>\n", 15)        = 15
> write(2, "<!-- RelTransMgr dumps are not i"..., 51) = 51
> write(2, "</TRelTransMgr>\n", 16)       = 16
> close(2)                                = 0
> rt_sigaction(SIGTERM, {0x404320, [TERM], SA_RESTORER|SA_RESTART,
> 0x3493832920}, {SIG_DFL, [], 0}, 8) = 0
> rt_sigaction(SIGINT, {0x404320, [INT], SA_RESTORER|SA_RESTART,
> 0x3493832920}, {SIG_DFL, [], 0}, 8) = 0
> stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=402, ...}) = 0
> write(3, "2013.07.01 16:08:28 Relay Debug "..., 56) = 56
> select(2, [0 1], NULL, NULL, {2147483647, 0}


Here is the part from strace that shows the relay binding fo ff02::1:2 etc:

> close(1)                                = 0
> socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 1
> setsockopt(1, SOL_IPV6, 0x31 /* IPV6_??? */, [1], 4) = 0
> getuid()                                = 0
> setsockopt(1, SOL_SOCKET, SO_BINDTODEVICE, "eth2\0", 5) = 0
> bind(1, {sa_family=AF_INET6, sin6_port=htons(547), inet_pton(AF_INET6,
> "ff02::1:2", &sin6_addr), sin6_flowinfo=0,
> sin6_scope_id=if_nametoindex("eth2")}, 28) = 0
> socket(PF_NETLINK, SOCK_RAW, 0)         = 2
> bind(2, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
> getsockname(2, {sa_family=AF_NETLINK, pid=28282, groups=00000000},
> [12]) = 0
> sendto(2, "\24\0\0\0\26\0\1\3\3748\321Q\0\0\0\0\0\0\0\0", 20, 0,
> {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
> recvmsg(2, {msg_name(12)={sa_family=AF_NETLINK, pid=0,
> groups=00000000},
> msg_iov(1)=[{"0\0\0\0\24\0\2\0\3748\321Qzn\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"...,
> 4096}], msg_controllen=0, msg_flags=0}, 0) = 228
> recvmsg(2, {msg_name(12)={sa_family=AF_NETLINK, pid=0,
> groups=00000000},
> msg_iov(1)=[{"@\0\0\0\24\0\2\0\3748\321Qzn\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"...,
> 4096}], msg_controllen=0, msg_flags=0}, 0) = 384
> recvmsg(2, {msg_name(12)={sa_family=AF_NETLINK, pid=0,
> groups=00000000},
> msg_iov(1)=[{"\24\0\0\0\3\0\2\0\3748\321Qzn\0\0\0\0\0\0\1\0\0\0\24\0\1\0\0\0\0\0"...,
> 4096}], msg_controllen=0, msg_flags=0}, 0) = 20
> close(2)                                = 0
> setsockopt(1, SOL_IPV6, IPV6_ADD_MEMBERSHIP,
> "\377\2\0\0\0\0\0\0\0\0\0\0\0\1\0\2\4\0\0\0", 20) = 0
> open("relay-IfaceMgr.xml", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 2
> write(2, "<RelIfaceMgr>\n", 14)         = 14
> write(2, "  <IfaceIface name=\"eth2\" ifinde"..., 66) = 66
> write(2, "    <!-- no-loopback running mul"..., 43) = 43
> write(2, "    <!-- PrefixLength configured"..., 42) = 42
> write(2, "    <!-- 1 link scoped addrs -->"..., 33) = 33
> write(2, "    <Addr>fe80::20c:29ff:fe8a:40"..., 42) = 42
> write(2, "    <!-- 1 non-local addrs -->\n", 31) = 31
> write(2, "    fd77:6202:2954:2b49::6:188  "..., 63) = 63
> write(2, "    <IfaceSocket fd=\"1\" port=\"54"..., 122) = 122
> write(2, "  </IfaceIface>\n", 16)       = 16
> write(2, "  <IfaceIface name=\"eth1\" ifinde"..., 66) = 66
> write(2, "    <!-- no-loopback running mul"..., 43) = 43
> write(2, "    <!-- PrefixLength configured"..., 42) = 42
> write(2, "    <!-- 1 link scoped addrs -->"..., 33) = 33
> write(2, "    <Addr>fe80::20c:29ff:fe8a:40"..., 42) = 42
> write(2, "    <!-- 0 non-local addrs -->\n", 31) = 31
> write(2, "    <Mac>00:0c:29:8a:40:b4</Mac>"..., 33) = 33
> write(2, "  </IfaceIface>\n", 16)       = 16
> write(2, "  <IfaceIface name=\"eth0\" ifinde"..., 66) = 66
> write(2, "    <!-- no-loopback running mul"..., 43) = 43
> write(2, "    <!-- PrefixLength configured"..., 46) = 46
> write(2, "    <!-- 1 link scoped addrs -->"..., 33) = 33
> write(2, "    <Addr>fe80::20c:29ff:fe8a:40"..., 42) = 42
> write(2, "    <!-- 1 non-local addrs -->\n", 31) = 31
> write(2, "    fd77:6202:2954:2b49::1:188  "..., 63) = 63
> write(2, "    <IfaceSocket fd=\"0\" port=\"54"..., 122) = 122
> write(2, "  </IfaceIface>\n", 16)       = 16
> write(2, "  <IfaceIface name=\"lo\" ifindex="..., 66) = 66
> write(2, "    <!-- looback running no-mult"..., 42) = 42
> write(2, "    <!-- PrefixLength configured"..., 52) = 52
> write(2, "    <!-- 0 link scoped addrs -->"..., 33) = 33
> write(2, "    <!-- 1 non-local addrs -->\n", 31) = 31
> write(2, "    ::1    <Mac>00:00:00:00:00:0"..., 40) = 40
> write(2, "  </IfaceIface>\n", 16)       = 16
> write(2, "</RelIfaceMgr>\n", 15)        = 15
> close(2)                                = 0
> open("relay-TransMgr.xml", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 2
> write(2, "<TRelTransMgr>\n", 15)        = 15
> write(2, "<!-- RelTransMgr dumps are not i"..., 51) = 51
> write(2, "</TRelTransMgr>\n", 16)       = 16
> close(2)                                = 0
> rt_sigaction(SIGTERM, {0x404320, [TERM], SA_RESTORER|SA_RESTART,
> 0x3493832920}, {SIG_DFL, [], 0}, 8) = 0
> rt_sigaction(SIGINT, {0x404320, [INT], SA_RESTORER|SA_RESTART,
> 0x3493832920}, {SIG_DFL, [], 0}, 8) = 0
> stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=402, ...}) = 0
> write(3, "2013.07.01 16:08:28 Relay Debug "..., 56) = 56
> select(2, [0 1], NULL, NULL, {2147483647, 0}

What else should I look for to get this relay running?

Mathias









More information about the Dibbler mailing list