LINUX.ORG.RU

Разделение IP точек входа и выхода VPN IKEv2 (Strongswan)

 , , ,


0

0

Добрый день! Имеется VPS на Ubuntu 22.04 с двумя IP-адресами:

eth0: 5.255.105.107 (основной)
eth0:0: 5.255.105.92 (дополнительный)

для поднятия VPN IKEv2 используется Strongswan.

Подключение к VPN осуществляется по IP 5.255.105.107 (точка входа). В итоге клиенты также получают IP 5.255.105.107 (точка выхода) после подключения при проверке через соответствующие сервисы (2ip и прочее). В этом случае VPN работает корректно.

Необходимо чтобы IP точки выхода был 5.255.105.92 при проверке через соответствующие сервисы (2ip и прочее).

/etc/ufw/before.rules:

*nat
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
COMMIT

*mangle
-A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT

...

-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT

Пробовал менять

-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

на

-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT --to-source 5.255.105.92

Но это не помогло (вероятно и не так нужно задавать, я новичок, в iptables пока полностью не получается разобраться). Также экспериментировал с другими различными вариантами, в некоторых случаях у клиента не работал интернет (но подключение к VPN было успешно)

/etc/ufw/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

Конфиг /etc/ipsec.conf

config setup
    uniqueids=no

conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    rekey=no
    reauth=no
	
    dpdaction=clear
    dpddelay=35s
    dpdtimeout=2000s
	
    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!
	
    # server side settings
    left=%any
    leftid=5.255.105.107
    leftcert=vpn-server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
	
    # client side settings
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.10.10.0/24
    rightdns=1.1.1.1,1.0.0.1
    rightsendcert=never

Предполагаю что настраивать нужно именно в /etc/ufw/before.rules (тот же iptables), но не могу понять как именно это нужно сделать.