Есть схема LAN1<->FBSD1<->internet<->Router(nat+port forwarding)<->FBSD2<->LAN2
Нужно поднять IPsec так, чтобы виделись LAN1 & LAN2. На router'е все соединения проброшены на FBSD2 (на fake адреса). Отключить NAT не реально, таковы условия подключения провайдера. Для обмена ключами исползую racoon. В ядре поддержка IPsec включена. Использую следующую конфигурацию:FBSD1:rc.conf
gif_interfaces="gif0"
gifconfig_gif0="62.33.32.133 217.106.168.165"
ifconfig_gif0="inet 192.168.100.253 192.168.0.253 netmask 255.255.255.255"
static_routes="vpn"
route_vpn="192.168.0.0/24 -interface gif0"
ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"FBSD1:ipsec.conf
flush;
spdflush;
spdadd 62.33.32.133/32 217.106.168.165/32 ipencap -P out ipsec esp/tunnel/62.33.32.133-217.106.168.165/require;
spdadd 192.168.50.2/32 62.33.32.133/32 ipencap -P in ipsec esp/tunnel/217.106.168.165-62.33.32.133/require;FBSD1:ifconfig:
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 62.33.32.133 netmask 0xffffffc0 broadcast 62.33.32.191
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.100.254 netmask 0xffffff00 broadcast 192.168.100.255
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
tunnel inet 62.33.32.133 --> 217.106.168.165
inet 192.168.100.253 --> 192.168.0.253 netmask 0xffffffffFBSD2:rc.conf
gif_interfaces="gif0"
gifconfig_gif0="192.168.50.2 62.33.32.133"
ifconfig_gif0="inet 192.168.0.253 192.168.100.253 netmask 255.255.255.255"
static_routes="vpn"
route_vpn="192.168.100.0/24 -interface gif0"
ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"FBSD2:ipsec.conf
flush;
spdflush;
spdadd 192.168.50.2/32 62.33.32.133/32 ipencap -P out ipsec esp/tunnel/192.168.50.2-62.33.32.133/require;
spdadd 62.33.32.133/32 217.106.168.165/32 ipencap -P in ipsec esp/tunnel/62.33.32.133-192.168.50.2/require;FBSD2:ifconfig:
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.50.2 netmask 0xfffffffc broadcast 192.168.50.3
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
tunnel inet 192.168.50.2 --> 62.33.32.133
inet 192.168.0.253 --> 192.168.100.253 netmask 0xffffffffНа роутере IP: 217.106.168.165 port forwarding > 192.168.50.2
С выключеным IPsec все работет. Туннель пакеты пересылает пинги ходят. При включении IPsec транспорт не работает, в логах особых замечаний нет. Но пинги не идут. Реально реализовать такую схему с использованием NAT+Potr forwarding? Если видны ошибки прошу высказываться.
P.S. Без NAT данная схема работет уже не в одном месте.
Заранее благодарен всем за ответы
покажи как у тебя включен на роутере IP: 217.106.168.165 port forwarding > 192.168.50.2
покажи правила фаерволла на всех трех машинах
>покажи правила фаерволла на всех трех машинахFBSD1:
add allow ip from any to any via lo0
add deny ip from any to 127.0.0.0/8
add deny ip from 127.0.0.0/8 to any
add pass udp from 217.106.168.165 to 62.33.32.133 isakmp
add pass udp from 62.33.32.133 to 217.106.168.165 isakmp
add pass esp from 217.106.168.165 to 62.33.32.133
add pass esp from 62.33.32.133 to 217.106.168.165
add pass all from 192.168.100.0/24 to 192.168.0.0/24
add pass all from 192.168.0.0/24 to 192.168.100.0/24
add divert natd all from any to any via rl0
add allow all from 192.168.100.0/24 to any
add allow ip from any to 192.168.100.0/24
add reject all from any to 62.33.32.133 3128
add reject all from any to 62.33.32.133 110
add reject all from any to 62.33.32.133 143
add allow all from 62.33.32.133 to any
add allow all from any to 62.33.32.133
add deny all from any to anyFBSD2:
add allow ip from any to any via lo0
add deny ip from any to 127.0.0.0/8
add deny ip from 127.0.0.0/8 to any
add allow all from any to any
add deny all from any to anyrouter это железка ADSL маршрутизатор HUAWEI MT800 работет в режиме IPoA, 2 интерфейса, на одном висит адрес 217.106.168.165, на другом 192.168.50.1, между ними NAT. Как там выполнен NAT и port forwarding я не знаю, но включается через web managment. nmap'ом проверял: прокидывает порты внутрь на адрес 192.168.50.2
Фильтрации никакой не включено.
Мне думается не будет работать.
Когда пакет идет от BSD2 на BSD1, при прохождении маршрутизатора происходит изменение заголовка-меняется источник, что не есть гуд для IPsec
>Мне думается не будет работать.
>Когда пакет идет от BSD2 на BSD1, при прохождении маршрутизатора происходит изменение
>заголовка-меняется источник, что не есть гуд для IPsec
мне тоже интересен этот вопрос . все -же что мешает использовать ipsec через nat - реализация gif тунеля в FreeBSD или сам протокол ipsec ?
ipsec
>ipsec
а более подробно можно ? , линку там ...
Хотя вот такое нашел
Туннельный режим лучше всего подходит для обмена трафиком между
двумя маршрутизаторами, или узлом и маршрутизатором. Так как исходный
пакет находится в неприкосновенности, туннельный режим ESP позволяет
пакетам проходить через NAT-сети.
http://www.osp.ru/lan/2003/01/024.htm