Приветствую.
Вынужден обратиться за помощью, потратил целый день и решить не удалось.
Взял скрипт с сайта https://www.ylsoftware.com/news/706 Для удобства привел к неинтерактивному вид, чтобы не набирать вручную:
#!/bin/bash
# Внешний интерфейс сервера (узнать командой ip route)
IF_EXT="eth0"
apt -y update
echo iptables-persistent iptables-persistent/autosave_v4 boolean false | sudo debconf-set-selections
echo iptables-persistent iptables-persistent/autosave_v6 boolean false | sudo debconf-set-selections
apt -y install strongswan xl2tpd iptables-persistent
echo '%any %any : PSK "Sup3rP4ss"' > /etc/ipsec.secrets
echo 'config setup
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
nat_traversal=yes
protostack=netkey
conn l2tpvpn
type=transport
authby=secret
pfs=no
rekey=no
keyingtries=1
left=%any
leftprotoport=udp/l2tp
leftid=@l2tpvpnserver
right=%any
rightprotoport=udp/%any
auto=add' > /etc/ipsec.conf
service strongswan restart
echo '[global]
port = 1701
access control = no
ipsec saref = yes
force userspace = yes
; Файл с логинами и паролями
auth file = /etc/ppp/chap-secrets
[lns default]
; Диапазон адресов, динамически выдаваемых клиентам
; Мы ограничимся подсетью 172.28.253.64/26
; Первую её часть оставим под статически привязанные к логинам адреса
; А вторая - динамический пул
ip range = 172.28.253.96-172.28.253.126
; IP-адрес на стороне сервера
local ip = 172.28.253.65
; Это имя используется в качестве ipparam при поиске логинов и паролей в auth file
name = l2tpserver
; Файл с дополнительными опциями для ppp
pppoptfile = /etc/ppp/options.xl2tpd
flow bit = yes
exclusive = no
hidden bit = no
length bit = yes
require authentication = yes
require chap = yes
refuse pap = yes' > /etc/xl2tpd/xl2tpd.conf
echo 'noccp
auth
crtscts
mtu 1410
mru 1410
nodefaultroute
lock
noproxyarp
silent
modem
asyncmap 0
hide-password
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4' > /etc/ppp/options.xl2tpd
service xl2tpd restart
# Внутренние интерфейсы (обслуживающие ВПН-клиентов)
IF_INT="ppp+"
# Сеть, адреса из которой будут получать ВПН-клиенты
NET_INT="172.28.253.64/26"
# Сбрасываем все правила
iptables -F
iptables -F -t nat
# Устанавливаем политики по умолчанию
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# Разрешаем весь трафик на петлевом интерфейсе
iptables -A INPUT -i lo -j ACCEPT
# Разрешаем всё для ВПН-клиентов
iptables -A INPUT -i ${IF_INT} -s ${NET_INT} -j ACCEPT
# Разрешаем входящие соединения к L2TP
# Но только с шифрованием!
iptables -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport 1701 -j ACCEPT
# Разрешаем IPSec
iptables -A INPUT -p esp -j ACCEPT
iptables -A INPUT -p ah -j ACCEPT
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
# Разрешаем доступ к серверу по SSH
iptables -A INPUT -m tcp -p tcp --dport 22 -j ACCEPT
# Разрешаем входящие ответы на исходящие соединения
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# NAT для локальной сети (ВПН-клиентов)
iptables -t nat -A POSTROUTING -s ${NET_INT} -j MASQUERADE -o ${IF_EXT}
iptables -A FORWARD -i ${IF_INT} -o ${IF_EXT} -s ${NET_INT} -j ACCEPT
iptables -A FORWARD -i ${IF_EXT} -o ${IF_INT} -d ${NET_INT} -m state --state RELATED,ESTABLISHED -j ACCEPT
netfilter-persistent save
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
echo '"user1" l2tpserver "mypassword12" *' > /etc/ppp/chap-secrets
Создаю Ubuntu 18.0.4, сохраняю этот код в файл vpn.sh, запускаю sh vpn.sh и на DigitalOcean получаю готовый работающий VPN-сервер.
Пробую то же самое сделать на Google Cloud и получаю фигу. При этом вношу правильный IF_EXT (первая переменная в скрипте), узнаю с помощью команды ip route (у гугла это обычно ens4).
В фаяволе облачном все порты открыты.
Какие могут быть причины, почему у гугла на той же самой версии OC (Ubuntu 18.0.4) - не работает. При запуске скрипта никаких ошибок не выдает.
Когда запускаю скрипт создания Proxy Squid - то все работает на Google Cloud (то есть оно порты перебрасует).
И там и там запускаю под root, в гугле предварительно ввожу sudo su.
Куда копать, какие варианты?
strongswan, xl2tpd