URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 5014
[ Назад ]

Исходное сообщение
"IpSec, много сетей и интернет"

Отправлено Aidaho , 27-Мрт-12 12:55 
Добрый день, друзья-товарищи. Помогите нубу. :(

Есть 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 не видят и он никого из своей же сетки не видит. Какие правила нужно добавить, чтобы все работало? Уже неделю бьюсь без толку.


Содержание

Сообщения в этом обсуждении
"IpSec, много сетей и интернет"
Отправлено Aidaho , 28-Мрт-12 07:24 
> То начинает видится интернет, но пропадает локальная сетка (60.1), все кто сидит
> в 60-ой сети, могут гулять в другие сети, но 60.1 не
> видят и он никого из своей же сетки не видит. Какие
> правила нужно добавить, чтобы все работало? Уже неделю бьюсь без толку.

Не уж то никто не сталкивался с подобным случаем? (



"IpSec, много сетей и интернет"
Отправлено a2l , 29-Мрт-12 05:00 
>> То начинает видится интернет, но пропадает локальная сетка (60.1), все кто сидит
>> в 60-ой сети, могут гулять в другие сети, но 60.1 не
>> видят и он никого из своей же сетки не видит. Какие
>> правила нужно добавить, чтобы все работало? Уже неделю бьюсь без толку.
> Не уж то никто не сталкивался с подобным случаем? (

Хочешь получить ответ - научись правильно задавать вопрос
http://segfault.kiev.ua/smart-questions-ru.html


"IpSec, много сетей и интернет"
Отправлено Aidaho , 29-Мрт-12 07:50 
>>> То начинает видится интернет, но пропадает локальная сетка (60.1), все кто сидит
>>> в 60-ой сети, могут гулять в другие сети, но 60.1 не
>>> видят и он никого из своей же сетки не видит. Какие
>>> правила нужно добавить, чтобы все работало? Уже неделю бьюсь без толку.
>> Не уж то никто не сталкивался с подобным случаем? (
> Хочешь получить ответ - научись правильно задавать вопрос
> http://segfault.kiev.ua/smart-questions-ru.html

А в чем именно не правильность заданного вопроса? Понятно все описал и схема нарисована.

Что именно было не понятно в вопросе? Обращайтесь, объясню.


"IpSec, много сетей и интернет"
Отправлено a2l , 29-Мрт-12 12:21 
>>>> То начинает видится интернет, но пропадает локальная сетка (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 ?

а слабо показать таблицу маршрутизации на обоих роутерах?


"IpSec, много сетей и интернет"
Отправлено Aidaho , 29-Мрт-12 12:52 

> Покажи своему другу и спроси - всё ли ему понятно.

Показал, понял.
>> Что именно было не понятно в вопросе? Обращайтесь, объясню.
> Позволю тебе напомнить что ты спросил --
> "Какие правила нужно добавить, чтобы все
> "Локальная сетка (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   gif0

GW2
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 то одно работает, то другое.


"IpSec, много сетей и интернет"
Отправлено a2l , 29-Мрт-12 13:33 
>> Покажи своему другу и спроси - всё ли ему понятно.
> Показал, понял.

НЕ ВЕРЮ!
>>> Что именно было не понятно в вопросе? Обращайтесь, объясню.
>> Позволю тебе напомнить что ты спросил --
>> "Какие правила нужно добавить, чтобы все
>> "Локальная сетка (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;
^^^^^^^^^^^^^Это опечатка?


"IpSec, много сетей и интернет"
Отправлено a2l , 29-Мрт-12 13:35 

192.168.100.1
^^^^^^^^^^^^^Это опечатка?



"IpSec, много сетей и интернет"
Отправлено Aidaho , 29-Мрт-12 13:42 
>> 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


"IpSec, много сетей и интернет"
Отправлено Aidaho , 29-Мрт-12 17:20 
т.е. так:
route_static3=" -host 109.238.165.224 -netmask 255.255.255.240 81.17.174.197"

"IpSec, много сетей и интернет"
Отправлено a2l , 30-Мрт-12 05:56 
>[оверквотинг удален]
> ГВ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


"IpSec, много сетей и интернет"
Отправлено Aidaho , 30-Мрт-12 07:03 
>[оверквотинг удален]
>> 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


"IpSec, много сетей и интернет"
Отправлено a2l , 30-Мрт-12 07:38 
>[оверквотинг удален]
>>> 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


"IpSec, много сетей и интернет"
Отправлено Aidaho , 30-Мрт-12 13:54 

>[оверквотинг удален]
>>>>>> от правил 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"

Я вот если честно в упор не понимаю в чем может быть проблема с маршрутами...
Объясните дураку, может быстрее разберусь.



"IpSec, много сетей и интернет"
Отправлено a2l , 02-Апр-12 11:38 
>>[оверквотинг удален]
>>>>>>> от правил 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)



"IpSec, много сетей и интернет"
Отправлено Aidaho , 02-Апр-12 12:23 
>>>[оверквотинг удален]
>>>>>>>> от правил 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;

Когда все настройки снес и начал заново поднимать нашел косяк. (((((