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