LINUX.ORG.RU
ФорумAdmin

IPSec за NAT'ом

 ,


1

1

Есть такая конфигурация:

= Клиент VPN: =
GSM-модем
Внутренний частный IP: Неизвестно какой, назначается провайдером от балды
GW: Некий белый IP, назначается провайдером от балды



= Сервер VPN: =
Белый статический IP

На GSM-модеме поддерживается только IPSec, OpenVPN'а нет, потому что MOXA.

Во всех доках по IPSec либо очень просто и доходчиво объясняется, как установить соединение между двумям хостами с открытыми IP-шникамми, либо крайне коряво и смутно - как сделать это через NAT.

Что меня вводит в состояние полного ступора: политики SP все эти чудесные SA описывают то, как трафик должен ходить от IP1 к IP2 и от IP2 к IP1.
А за NAT'ом какие это должны быть IP-шники? Если внутренние то как вообще будет установлено VPN-соединение, - ведь прямое подключение с IP1 к IP2 невоозможно в принципе! Если внешние адреса шлюзов, то тут вообще какой-то трэш, так явно быть не может...
В общем, если кто объяснит, как составлять SA и SP в случае IPSec через NAT - буду очень признателен. Пока я только понял, что нужно делать форвард портов 500 и 4500 (UDP) на шлюзе, что не очень полезно, поскольку доступа к шлюзу, принадлежащему компании МТС, у меня нет и быть не может :(

★★★★★
Ответ на: комментарий от hizel

OpenVPN же ходит, ничто ему не мешает. И там, кстати, в случае использования PKI сертификаты нужно 100% выписывать не на внутренние IP/hostname'ы, а на внешние.
Я уж грешным делом подумываю альтернативную прошивку вкорячить на MOXA G3150, чтобы там OVPN был, а то IPSec - это какой-то взрыв мозга просто.

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

OpenVPN для плебеса, жи. Впрочем, читай за IPsec NAT-Traversal.

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

Ходит еще как. NAT-T является вполне законной частью стандарта и поддерживается практически везде. Я проверял как с ондроедов-айфонов, так и с OSX/Linux/Windoze.

blind_oracle ★★★★★
()

Так, у тебя сервер IPSEC то какой? И в чем конкретно проблема? Никакие SA вручную давно составлять уже не надо, это за тебя делает (Strong/Open)SWAN и подобные.

Каких-то отдельных настроек для НАТа на сервере не надо, нужно лишь не отключать NAT-T. Вот пример настроек: http://www.strongswan.org/uml/testresults4/ikev2/nat-two-rw-psk/

Так же проверялось где сервером была Cisco ASA, проблем с натом аналогично никаких - часто подключаюсь на работу через нее.

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

Так, у тебя сервер IPSEC то какой?

Racoon же! Попробую StrongSWAN'ом. Есть одна загвоздка ещё забавная: MOXA хочет от меня номера SPI для входящего трафика и для исходящего трафика. Смотрю на racoon и тихо о.реневаю: куда это, где это, как это... вписать????

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

А у StrongSWAN'а для Security Associations'ов можно номера SPI указать? Я не знаю, на кой МОХЕ это надо, но она просто жаждет знать номера этих SPI.
Собственная вообще единственная дока из десятков прочитанных мной на тему IPSec'а, которая содержит номера SPI - это некий IPSec HOWTO на lartc: http://lartc.org/howto/lartc.ipsec.html
Но там и пример совсем элементарный рассмотрен...

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

Да, кстати, большое спасибо за помощь. Я уже немного паниковать начал, столько времени впустую потрачено. StrongSWAN мне пока очень нравится классным форматом конфига, из которого понятно абсолютно всё. По сравнению с туманным шаманским racoon'ом - это просто как небо и земля. Да и у racoon'а документации по сути никакой. Не - зря, видать, ipsec-tools'ы ззагибаться-то стали в 2011-м году.

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

Да, стронгсван нынче почти единственный динамично развивающийся фреймворк айписека, конфиг действительно крайне адекватный и лаконичный.

А номера SPI это по сути уже уровень ядра, по идее они генерируются динамически самим стронгсваном и их обмен идет во время IKE-сессии, вот так у меня:

# ipsec statusall
...
xxxx[99]: IKE SPIs: 67ff0d4e1139e73b_i* f48eec87152841aa_r, pre-shared key reauthentication in 5 hours
...
xxxx{99}:  INSTALLED, TRANSPORT, ESP SPIs: c4adc1fd_i cd7965a0_o, IPCOMP CPIs: 35b7_i 7086_o
Если МОХА не умеет IKE, то это печалько :)

ЗЫ: Ключи шифрования и эти SPI можно по идее установить напрямую в ядро через setkey (вроде входит в енота). Я когда-то очень давно так делал.

blind_oracle ★★★★★
()
Последнее исправление: blind_oracle (всего исправлений: 1)
Ответ на: комментарий от blind_oracle

Скопировал конфигурацию как по ссылке: http://www.strongswan.org/uml/testresults4/ikev2/nat-two-rw-psk/ , заменив IP-адреса на свои.
Всё соответствует картинке.
Делаю на клиенте за NAT'ом: sudo ipsec up nat-t
Получаю:

Aug 29 13:01:01 akkerman-VPCSB2X9R charon: 12[NET] sending packet: from 192.168.6.198[500] to 186.107.89.2[500]
Aug 29 13:01:05 akkerman-VPCSB2X9R charon: 11[IKE] retransmit 1 of request with message ID 0
Aug 29 13:01:05 akkerman-VPCSB2X9R charon: 11[NET] sending packet: from 192.168.6.198[500] to 186.107.89.2[500]
Aug 29 13:01:12 akkerman-VPCSB2X9R charon: 14[IKE] retransmit 2 of request with message ID 0
Aug 29 13:01:12 akkerman-VPCSB2X9R charon: 14[NET] sending packet: from 192.168.6.198[500] to 186.107.89.2[500]
Aug 29 13:01:25 akkerman-VPCSB2X9R charon: 09[IKE] retransmit 3 of request with message ID 0
Aug 29 13:01:25 akkerman-VPCSB2X9R charon: 09[NET] sending packet: from 192.168.6.198[500] to 186.107.89.2[500]
Aug 29 13:01:48 akkerman-VPCSB2X9R charon: 08[IKE] retransmit 4 of request with message ID 0
Aug 29 13:01:48 akkerman-VPCSB2X9R charon: 08[NET] sending packet: from 192.168.6.198[500] to 186.107.89.2[500]
Aug 29 13:02:30 akkerman-VPCSB2X9R charon: 13[IKE] retransmit 5 of request with message ID 0
Aug 29 13:02:30 akkerman-VPCSB2X9R charon: 13[NET] sending packet: from 192.168.6.198[500] to 186.107.89.2[500]
Aug 29 13:03:46 akkerman-VPCSB2X9R charon: 10[IKE] giving up after 5 retransmits
Aug 29 13:03:46 akkerman-VPCSB2X9R charon: 10[IKE] establishing IKE_SA failed, peer not responding
При этом на 186.107.89.2:
$ sudo iptables -nvL | fgrep 500
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:4500 
    8  1200 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:500

На стороне «сервера» в daemon.log никаких сообщений нет.
Мало того, tcpdump'ом на интерфейсе вообще ничего не ловится!
Что я делаю не так? :(

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

from 192.168.6.198[500] to 186.107.89.2[500]

Что-то не так. NAT-T должен быть на порт 4500.

Про Linux ipsec реализации я почти ничего не знаю, приходилось сталкиваться только с OpenBSD/isakmpd. Вот конкретно с NAT-T делал ipsec между Windows XP («клиент» за натом) и OpenBSD («сервер»). Все работало нормально. isakmpd под Linux вроде бы тоже есть, не пробовали? Хотя может быть что-то не допортировали и не заведется. Это когда уже вариантов не останется, можете попробовать :-)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.