Hi everyone, I hope you're all well.
I just wanted to raise a post here about a problem I'm experiencing after upgrading a server to 15.0-RELEASE where jails seem to be unable to make DNS requests.
I first raised this issue as I thought it was a problem with how BastilleBSD handles networking here: https://github.com/BastilleBSD/bastille/issues/1468
However, now after some testing it seems the problem may be more related to Broadcom network cards as in one of my problem servers (I have two problem ones), switching over to the installed Intel card resolve the issue.
More information on the actual issue:
Some of my jails are VNET jails (they have a network accessible IP address) and they have been working absolutely fine on FreeBSD 14.3 and previously. However, if I upgrade the host to 15.0, these jails become unable to make any DNS requests. They can ping any IP address on the internet absolutely fine, they can ping the DNS server's IP address, but any DNS request just seems to get lost.
i.e. a ping to an IP address as below is fine
but a ping to quad9.net just times out
My /etc/resolv.conf is fine, as below:
but if we ignore that anyway and try a direct DNS request to the server, it times out:
If I roll the host back to 14.3-RELEASE, normally functionality returns - DNS requests are fine.
I have two servers that have this issue, different server models, but similar network cards - Broadcom BCM5719 and BCM5720.
One of these servers had an additional Intel NIC in it as well, so I switched that server over to that card today, and the jails work absolutely fine on 15.0-RELEASE again.
To double-down on it being Broadcom as the problem here, on the server above with the Intel NIC I just created a new test VNET jail, setting it's host NIC to the Broadcom rather than Intel, and it suffers the same problem mentioned above (ping to IP fine but DNS requests time out) whilst the Intel connected jail continues to operate fine.
So, my question really is - where should I look next if I want to ensure connectivity to the VNET jails remains robust when using 15.0 on these Broadcom cards? I know Broadcom are a bit of a pest, but I'd like to think this can be made to work as it did using 14.3 with a little tweak here and there.
Happy to perform any diagnostics and dump the results here if anybody can offer their knowledge!
Edit: adding some tcpdump output:
tcpdump on the host machine when using broadcom NIC: we don't see any responses
But on the intel card, we get a response:
I just wanted to raise a post here about a problem I'm experiencing after upgrading a server to 15.0-RELEASE where jails seem to be unable to make DNS requests.
I first raised this issue as I thought it was a problem with how BastilleBSD handles networking here: https://github.com/BastilleBSD/bastille/issues/1468
However, now after some testing it seems the problem may be more related to Broadcom network cards as in one of my problem servers (I have two problem ones), switching over to the installed Intel card resolve the issue.
More information on the actual issue:
Some of my jails are VNET jails (they have a network accessible IP address) and they have been working absolutely fine on FreeBSD 14.3 and previously. However, if I upgrade the host to 15.0, these jails become unable to make any DNS requests. They can ping any IP address on the internet absolutely fine, they can ping the DNS server's IP address, but any DNS request just seems to get lost.
i.e. a ping to an IP address as below is fine
Code:
[postgres]:
root@postgres:~ # ping 9.9.9.9
PING 9.9.9.9 (9.9.9.9): 56 data bytes
64 bytes from 9.9.9.9: icmp_seq=0 ttl=60 time=14.501 ms
64 bytes from 9.9.9.9: icmp_seq=1 ttl=60 time=14.475 ms
64 bytes from 9.9.9.9: icmp_seq=2 ttl=60 time=14.617 ms
but a ping to quad9.net just times out
Code:
root@postgres:~ # ping quad9.net
ping: cannot resolve quad9.net: Name could not be resolved at this time
My /etc/resolv.conf is fine, as below:
Code:
root@postgres:~ # cat /etc/resolv.conf
nameserver 9.9.9.9
options edns0
but if we ignore that anyway and try a direct DNS request to the server, it times out:
Code:
root@postgres:~ # drill quad9.net @9.9.9.9
Error: error sending query: Could not send or receive, because of network error
If I roll the host back to 14.3-RELEASE, normally functionality returns - DNS requests are fine.
I have two servers that have this issue, different server models, but similar network cards - Broadcom BCM5719 and BCM5720.
One of these servers had an additional Intel NIC in it as well, so I switched that server over to that card today, and the jails work absolutely fine on 15.0-RELEASE again.
To double-down on it being Broadcom as the problem here, on the server above with the Intel NIC I just created a new test VNET jail, setting it's host NIC to the Broadcom rather than Intel, and it suffers the same problem mentioned above (ping to IP fine but DNS requests time out) whilst the Intel connected jail continues to operate fine.
So, my question really is - where should I look next if I want to ensure connectivity to the VNET jails remains robust when using 15.0 on these Broadcom cards? I know Broadcom are a bit of a pest, but I'd like to think this can be made to work as it did using 14.3 with a little tweak here and there.
Happy to perform any diagnostics and dump the results here if anybody can offer their knowledge!
Edit: adding some tcpdump output:
tcpdump on the host machine when using broadcom NIC: we don't see any responses
Code:
> $ sudo tcpdump -i bge0 -v port 53
tcpdump: listening on bge0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
16:50:08.606533 IP (tos 0x0, ttl 64, id 33187, offset 0, flags [none], proto UDP (17), length 55)
<local ip of jail>.39194 > dns9.quad9.net.domain: 35593+ A? quad9.net. (27)
16:50:13.628043 IP (tos 0x0, ttl 64, id 33188, offset 0, flags [none], proto UDP (17), length 55)
<local ip of jail>.11771 > dns9.quad9.net.domain: 35593+ A? quad9.net. (27)
16:50:18.752908 IP (tos 0x0, ttl 64, id 33189, offset 0, flags [none], proto UDP (17), length 55)
<local ip of jail>.34978 > dns9.quad9.net.domain: 35593+ A? quad9.net. (27)
But on the intel card, we get a response:
Code:
> $ sudo tcpdump -i igb0 -v port 53
tcpdump: listening on igb0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
16:53:13.968660 IP (tos 0x0, ttl 64, id 8468, offset 0, flags [none], proto UDP (17), length 55)
<hostname of jail>.21816 > dns9.quad9.net.domain: 3771+ A? quad9.net. (27)
16:53:13.983571 IP (tos 0x0, ttl 60, id 58815, offset 0, flags [none], proto UDP (17), length 71)
dns9.quad9.net.domain > <hostname of jail>.21816: 3771 1/0/0 quad9.net. A 195.176.255.138 (43)