LINUX.ORG.RU

Сообщения codecity

 

Google Cloud: приходится вручную перезапускать ufw — что делать?

Продолжаю мучать Google Cloud Ubuntu.

Запустил там скрипт IKEv2 VPN, взятый отсюда: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-s...

И оно даже работает, но до первой перезагрузки сервера.

После остановки или перезагрузки к VPN подключается, но нет интернета. Если зайти по SSH и ввести:

sudo ufw disable
sudo ufw --force enable

То все начинает работать. И вывод sudo iptables-save разный до и после сего ритуала. Статус ufw до перезапуска - Status: active.

Почему так и что с этим можно сделать?

 

codecity
()

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

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

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

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

RSS подписка на новые темы