Есть openvpn сервер, который прекрасно работал на почти дефолтном конфиге, но захотелось перенастроить его, чтобы клиенты могли подключатся и по 443 tcp и по 1194 udp. Путём гугления и бездумного копипастинга пришёл к следующему конфигу:
server-udp.conf
port 1194
proto udp
dev tun0
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
script-security 2
learn-address /etc/openvpn/learn.sh
1,3c1,3
< port 1194
< proto udp
< dev tun0
---
> port 443
> proto tcp
> dev tun1
#!/bin/bash
##
# learn-address script which allow
# OpenVPN to run on both TCP and UDP
# with the same range of address on both
# protocol.
#
# tgouverneur -- 2014
##
if [ $# -lt 2 ]; then
exit 0;
fi
action=$1;
addr=$2;
case ${action} in
add)
echo "[-] Deleting addr ${addr}" >> /tmp/learn.log
/usr/bin/sudo /sbin/ip ro del ${addr}/32
echo "[-] Adding addr ${addr} -> ${dev}" >> /tmp/learn.log
/usr/bin/sudo /sbin/ip ro add ${addr}/32 dev ${dev};
;;
delete)
# Actually do nothing, it will be removed next time the client connects
# to any of the instances.
;;
*)
;;
esac
exit 0;
$ cat /etc/ufw/before.rules
...
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
...
$ ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
1194/udp ALLOW Anywhere
443 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
1194/udp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Клиент (ubuntu) подключается, но пинг идёт только до сервера с openvpn, а доступа в интернет нет