My problem has something to do with NetworkManager. I have Centos 7.4, and NetworkManager 1.8.0.
I noticed that tun0 did not have a zone, even after running:
firewall-cmd --zone=internal --add-interface=tun0
However, firewall-cmd informed me that tun0 was being managed by Network Manager. So I ran
sudo nmcli -p connection show
and found that NetworkManager had several extra tun0 devices, which were down. So I ran:
sudo nmcli -p connection delete *uuid-of-bogus-device*
for each of the extra devices. Next, I ran
sudo nmcli -p connection modify *uuid-of-WORKING-tun0* connection.zone internal
and then
sudo firewall-cmd --zone=internal--add-interface=tun0
sudo firewall-cmd --reload
At this point, resolution of LAN hostnames started working. I could see and use my LAN services through my VPN.
NetworkManager has NEVER worked! It is ALWAYS breaking stuff. I try to uninstall or at least disable it, but it keeps clawing its way up out of its grave. NetworkManager needs to be dragged out into the daylight, have a stake driven through its heart, cremated, its ashes mixed with holy water, sealed into a titanium capsule, and launched into the heart of the Sun.