От себя лишь хочу добавить вот что.
1. Если все соединения настроены по данной статье, тогда sainfo в конфигурации racoon будет везде совпадать. А это значит, что вместо повторения одной и той же секции, можно написать секцию sainfo один раз, заменив секции вида:
sainfo subnet 10.5.3.0/24 any address 10.11.16.0/23 any { pfs_group 2; lifetime time 24 hour; encryption_algorithm aes; authentication_algorithm hmac_sha1; compression_algorithm deflate; }на одну секцию вида
sainfo anonymous{ pfs_group 2; lifetime time 24 hour; encryption_algorithm aes; authentication_algorithm hmac_sha1; compression_algorithm deflate; }2. Реальные таблицы маршрутизации бывают много сложнее выдуманных книжных.
Во всех найденных мной статьях между собой связываются два не пересекающихся диапазона IP-адресов. Например, сети 192.168.0.0/24 и 172.16.1.0/25 или 10.0.1.0/24 и 10.0.2.0/24 и т.п.
Но реальные ситуации могут оказаться гораздо сложнее. Например, на одном из маршрутизаторов под управлением FreeBSD могут оказаться три интерфейса:
- Интернет-интерфейс, через который идёт трафик по-умолчанию, и трафик на сеть 192.168.1.0/24,
- Локальный интерфейс, к которому подключена сеть 10.0.0.0/25,
- Некий дополнительный интерфейс, через который нужно направлять шифрованный трафик из локальной сети в сеть 192.168.0.0/16.
LAN 10.0.0.0/25 | | ____|______ | | | FreeBSD |------> Internet, LAN 192.168.1.0/24 |___________| || || IPSec _____||_____ | | | Cisco | |____________| | | | LAN 192.168.0.0/16Что мы видим в этом случае? Два пересекающихся диапазона IP-адресов: 192.168.1.0/24 и 192.168.0.0/16. В файле ipsec.conf FreeBSD можно указать лишь сети, для которых будет осуществляться шифрование, но нельзя указать интерфейс, для которого действует это правило. В итоге может получиться, что будет шифроваться весь трафик из сети 10.0.0.0/25 в сеть 192.168.0.0/16, включая трафик на сеть 192.168.1.0/24, уходящий через Интернет-интерфейс, где никто не ожидает, что он будет зашифрован.
Или другой подобный случай. Есть большая IPSec-сеть, в которой филиальные маршрутизаторы FreeBSD соединяются только с центральным офисом компании. Маршрутизаторов много, скажем три-четыре десятка, за каждым из них закреплён свой диапазон 10.0.x.0/24. Что делать, если к центральному офису будет подключен ещё один филиальный маршрутизатор? Нужно будет прописывать эту сеть в политики шифрования каждого из остальных филиальных маршрутизаторов? А не устанешь?
LAN 10.0.x.0/24 | | ____|______ | | | FreeBSD | | 10.1.0.x | |___________| || || IPSec _____||_____ ___________ | | | | | Cisco | IPSec | FreeBSD | | 10.1.0.1 |=========| 10.1.0.y |--------LAN 10.0.y.0/24 |____________| |___________| || || IPSec ____||_____ | | | FreeBSD | | 10.1.0.z | |___________| | | | LAN 10.0.z.0/24В таком случае было бы хорошо настроить на маршрутизаторах филиалов некое подобие маршрута по умолчанию. Например, прописать, что филиальный маршрутизатор должен шифровать трафик между сетями 10.0.0.0/8 в центральном офисе и 10.0.x.0/24 в филиале. Но если написать так в ipsec.conf, то маршрутизатор будет шифровать трафик между своей локальной сетью 10.0.x.0/24 и собой 10.0.x.1, поскольку его собственный адрес 10.0.x.1 формально тоже находится в "большой сети" 10.0.0.0/8. А ведь FreeBSD может быть не только маршрутизатором, а и, например, почтовым сервером. В таком случае почтой в локальной сети филиала пользоваться не смогут.
Именно на такую ловушку я и попался. Хорошо, что я перед настройкой на реальном оборудовании собрал тестовый стенд, на котором и выявил такую проблему.
В подобных случаях можно исключить некую подсеть из большой сети следующим образом:
spdadd 10.0.8.0/24 10.0.8.0/24 any -P out none; spdadd 10.0.8.0/24 10.0.8.0/24 any -P in none; spdadd 10.0.8.0/24 10.0.0.0/8 any -P out ipsec esp/tunnel/10.1.0.8-10.1.0.1/unique; spdadd 10.0.0.0/8 10.0.8.0/24 any -P in ipsec esp/tunnel/10.1.0.1-10.1.0.8/unique;В этом примере мы исключаем из шифрования сети 10.0.0.0/8 подсеть 10.0.8.0/24.
4 комментария:
Подскажите, а нужно ли предварительно поднимать туннель до циски через gif ? Настраивал по этой статье, запускаю racoon и не вижу вообще никакого трафика. В логах, всего три строчки. Сейчас под рукой нет, но заканчивается он примерно так: читаю конфигурационный файл.
Тунель поднимать не нужно. Сразу после запуска связь не устанавливается сама по себе - нужно чтобы пошёл трафик в направлении IPSec-туннеля. Можно попробовать сделать пинг, удовлетворяющий правилам для шифруемого трафика.
Здравствуйте, есть подобная проблема связать FreeBSD c Mikrotik использую тот же ipsec-tools c racoon. Не могли бы вы сказать какие изменения потребуются в вашей схеме (политики шифрования,firewall и т.д.) в случае если одна сторона как у вас Debian будет с фиксированным "белым" ip XX.XX.XX.XX а не 0.0.0.0/0 как в вашем случае?
>в случае если одна сторона как у вас Debian будет с фиксированным "белым" ip XX.XX.XX.XX а не 0.0.0.0/0 как в вашем случае?
0.0.0.0/0 - это больше похоже на маршрут по умолчанию.
Не понятно, при чём тут белый IP на интерфейсе или не белый, т.к. настройка IPSec по сути от белизны IP-адреса никак не зависит :)
Отправить комментарий