LINUX.ORG.RU
ФорумAdmin

Скрипт L2TP VPN - работает на DigitalOcean, но не работает на Google Cloud

 ,


0

2

Приветствую.

Вынужден обратиться за помощью, потратил целый день и решить не удалось.

Взял скрипт с сайта 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.

Куда копать, какие варианты?



Последнее исправление: codecity (всего исправлений: 1)
Ответ на: комментарий от Jopich1

С линуксом сталкиваюсь редко, постигаю не системно.

Лог какой? То что получаю в консоли после запуска скрипта?

codecity
() автор топика
Ответ на: комментарий от Jopich1

service strongswan status

root@instance-1:/home/myuser1# service strongswan status
● strongswan.service - strongSwan IPsec IKEv1/IKEv2 daemon using ipsec.conf
   Loaded: loaded (/lib/systemd/system/strongswan.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-09-18 11:55:52 UTC; 2min 48s ago
 Main PID: 3084 (starter)
    Tasks: 18 (limit: 1997)
   CGroup: /system.slice/strongswan.service
           ├─3084 /usr/lib/ipsec/starter --daemon charon --nofork
           └─3122 /usr/lib/ipsec/charon
Sep 18 11:57:07 instance-1 charon[3122]: 10[NET] received packet: from 193.34.141.49[4500] to 10.50.0.2[4500] (76 b
Sep 18 11:57:07 instance-1 charon[3122]: 10[ENC] parsed INFORMATIONAL_V1 request 2152539006 [ HASH D ]
Sep 18 11:57:07 instance-1 charon[3122]: 10[IKE] received DELETE for ESP CHILD_SA with SPI fdfcd470
Sep 18 11:57:07 instance-1 charon[3122]: 10[IKE] closing CHILD_SA l2tpvpn{3} with SPIs c1531518_i (0 bytes) fdfcd47
Sep 18 11:57:07 instance-1 charon[3122]: 10[IKE] closing CHILD_SA l2tpvpn{3} with SPIs c1531518_i (0 bytes) fdfcd47
Sep 18 11:57:07 instance-1 charon[3122]: 09[NET] received packet: from 193.34.141.49[4500] to 10.50.0.2[4500] (92 b
Sep 18 11:57:07 instance-1 charon[3122]: 09[ENC] parsed INFORMATIONAL_V1 request 1238273170 [ HASH D ]
Sep 18 11:57:07 instance-1 charon[3122]: 09[IKE] received DELETE for IKE_SA l2tpvpn[1]
Sep 18 11:57:07 instance-1 charon[3122]: 09[IKE] deleting IKE_SA l2tpvpn[1] between 10.50.0.2[l2tpvpnserver]...193.
Sep 18 11:57:07 instance-1 charon[3122]: 09[IKE] deleting IKE_SA l2tpvpn[1] between 10.50.0.2[l2tpvpnserver]...193.

service xl2tpd status

root@instance-1:/home/myuser1# service xl2tpd status
● xl2tpd.service - LSB: layer 2 tunelling protocol daemon
   Loaded: loaded (/etc/init.d/xl2tpd; generated)
   Active: active (running) since Tue 2018-09-18 11:55:52 UTC; 6min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 3098 ExecStop=/etc/init.d/xl2tpd stop (code=exited, status=0/SUCCESS)
  Process: 3115 ExecStart=/etc/init.d/xl2tpd start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 1997)
   CGroup: /system.slice/xl2tpd.service
           └─3124 /usr/sbin/xl2tpd
Sep 18 11:55:52 instance-1 xl2tpd[3123]: setsockopt recvref[30]: Protocol not available
Sep 18 11:55:52 instance-1 xl2tpd[3123]: Not looking for kernel support.
Sep 18 11:55:52 instance-1 xl2tpd[3115]: Starting xl2tpd: xl2tpd.
Sep 18 11:55:52 instance-1 systemd[1]: Started LSB: layer 2 tunelling protocol daemon.
Sep 18 11:55:52 instance-1 xl2tpd[3124]: xl2tpd version xl2tpd-1.3.10 started on instance-1 PID:3124
Sep 18 11:55:52 instance-1 xl2tpd[3124]: Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc.
Sep 18 11:55:52 instance-1 xl2tpd[3124]: Forked by Scott Balmos and David Stipp, (C) 2001
Sep 18 11:55:52 instance-1 xl2tpd[3124]: Inherited by Jeff McAdams, (C) 2002
Sep 18 11:55:52 instance-1 xl2tpd[3124]: Forked again by Xelerance (www.xelerance.com) (C) 2006-2016
Sep 18 11:55:52 instance-1 xl2tpd[3124]: Listening on IP address 0.0.0.0, port 1701

journal -xe

Такой команды не знает.

journal -xe
Command 'journal' not found, did you mean:
  command 'xournal' from deb xournal
Try: apt install <deb name>
codecity
() автор топика
Ответ на: комментарий от Jopich1

1. ufw отключен, еще раз ввел ufw disable и ничего не изменилось.

2. Внешний интерфейс ens4.

Когда ввожу

tcpdump -i ens4 -s 1500 port not 22

то при попытке подключить наблюдая некую активность, типа:

12:20:20.191527 IP XXX.XXX.XXX.XXX.isakmp > instance-1.us-central1-c.c.model-signifier-216607.internal.isakmp: isakmp: phase 1 I ident
12:20:20.192262 IP instance-1.us-central1-c.c.model-signifier-216607.internal.isakmp > XXX.XXX.XXX.XXX.isakmp: isakmp: phase 1 R ident
12:20:20.366402 IP XXX.XXX.XXX.XXX.isakmp > instance-1.us-central1-c.c.model-signifier-216607.internal.isakmp: isakmp: phase 1 I ident
12:20:20.371802 IP instance-1.us-central1-c.c.model-signifier-216607.internal.isakmp > XXX.XXX.XXX.XXX.isakmp: isakmp: phase 1 R ident
12:20:20.581120 IP XXX.XXX.XXX.XXX.ipsec-nat-t > instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t: NONESP-encap: isakmp: phase 1 I ident[E]
12:20:20.581891 IP instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t > XXX.XXX.XXX.XXX.ipsec-nat-t: NONESP-encap: isakmp: phase 1 R ident[E]
12:20:20.943972 IP XXX.XXX.XXX.XXX.ipsec-nat-t > instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
12:20:20.944822 IP instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t > XXX.XXX.XXX.XXX.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
12:20:21.122042 IP XXX.XXX.XXX.XXX.ipsec-nat-t > instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
12:20:21.224704 IP XXX.XXX.XXX.XXX.ipsec-nat-t > instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
12:20:21.226515 IP instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t > XXX.XXX.XXX.XXX.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
12:20:21.448753 IP XXX.XXX.XXX.XXX.ipsec-nat-t > instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
12:20:21.448799 IP XXX.XXX.XXX.XXX.ipsec-nat-t > instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others I inf[E]
12:20:24.107060 IP XXX.XXX.XXX.XXX.ipsec-nat-t > instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
12:20:24.108861 IP instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t > XXX.XXX.XXX.XXX.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
12:20:24.272637 IP XXX.XXX.XXX.XXX.ipsec-nat-t > instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
12:20:24.272686 IP XXX.XXX.XXX.XXX.ipsec-nat-t > instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others I inf[E]
12:20:25.020272 IP XXX.XXX.XXX.XXX.ipsec-nat-t > instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others I inf[E]
12:20:25.020319 IP XXX.XXX.XXX.XXX.ipsec-nat-t > instance-1.us-central1-c.c.model-signifier-216607.internal.ipsec-nat-t: NONESP-encap: isakmp: phase 2/others I inf[E]

где XXX.XXX.XXX.XXX - IP адрес в сети моего провайдера, но не мой IP.

При этом на клиенте никаких признаков жизни - просто типа подключается, крутит колесико без остановки. С теми же настройками в DigitalOcean все работает.

codecity
() автор топика
Ответ на: комментарий от codecity

Google Cloud это просто kvm с внешним ip ? Или там еще нужно где-то пробрасывать порты в интерфейсе ? Порты 4500,500 открыты ?

Jopich1
()
Ответ на: комментарий от Jopich1

Google Cloud это просто kvm с внешним ip

Нет, они сами перебрасывают порты на внешний IP.

Порты 4500,500 открыты ?

Для тестов - открыл все порты (устанавливал для проверки proxy Squid и через него подключался).

codecity
() автор топика
Ответ на: комментарий от Jopich1

Да, там есть возможность открыть либо конкретный порт для TCP или UDP, либо вообще все. Для тестов открыл все.

codecity
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.