[Csync2] ipv6 problems

Lars Ellenberg lars.ellenberg at linbit.com
Tue Apr 19 13:14:19 CEST 2016


On Mon, Apr 18, 2016 at 07:16:31PM +1000, Aristedes Maniatis wrote:
> I have a server where I upgraded csync2 to version 2.0 by mistake. Unfortunately I cannot find any changelogs or documentation for the new version. I started reading commit messages, but its pretty slow going.
> 
> Unfortunately csync now binds only to the ipv6 address and ignores all the ipv4 addresses. Running csync like this:

I don't think so.
It's supposed to bind to something that is suitable for *both* IPv6 and IPv4.

Tried to "telnet" (or socat) to that port, using an IPv4 address?
Should give at least an established TCP connection.


>     csync2 -ii -v
> 
> gives me only
> 
>     # netstat -na | grep 30865
>     tcp6       0      0 *.30865                *.*                    LISTEN
> 
> 
> Although I don't have ipv6 specifically configured, it is enabled in
> the kernel and present on localhost. It appears that ipv6 prevents
> csync listening on ipv4 at all.
> 
> 
> # ifconfig
> em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
> 	options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
> 	ether 00:30:48:7d:26:50
> 	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
> 	media: Ethernet autoselect (1000baseT <full-duplex>)
> 	status: active
> em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
> 	options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
> 	ether 00:30:48:7d:26:50
> 	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
> 	media: Ethernet autoselect (1000baseT <full-duplex>)
> 	status: active
> lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
> 	options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
> 	inet6 ::1 prefixlen 128
> 	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
> 	inet 127.0.0.1 netmask 0xff000000
> 	nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
> lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
> 	options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
> 	ether 00:30:48:7d:26:50
> 	inet 10.100.2.1 netmask 0xffff0000 broadcast 10.100.255.255
> 	inet 10.100.53.1 netmask 0xffffffff broadcast 10.100.53.1
> 	inet 10.100.80.1 netmask 0xffffffff broadcast 10.100.80.1
> 	inet 10.100.48.1 netmask 0xffffffff broadcast 10.100.48.1
> 	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
> 	media: Ethernet autoselect
> 	status: active
> 	laggproto failover lagghash l2,l3,l4
> 	laggport: em0 flags=5<MASTER,ACTIVE>
> 	laggport: em1 flags=0<>
> 
> 
> 
> Is there a way to force csync to bind to a specific IP address?
> Or compile out ipv6 support completely?

You can tell it to bind to "-N your.node.name".
If not specified, it will use the "any" address
(pass a NULL node to getaddrinfo)

The relevant function is "csync_server_bind()" in csync2.c

It uses getaddrinfo with hints set to AF_UNSPEC to get
at a socket address to bind to that is supposed
to allow both IPv6 and IPv4.
At least that's how it works here.

If you want a personal quickfix,
you can s/AF_UNSPEC/AF_INET/ and hope for the best.

If you want to figure out what actually goes wrong,
and help find a real fix, that's the place to start.

Cheers,

	Lars



More information about the Csync2 mailing list