LINUX.ORG.RU
ФорумAdmin

FreeBSD, Strongswan, NAT - VPN IKEv2

 , ,


0

1

Всем доброго времени суток, имеем FreeBSD 13, Strongswan 5.9.5 в качестве NAT может выступать как PF так и IPFW последний в предпочтении. Конфигурация 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=1.1.1.1
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.10.10.0/24
    rightdns=8.8.8.8,8.8.4.4
    rightsendcert=never
    eap_identity=%identity

Конфигурация ipfw

#!/bin/sh -
fwcmd="/sbin/ipfw -q"
${fwcmd} -f flush

${fwcmd} add allow tcp from any to me 22 via vmx0
${fwcmd} add allow icmp from any to any

${fwcmd} add allow all from any to me 500 keep-state
${fwcmd} add allow all from any to me 4500 keep-state

${fwcmd} add allow esp from any to any
${fwcmd} add allow gre from any to any
${fwcmd} add allow ipencap from any to any

${fwcmd} add allow all from any to any 53
${fwcmd} add allow all from any 53 to any

${fwcmd} nat 1 config if vmx0 reset deny_in same_ports unreg_only
${fwcmd} add nat 1 all from 10.10.10.0/24 to any
${fwcmd} add nat 1 all from any to 178.57.77.69

${fwcmd} add allow all from 10.10.10.0/24 to any keep-state
${fwcmd} add allow all from any to 10.10.10.0/24 keep-state

${fwcmd} add allow all from me to any out keep-state
${fwcmd} add allow all from any to any

Собственно подключение проходит нормально, клиенты подключаются, но трафик не уходит в интернет. Пробовал и через PF.

set skip on lo
set loginterface vmx0
nat on vmx0 from 10.10.10.0/24 to any -> (vmx0)
pass in all keep state
pass out all keep state

Но без результата. Уже всю голову себе сломал, может быть я просто не в том направлении смотрю? Есть какие-то идеи? Спасибо заранее.

Есть какие-то идеи?

Конфиги это, конечно, хорошо, но ты в логи смотрел? Вот у тебя set loginterface vmx0 уже есть, запусти pflog и помониторь.

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

Смотрел и им смотрел и tcpdump-ом, я вижу что например при ping с адреса улетает единственный пакет и далее тишина, при самом ping-e, например 8.8.8.8, ни одно эхо не идет… такие вот дела.

Есть не мало статей по Linux, там добавляется пару правил, вот таких:

*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

*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

-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

Чувствую что дело в ESP, но вроде и в ipfw тыкал это….

yakunin ()

Давно не нужно было в bsd натить, но емнип там было волшебное слово divert, а у вас его не видно. Повторюсь может я и ошибаюсь так как давно не щупал.

anc ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.