Назад | Перейти на главную страницу

Понимание ipsec с NAT и динамическими IP

Я использую OpenSWAN для настройки VPN-туннеля между сетями. Мне удалось настроить тестовый сценарий следующим образом:

Около test и test2:

Вот как я настроил туннель:

/etc/ipsec.conf (идентично слева и справа):

version 2.0
config setup
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
    oe=off
    protostack=netkey

conn net-to-net
    authby=secret
    left=192.168.0.11
    leftsubnet=10.1.0.0/16
    leftsourceip=10.1.0.1
    right=192.168.0.12
    rightsubnet=10.2.0.0/16
    rightsourceip=10.2.0.1
    auto=start

/etc/ipsec.secrets (идентично слева и справа):

192.168.0.11 192.168.0.12: PSK "mytestpassword"

/etc/rc.local (слева):

modprobe dummy
ifconfig dummy0 10.1.0.1 netmask 255.255.0.0

iptables -t nat -A POSTROUTING -o eth0 -s 10.1.0.0/16 ! -d 10.2.0.0/16 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart

exit 0

/etc/rc.local (справа):

modprobe dummy
ifconfig dummy0 10.2.0.1 netmask 255.255.0.0

iptables -t nat -A POSTROUTING -o eth0 -s 10.2.0.0/16 ! -d 10.1.0.0/16 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart

exit 0

Теперь я хотел бы создать следующий сценарий:

Вопросы, которые мне нужно понять:

Может ли IPSec подключаться через шлюз VPN, который использует общедоступный IP-адрес через NAT (входящий обход NAT)? Относятся ли к этому NAT-T и IPSec passthrough или они предназначены только для исходящего NAT (то есть имеют дело с клиентами, которые находятся за NAT, но у шлюза есть общедоступный IP-адрес)? Достаточно ли перенаправить некоторые порты с router1 для тестирования, или это будет несовместимо с IPSec?

NAT-T, как определено в RFC 3947/3948, представляет собой инкапсуляцию трафика IPSec в UDP. Без этой инкапсуляции IPSec использует собственные типы протоколов под IP для обоих - транспортного и туннельного режимов, что делает невозможным работу через NAT. С инкапсуляцией UDP он будет работать через любое устройство NAT, способное обрабатывать UDP.

Направление установления соединения действительно имеет значение, поскольку маршрутизаторы NAT сохраняют состояние и поддерживают информацию о «соединениях» UDP, разрешая только «соединения» UDP, инициированные из сети с NAT. Создание правила переадресации портов для порта UDP, используемого IKE, и инкапсуляция UDP для ESP (4500 / udp) преодолели бы это ограничение, но, очевидно, разрешили бы только один хост IPSec, настроенный таким образом за устройством NAT.

Могут ли оба конца туннеля IPSec иметь динамические IP-адреса, если у одного есть доменное имя и динамический DNS?

Да ты не необходимость статический IP-адрес, хотя он, вероятно, облегчит вашу жизнь, поскольку удаляет две единичные точки отказа (поставщик / процесс обновления DDNS) из вашей конфигурации. Обратите внимание, что для работы с динамическими IP-адресами на обоих концах с аутентификацией PSK потребуется агрессивный режим для фазы 1 IKE.

Обычно я не из тех, кто отвечает на хорошо продуманный вопрос «иди, воспользуйся чем-нибудь другим», но ... IPSec VPN всегда представляет собой проблему для настройки. Добавление NAT и динамических IP-адресов - всего лишь приглашение к разочарованию.

Вы когда-нибудь смотрели на OpenVPN? Это VPN на основе SSL, которая туннелирует все через порт UDP 1194, поэтому вам не придется иметь дело с ESP. Вероятно, вы сможете настроить WAN менее чем за час.