Я уже как то писал в этой ветке форума про работу OpenVPN на VPS в связке с PiHole через tun0 для того, чтобы отрезалась вся реклама в интернет-трафике, идущем внутри VPN, и это решение работает замечательно. Появилась идея, чтобы сделать это на IKE2/IPsec путем поднятия StrongSwan.
В общем то оно работает, и работает отлично, с несколькими условиями
1) Надо открыть порт 53 на сервере VPS
2) Надо указать PiHole опцию Listen on all interfaces, permit all origins в Settings -> DNS
3) Надо указать принудительно в конфиге /etc/ipsec.conf
rightdns=10.100.0.1
где IP адрес - это внутренний адрес сервера Pi-Hole. и тогда все работает нормально.
Но, есть одно 'но'.
В Pi-Hole при установки опции 'Listen on all interfaces, permit all origins' сказано:
Note that the last option should not be used on devices which are directly connected to the Internet. This option is safe if your Pi-hole is located within your local network, i.e. protected behind your router, and you have not forwarded port 53 to this device. In virtually all other cases you have to make sure that your Pi-hole is properly firewalled.
Иными словами - если 53 порт светит в интернет, то лучше эту опцию не ставить.
И так оно и есть, в работе Pi-Hole начинают появляться внешние подключения с левых серверов для запросов 2.5-3 тыс. адресов за секунды. Явно подозрительный трафик. Поэтому от греха подальше закрыл порт 53, а без него вся конструкция не работает.
C OpenVPN такого безобразят нет, сервер поднимает tun0 и все данные идут внутри, и ему пофигу, открыт ли 53 порт, IPsec работает иначе, и почему то без открытого 53 порта он не хочет обращаться к серверу, и это непонятно почему.
Вот собственно вопрос. Нужна идея, как заставить работать VPN сервер с DNS сервером внутри одного хоста минуя внешнее подключение? Как бы абсудно это не звучало, один сервис внутри одного хоста не хочет работать с другим без внешнего подключения. Была идея сделать iptables правило
sudo ufw allow from 10.100.0.0/24 to 10.100.0.1 port 53
где 10.100.0.0/24 это пул адресов VPN, но по какой то причине так тоже не работает.
/etc/ipsec.conf
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=137.171.046.212
leftcert=/etc/ipsec.d/certs/vpn-server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.100.10.0/24
#rightdns=8.8.8.8, 8.8.4.4
rightdns=10.100.0.1
rightsendcert=never
eap_identity=%identity
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!
netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1181/sshd
tcp 0 0 10.100.0.1:445 0.0.0.0:* LISTEN 823/smbd
tcp 0 0 127.0.0.1:4711 0.0.0.0:* LISTEN 13920/pihole-FTL
tcp 0 0 127.0.0.1:904 0.0.0.0:* LISTEN 1238/python
tcp 0 0 127.0.0.1:905 0.0.0.0:* LISTEN 1238/python
tcp 0 0 127.0.0.1:906 0.0.0.0:* LISTEN 1238/python
tcp 0 0 0.0.0.0:1194 0.0.0.0:* LISTEN 594/openvpn
tcp 0 0 127.0.0.1:907 0.0.0.0:* LISTEN 1238/python
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 991/systemd-resolve
tcp 0 0 10.100.0.1:139 0.0.0.0:* LISTEN 823/smbd
tcp 0 0 127.0.0.1:908 0.0.0.0:* LISTEN 1238/python
tcp 0 0 127.0.0.1:909 0.0.0.0:* LISTEN 1238/python
tcp 0 0 10.64.60.167:943 0.0.0.0:* LISTEN 1238/python
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 13920/pihole-FTL
tcp6 0 0 :::22 :::* LISTEN 1181/sshd
tcp6 0 0 :::443 :::* LISTEN 1000/coredns
tcp6 0 0 :::8000 :::* LISTEN 1064/lighttpd
tcp6 0 0 ::1:4711 :::* LISTEN 13920/pihole-FTL
tcp6 0 0 :::5355 :::* LISTEN 991/systemd-resolve
tcp6 0 0 :::53 :::* LISTEN 13920/pihole-FTL
tcp6 0 0 :::853 :::* LISTEN 1000/coredns
udp 0 0 0.0.0.0:5355 0.0.0.0:* 991/systemd-resolve
udp 0 0 0.0.0.0:4500 0.0.0.0:* 27626/charon
udp 0 0 0.0.0.0:500 0.0.0.0:* 27626/charon
udp 0 0 0.0.0.0:53 0.0.0.0:* 13920/pihole-FTL
udp 13824 0 0.0.0.0:68 0.0.0.0:* 27626/charon
udp 0 0 0.0.0.0:68 0.0.0.0:* 933/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 748/dhcpcd
udp 0 0 172.27.232.1:123 0.0.0.0:* 1123/ntpd
udp 0 0 10.100.0.1:123 0.0.0.0:* 1123/ntpd
udp 0 0 10.64.60.167:123 0.0.0.0:* 1123/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 1123/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 1123/ntpd
udp 0 0 0.0.0.0:1701 0.0.0.0:* 1117/xl2tpd
udp 0 0 10.64.60.167:1194 0.0.0.0:* 1292/openvpn-openss
udp6 0 0 :::5355 :::* 991/systemd-resolve
udp6 0 0 :::4500 :::* 27626/charon
udp6 0 0 :::500 :::* 27626/charon
udp6 0 0 :::53 :::* 13920/pihole-FTL
udp6 0 0 ::1:123 :::* 1123/ntpd
udp6 0 0 :::123 :::* 1123/ntpd