Добрый день, друзья-товарищи. Помогите нубу. :(Есть 2 офиса, в каждом поднят сервер с FreeBSD + IpSec. Получается, что все сети конектятся к серверу по VPN и с него выходят в интернет. Выглядит это примерное так:
Lan3 Internet
| |
Lan1 -----GW2 --- GW1 ---- Lan5
| |
Lan2 Lan4
Схема чуть сдвинулась но Internet идет к GW1, Lan3 k GW2, a Lan4 k GW1За каждым шлюзом есть еще по несколько сетей. Настраиваю, работают сети, я всех вижу, но в сетях за ГВ 2 нет интернета. :(
если делаю правила с двух сторон такое(на другой стороне соответсвенно айпишники меняются):
spdadd 192.168.60.0/23 0.0.0.0/0 any -P out ipsec esp/tunnel/81.17.174.198-109.238.165.226/require;
spdadd 0.0.0.0/0 192.168.60.0/23 any -P in ipsec esp/tunnel/192.168.100.1-81.17.174.198/require;То начинает видится интернет, но пропадает локальная сетка (60.1), все кто сидит в 60-ой сети, могут гулять в другие сети, но 60.1 не видят и он никого из своей же сетки не видит. Какие правила нужно добавить, чтобы все работало? Уже неделю бьюсь без толку.
> То начинает видится интернет, но пропадает локальная сетка (60.1), все кто сидит
> в 60-ой сети, могут гулять в другие сети, но 60.1 не
> видят и он никого из своей же сетки не видит. Какие
> правила нужно добавить, чтобы все работало? Уже неделю бьюсь без толку.Не уж то никто не сталкивался с подобным случаем? (
>> То начинает видится интернет, но пропадает локальная сетка (60.1), все кто сидит
>> в 60-ой сети, могут гулять в другие сети, но 60.1 не
>> видят и он никого из своей же сетки не видит. Какие
>> правила нужно добавить, чтобы все работало? Уже неделю бьюсь без толку.
> Не уж то никто не сталкивался с подобным случаем? (Хочешь получить ответ - научись правильно задавать вопрос
http://segfault.kiev.ua/smart-questions-ru.html
>>> То начинает видится интернет, но пропадает локальная сетка (60.1), все кто сидит
>>> в 60-ой сети, могут гулять в другие сети, но 60.1 не
>>> видят и он никого из своей же сетки не видит. Какие
>>> правила нужно добавить, чтобы все работало? Уже неделю бьюсь без толку.
>> Не уж то никто не сталкивался с подобным случаем? (
> Хочешь получить ответ - научись правильно задавать вопрос
> http://segfault.kiev.ua/smart-questions-ru.htmlА в чем именно не правильность заданного вопроса? Понятно все описал и схема нарисована.
Что именно было не понятно в вопросе? Обращайтесь, объясню.
>>>> То начинает видится интернет, но пропадает локальная сетка (60.1), все кто сидит
>>>> в 60-ой сети, могут гулять в другие сети, но 60.1 не
>>>> видят и он никого из своей же сетки не видит. Какие
>>>> правила нужно добавить, чтобы все работало? Уже неделю бьюсь без толку.
>>> Не уж то никто не сталкивался с подобным случаем? (
>> Хочешь получить ответ - научись правильно задавать вопрос
>> http://segfault.kiev.ua/smart-questions-ru.html
> А в чем именно не правильность заданного вопроса? Понятно все описал и
> схема нарисована.Покажи своему другу и спроси - всё ли ему понятно.
> Что именно было не понятно в вопросе? Обращайтесь, объясню.
Позволю тебе напомнить что ты спросил --
"Какие правила нужно добавить, чтобы все работало?""Локальная сетка (60.1)" -- это относится к LAN1,LAN2,LAN3,LAN4 или LAN5?
А подсеть 192.168.60.0/23 ?а слабо показать таблицу маршрутизации на обоих роутерах?
> Покажи своему другу и спроси - всё ли ему понятно.Показал, понял.
>> Что именно было не понятно в вопросе? Обращайтесь, объясню.
> Позволю тебе напомнить что ты спросил --
> "Какие правила нужно добавить, чтобы все
> "Локальная сетка (60.1)" -- это относится к LAN1,LAN2,LAN3,LAN4 или LAN5?...но в сетях за ГВ 2 нет интернета...
> А подсеть 192.168.60.0/23 ?
spdadd 192.168.60.0/23...
> а слабо показать таблицу маршрутизации на обоих роутерах?Gw1:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.100.3 UGS 1 73990933 bge1
10.10.10/27 link#1 UC 0 0 bge0
10.10.10.10 00:14:2a:d4:49:74 UHLW 2 2292437 bge0 647
10.10.10.26 00:23:cd:b2:20:05 UHLW 2 12583983 bge0 647
127.0.0.1 127.0.0.1 UH 0 1754 lo0
192.168.0 192.168.67.1 UGS 0 179433 gif1
192.168.60/23 192.168.60.1 UGS 16979090 18699016 gif0
192.168.60.1 192.168.100.1 UH 6472951 6588917 gif0
192.168.63 192.168.100.6 UGS 0 6442723 bge1
192.168.64 link#3 UC 0 0 fxp0
192.168.65 192.168.65.1 UGS 0 5861 gif3
192.168.65.1 192.168.100.1 UH 1 41 gif3
192.168.66 192.168.60.28 UGS 0 6802341 gif0
192.168.67 192.168.67.1 UGS 3389808 5441944 gif1
192.168.67.1 192.168.100.1 UH 147708 208559 gif1
192.168.69 192.168.60.28 UGS 0 1857231 gif0
192.168.70 192.168.70.1 UGS 0 15618 gif5
192.168.70.1 192.168.100.1 UH 1236093 1236094 gif5
192.168.71 192.168.60.28 UGS 0 2088530 gif0GW2
Destination Gateway Flags Refs Use Netif Expire
default 192.168.100.1 UGS 1 34916646 gif0
10.10.10.0/27 link#2 U 8 57315057 rl0
10.10.10.26 link#2 UHS 0 0 lo0
81.17.174.196/30 link#1 U 0 0 em0
81.17.174.198 link#1 UHS 0 0 lo0
109.238.165.226 81.17.174.197 UGHS 0 509 em0
127.0.0.1 link#5 UH 0 146789 lo0
192.168.60.0/23 link#3 U 413 335429101 rl1
192.168.60.1 link#3 UHS 2 1206 lo0
192.168.65.0/24 192.168.100.1 UGS 0 5907 gif0
192.168.66.0/24 192.168.66.1 UGS 0 18622573 gif1
192.168.66.1 link#7 UH 0 3660450 gif1
192.168.67.0/24 192.168.100.1 UGS 0 462 gif0
192.168.69.0/24 192.168.60.28 UGS 0 1929049 rl1
192.168.71.0/24 192.168.60.28 UGS 21 4140279 rl1
192.168.100.1 link#6 UH 0 140679 gif0Но думаю, что маршруты не имеют отношение к проблеме. Т.к. в зависимости от правил spdadd то одно работает, то другое.
>> Покажи своему другу и спроси - всё ли ему понятно.
> Показал, понял.НЕ ВЕРЮ!
>>> Что именно было не понятно в вопросе? Обращайтесь, объясню.
>> Позволю тебе напомнить что ты спросил --
>> "Какие правила нужно добавить, чтобы все
>> "Локальная сетка (60.1)" -- это относится к LAN1,LAN2,LAN3,LAN4 или LAN5?
> ...но в сетях за ГВ 2 нет интернета...
>> А подсеть 192.168.60.0/23 ?
> spdadd 192.168.60.0/23...
>> а слабо показать таблицу маршрутизации на обоих роутерах?
> Gw1:
> Destination Gateway Flags Refs Use Netif ExpireМда, в такой сети без поллитры не разберёшься - показывай часть rc.conf касающуюся настройки сети.
> Но думаю, что маршруты не имеют отношение к проблеме. Т.к. в зависимости
> от правил spdadd то одно работает, то другое.А без правил - работает?
И вообще - зачем шифровать трафик интернета?spdadd 192.168.60.0/23 0.0.0.0/0 any -P out ipsec esp/tunnel/81.17.174.198-109.238.165.226/require;
spdadd 0.0.0.0/0 192.168.60.0/23 any -P in ipsec esp/tunnel/192.168.100.1-81.17.174.198/require;
^^^^^^^^^^^^^Это опечатка?
192.168.100.1
^^^^^^^^^^^^^Это опечатка?
>> Gw1:
>> Destination Gateway Flags Refs Use Netif Expire
> Мда, в такой сети без поллитры не разберёшься - показывай часть rc.conf
> касающуюся настройки сети.ГВ1
defaultrouter="192.168.100.3"
gifconfig_gif0="192.168.100.1 81.17.174.198"
ifconfig_gif0="inet 192.168.100.1 192.168.60.1 netmask 255.255.254.0 mtu 1500"
route_vpn0=" -net 192.168.60.0/23 192.168.60.1"
ГВ2
defaultrouter="192.168.100.1"
gifconfig_gif0="81.17.174.198 109.238.165.225"
ifconfig_gif0="inet 192.168.60.1 192.168.100.1 netmask 255.255.255.0 mtu 1500"
route_static3=" -host 109.238.165.226 81.17.174.197">> Но думаю, что маршруты не имеют отношение к проблеме. Т.к. в зависимости
>> от правил spdadd то одно работает, то другое.
> А без правил - работает?Нет, без них вообще ничего не работает.
> И вообще - зачем шифровать трафик интернета?
Трафик в инет не шифруется, но он должен пройти через впн канал и выйти в интернет через другого прова, который стоит за ГВ1. На ГВ2 нет интернета, только связь с ГВ1.
> spdadd 192.168.60.0/23 0.0.0.0/0 any -P out ipsec esp/tunnel/81.17.174.198-109.238.165.226/require;
> spdadd 0.0.0.0/0 192.168.60.0/23 any -P in ipsec esp/tunnel/192.168.100.1-81.17.174.198/require;
> ^^^^^^^^^^^^^Это опечатка?Нет, сервер на котором стоит IpSec стоит за натом и по этому адрес 100,1
т.е. так:
route_static3=" -host 109.238.165.224 -netmask 255.255.255.240 81.17.174.197"
>[оверквотинг удален]
> ГВ1
> defaultrouter="192.168.100.3"
> gifconfig_gif0="192.168.100.1 81.17.174.198"
> ifconfig_gif0="inet 192.168.100.1 192.168.60.1 netmask 255.255.254.0 mtu 1500"
> route_vpn0=" -net 192.168.60.0/23 192.168.60.1"
> ГВ2
> defaultrouter="192.168.100.1"
> gifconfig_gif0="81.17.174.198 109.238.165.225"
> ifconfig_gif0="inet 192.168.60.1 192.168.100.1 netmask 255.255.255.0 mtu 1500"
> route_static3=" -host 109.238.165.226 81.17.174.197"Всё чудесатее и чудесатее! ИМХО, у тебя ничего не получится.
>>> Но думаю, что маршруты не имеют отношение к проблеме. Т.к. в зависимости
>>> от правил spdadd то одно работает, то другое.
>> А без правил - работает?
> Нет, без них вообще ничего не работает.Это говорит о том , что надо бы сначала маршрутизацию настроить
>> И вообще - зачем шифровать трафик интернета?
> Трафик в инет не шифруется, но он должен пройти через впн канал
> и выйти в интернет через другого прова, который стоит за ГВ1.
> На ГВ2 нет интернета, только связь с ГВ1.
>> spdadd 192.168.60.0/23 0.0.0.0/0 any -P out ipsec esp/tunnel/81.17.174.198-109.238.165.226/require;
>> spdadd 0.0.0.0/0 192.168.60.0/23 any -P in ipsec esp/tunnel/192.168.100.1-81.17.174.198/require;
>> ^^^^^^^^^^^^^Это опечатка?
> Нет, сервер на котором стоит IpSec стоит за натом и по этому
> адрес 100,1
>[оверквотинг удален]
>> defaultrouter="192.168.100.3"
>> gifconfig_gif0="192.168.100.1 81.17.174.198"
>> ifconfig_gif0="inet 192.168.100.1 192.168.60.1 netmask 255.255.254.0 mtu 1500"
>> route_vpn0=" -net 192.168.60.0/23 192.168.60.1"
>> ГВ2
>> defaultrouter="192.168.100.1"
>> gifconfig_gif0="81.17.174.198 109.238.165.225"
>> ifconfig_gif0="inet 192.168.60.1 192.168.100.1 netmask 255.255.255.0 mtu 1500"
>> route_static3=" -host 109.238.165.226 81.17.174.197"
> Всё чудесатее и чудесатее! ИМХО, у тебя ничего не получится.Почему?
>>>> Но думаю, что маршруты не имеют отношение к проблеме. Т.к. в зависимости
>>>> от правил spdadd то одно работает, то другое.
>>> А без правил - работает?
>> Нет, без них вообще ничего не работает.
> Это говорит о том , что надо бы сначала маршрутизацию настроитьМаршрутизация работает. я же говорю, если поставить это правило:
>>> spdadd 192.168.60.0/23 0.0.0.0/0 any -P out ipsec esp/tunnel/81.17.174.198-109.238.165.226/require;
>>> spdadd 0.0.0.0/0 192.168.60.0/23 any -P in ipsec esp/tunnel/192.168.100.1-81.17.174.198/require;То интернет просыпается, но пропадет 60-ая сетка.
>>> И вообще - зачем шифровать трафик интернета?
>> Трафик в инет не шифруется, но он должен пройти через впн канал
>> и выйти в интернет через другого прова, который стоит за ГВ1.
>> На ГВ2 нет интернета, только связь с ГВ1.
>>> spdadd 192.168.60.0/23 0.0.0.0/0 any -P out ipsec esp/tunnel/81.17.174.198-109.238.165.226/require;
>>> spdadd 0.0.0.0/0 192.168.60.0/23 any -P in ipsec esp/tunnel/192.168.100.1-81.17.174.198/require;
>>> ^^^^^^^^^^^^^Это опечатка?
>> Нет, сервер на котором стоит IpSec стоит за натом и по этому
>> адрес 100,1
>[оверквотинг удален]
>>> gifconfig_gif0="192.168.100.1 81.17.174.198"
>>> ifconfig_gif0="inet 192.168.100.1 192.168.60.1 netmask 255.255.254.0 mtu 1500"
>>> route_vpn0=" -net 192.168.60.0/23 192.168.60.1"
>>> ГВ2
>>> defaultrouter="192.168.100.1"
>>> gifconfig_gif0="81.17.174.198 109.238.165.225"
>>> ifconfig_gif0="inet 192.168.60.1 192.168.100.1 netmask 255.255.255.0 mtu 1500"
>>> route_static3=" -host 109.238.165.226 81.17.174.197"
>> Всё чудесатее и чудесатее! ИМХО, у тебя ничего не получится.
> Почему?тебе больше года назад сказали как правильно делать:
http://www.opennet.me/openforum/vsluhforumID1/90484.html#5>>>>> Но думаю, что маршруты не имеют отношение к проблеме. Т.к. в зависимости
>>>>> от правил spdadd то одно работает, то другое.
>>>> А без правил - работает?
>>> Нет, без них вообще ничего не работает.
>> Это говорит о том , что надо бы сначала маршрутизацию настроить
> Маршрутизация работает. я же говорю, если поставить это правило:
>>>> spdadd 192.168.60.0/23 0.0.0.0/0 any -P out ipsec esp/tunnel/81.17.174.198-109.238.165.226/require;
>>>> spdadd 0.0.0.0/0 192.168.60.0/23 any -P in ipsec esp/tunnel/192.168.100.1-81.17.174.198/require;
> То интернет просыпается, но пропадет 60-ая сетка."Когда будет решён вопрос с маршрутизацией в сети, думайте как это дело приложить к ipsec"
>>>> И вообще - зачем шифровать трафик интернета?
>>> Трафик в инет не шифруется, но он должен пройти через впн канал
>>> и выйти в интернет через другого прова, который стоит за ГВ1.
>>> На ГВ2 нет интернета, только связь с ГВ1.
>>>> spdadd 192.168.60.0/23 0.0.0.0/0 any -P out ipsec esp/tunnel/81.17.174.198-109.238.165.226/require;
>>>> spdadd 0.0.0.0/0 192.168.60.0/23 any -P in ipsec esp/tunnel/192.168.100.1-81.17.174.198/require;
>>>> ^^^^^^^^^^^^^Это опечатка?
>>> Нет, сервер на котором стоит IpSec стоит за натом и по этому
>>> адрес 100,1
>[оверквотинг удален]
>>>>>> от правил spdadd то одно работает, то другое.
>>>>> А без правил - работает?
>>>> Нет, без них вообще ничего не работает.
>>> Это говорит о том , что надо бы сначала маршрутизацию настроить
>> Маршрутизация работает. я же говорю, если поставить это правило:
>>>>> spdadd 192.168.60.0/23 0.0.0.0/0 any -P out ipsec esp/tunnel/81.17.174.198-109.238.165.226/require;
>>>>> spdadd 0.0.0.0/0 192.168.60.0/23 any -P in ipsec esp/tunnel/192.168.100.1-81.17.174.198/require;
>> То интернет просыпается, но пропадет 60-ая сетка.
> "Когда будет решён вопрос с маршрутизацией в сети, думайте как это дело
> приложить к ipsec"Я вот если честно в упор не понимаю в чем может быть проблема с маршрутами...
Объясните дураку, может быстрее разберусь.
>>[оверквотинг удален]
>>>>>>> от правил spdadd то одно работает, то другое.
> Я вот если честно в упор не понимаю в чем может быть
> проблема с маршрутами...
> Объясните дураку, может быстрее разберусь.Попробую.
Начнём с того, что gif-интерфейс во FreeBSD это реализация туннеля IP-over-IP (http://en.wikipedia.org/wiki/IP_tunnel). Этот туннель прост и быстр.Накладные расходы - "лишний" заголовок IP-пакета. Никакого шифрования он не предусматривает. Это самый главный его недостаток, если применять его для организации VPN.Ipsec - это набор протоколов безопасной передачи данных по IP(http://en.wikipedia.org/wiki/IPsec). Он может обеспечивать шифрование,сжатие и подписывание IP-пакетов.
Очень важно понимать, что ipsec и ip_tunnel (gif) вещи ортогональные, друг от друга не зависящие!
Кривоватая реализация VPN, описанная в handbook-е кочует по конфигам начинающих админов бездумно копи-пастящих настройки и заваливающие форумы криками "помогите".
В чём кривоватость схемы описанной в handbook-е (http://www.freebsd.org/doc/en/books/handbook/ipsec.html):
1 Если использовать туннельный режим ipsec, то городить gif-интерфейсы не нужно,
достаточно прописать маршруты на реальные адреса. Т.е. из "15.9.4 Configuring IPsec on FreeBSD" опускаем настройку IP_tunnel (до строки Setting up the tunnels is the easy part),corp-net# route add 10.0.0.0/24 192.168.1.12
priv-net# route add 10.246.38.0/24 172.16.5.4Далее настраиваем ipsec по статье, получаем туннель средствами ipsec. Поздравляю! Никакие gif-ы тут нафиг не нужны! Правила SPD имеют вид примерно такой:
spdadd 10.246.38.0/24 10.0.0.0/24 any -P out ipsec esp/tunnel/172.16.5.4-192.168.1.12/use;
spdadd 10.0.0.0/24 10.246.38.0/24 any -P in ipsec esp/tunnel/192.168.1.12-172.16.5.4/use;2 Если таки сисадмин осознаёт, что ему нужен gif-интерфейс (его легко можно подслушать tcpdump-ом, легко контролировать - пинг на другой конец туннеля, использовать для динамической маршрутизации), тогда настраивать его лучше так:
gifconfig_gif0="172.16.5.4 192.168.1.12"
ifconfig_gif0="inet 10.3.1.1 10.3.1.2 netmask 0xffffffff mtu 1500"
route_home="-net 10.0.0.0/24 10.3.1.2"на другой машине соответственно
gifconfig_gif0="192.168.1.12 172.16.5.4"
ifconfig_gif0="inet 10.3.1.2 10.3.1.1 netmask 0xffffffff mtu 1500"
route_corp="-net 10.246.38.0/24 10.3.1.1"10.3.1.1 и 10.3.1.2 - адреса концов туннеля, я считаю, что настраивать как в хэндбуке - глупо, непонятно, запутано.
После этого туннель уже работает - сети доступны через туннель, но данные ходят в открытом виде. Защищаем наши данные ipsec-ом -- racoon и файервол настраеваем также как в хэндбуке, но правила SPD используем следующиеspdadd 172.16.5.4 192.168.1.12 ipencap -P out ipsec ipcomp/transport//require esp/transport//require;
spdadd 192.168.1.12 172.16.5.4 ipencap -P in ipsec ipcomp/transport//require esp/transport//require;Используем транспортный режим ipsec - для всех пакетов протокола ipencap (протокол номер 4,тот самый gif IP_tunnel) между хостами 172.16.5.4 и 192.168.1.12 требуем применить сжатие (ipcomp) и шифрование (esp)
>>>[оверквотинг удален]
>>>>>>>> от правил spdadd то одно работает, то другое.
>> Я вот если честно в упор не понимаю в чем может быть
>> проблема с маршрутами...
>> Объясните дураку, может быстрее разберусь.
> Попробую.
> Начнём с того, что gif-интерфейс во FreeBSD это реализация туннеля IP-over-IP (http://en.wikipedia.org/wiki/IP_tunnel).Спасибо большое за помощь и за объяснение. Из него я понял почему у меня работало с поднятым ракуном, но без него не работало. Не знал, что ракун поднимает свой туннель.
А дело оказалось все таки не в маршрутах, по этому я не мог понять причем они тут.
Все было очень прозаично и банально. Я попутал адрес в туннеле:
gifconfig_gif0="81.17.174.198 109.238.165.225(!)"
spdadd 192.168.60.0/23 0.0.0.0/0 any -P out ipsec esp/tunnel/81.17.174.198-109.238.165.226(!)/require;
Когда все настройки снес и начал заново поднимать нашел косяк. (((((