LINUX.ORG.RU

Сообщения linuxuser123

 

Strongswan ipsec, iptables VPN, нет проходят пакеты с VPS

Форум — Admin

Настроил VPN сервер (Strongswan ipsec, iptables) на локальном тестовом компьютере - все работает (Debian 10). И сервер и клиент в локальной сети за NAT.

  1. С сертификатами проблем нет (опускаю этот момент) - авторизация всегда проходит успешно.
  2. Настраиваю ipsec:
vi /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=192.168.1.6 (в случае VPS здесь его внешний IP)
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.0.0.0/24
    rightdns=8.8.8.8,8.8.4.4
    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!
vi /etc/ipsec.secrets
: RSA "server-key.pem"
user : EAP "password"

Перезапускаем ipsec restart

  1. Добавляем в /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.ip_no_pmtu_disc = 1

Запускаем sysctl -p

  1. Настраиваем iptables (по умолчанию все политики на ACCEPT)
iptables -F
iptables -Z
iptables -A FORWARD -j ACCEPT
iptables -t nat -F
iptables -t nat -Z
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

Этого достаточно для теста - VPN тунель работает, что подтверждает traceroute и tcpdump -i eth0 host 10.0.0.1 esp or upd port 4500

Все работает!

Переносим все тоже самое на VPS (Debian 11). Меняем IP в ipsec.conf, интерфейс в iptables. Запускаем - не работает. Авторизация есть, трафик доходит (что видно по каунтерам iptables), но назад не идет, при таких же настройках iptables как и локально.

Отличительные особенности VPS:

  1. /etc/network/interfaces
auto lo
iface lo inet loopback

# Auto generated venet0 interfaces
auto venet0
iface venet0 inet static
        address 127.0.0.1
        netmask 255.255.255.255
        broadcast 0.0.0.0
        up route add default dev venet0
auto venet0:0
iface venet0:0 inet static
        address xxx.xxx.xxx.xxx
        netmask 255.255.255.255
  1. Обнаружил что rp_filter=1 для всех интерфейсов VPS - выставляю везде 0 - не помогает.

  2. При помощи полных правил для FORWARD цепочки iptables вижу:

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination        
  107  7377 ACCEPT     all  --  *      *       10.0.0.0/24          0.0.0.0/0            policy match dir in pol ipsec proto 50
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            10.0.0.0/24          policy match dir out pol ipsec proto 50
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

В одну сторону идет - обратно уже нет.

Прошу помощи, в сетях не силен, но хотел бы расширить немного кругозор на эту тему. Как я могу продиагностировать ситуацию чтобы понять где теряются пакеты? tcpdump немного пользоваться я умею, ESP пакеты отфильтровать я могу, но что дальше? К сожалению, пока на этом мои познания заканчиваются. Как я могу быстро обнаружить проблему?

 , , ,

linuxuser123
()

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