LINUX.ORG.RU
решено ФорумAdmin

REJECT пакетов в отсутствии ipsec туннеля

 ,


0

2

Имеет ipsec туннель между сервером CentOS 5, openswan 2.6.32-3.el5 и клинетом GPRS модемом MOXA G3150. За сервером сеть 192.168.0.0/16, за модемом 172.16.30.0/29. У модема динамический ip-адрес, поэтому пока он не установит соединение с сервером, туннеля нет.

Когда туннель установлен, пакеты заворачиваются в esp и ходят как надо, но когда туннеля нет, пакеты, из локальной сети 192.168.0.0/16, уходят по маршруту по умолчанию, а хотелось бы, чтобы был REJECT этих пакетов с созданием соответствующих icmp-пакетов.

Первый, пришедщий в голову костыль — следить за выводом «ip xfrm pol» и зависимости от наличия/отсутствия политик (создаваемых openswan pluto) удалять/создавать REJECT правило в iptables FORWARD. Но это же совсем не правильно, научите как правильно.

P.S. Модем умеет только ipsec, не надо советовать openvpn.

★★★★★

В случае с racoon при установленной политике ipsec, пакеты относящиеся к сети в политике никогда не пойдут в маршрут по умолчанию. Они просто не пройдут вообще, пока не будет туннеля. Может в лебеде можно как-то загрузить политику при неустановленном соединении?

Davyd ★★
()
Ответ на: комментарий от Davyd

Я ещё полностью не разобрался. Пока сделал в конфиге «auto=start» и поведение стало такое. При старте создаётся политика:

src 192.168.0.0/16 dst 172.16.30.0/29 
        dir out priority 2595 
        tmpl src 0.0.0.0 dst 0.0.0.0
                proto esp reqid 0 mode transport
В результате с самого сервера в маршрут по умолчанию пакеты не идут, а вот forward-пакеты не понятно, сейчас не идут, а до этого, вроде, проходили. Хотя, может путаю.

А когда соединение устанавливается эта политика удаляется и появляются 3 политики (для out, fwd и in) с «mode tunnel».

Если прекратить соединение выполнив на сервере команду «ipsec auto --down moxa» то, непонятно почему, вобще не остаётся политик для 192.168.0.0/16, хотя в man'е написано, что политики остаются и их нужно убирать опцией "--unroute".

В общем, то, приемлемо, но хочется, именно, чтобы был «icmp unreachable», чтобы было сразу понятно, что туннеля нет.

mky ★★★★★
() автор топика
Ответ на: комментарий от mky

Нашёл такой вариант:

1. Сконфигурить «auto=add», чтобы в отсутствии туннеля никакая политика не загружалась.

2. Ловить пакеты в iptables и уже делать хоть DROP, хоть REJECT:

iptables -s 192.168.0.0/16 -d 172.16.30.0/29 -m policy --dir out --pol none -j ...

После установления туннеля OpenSwan создаёт политики, следовательно правило в iptables перестаёт на них срабатывать.

mky ★★★★★
() автор топика

можно поступить более извращенно - прикрутить на обоих концах quagga, чтобы маршруты к сетям за сервером и модемом были только когда туннель установлен(трафик quagga тоже пустить по туннелю между сервером-модемом). А по умолчанию завернуть сетки в blackhole/reject c приоритетом поменьше...

Pinkbyte ★★★★★
()
Ответ на: комментарий от ansky

В принципе, тоже решение. Правда у меня 192.168.0.0/16 маршрутизируется не по main таблице маршрутизации.

Сейчас посмотрел /usr/libexec/ipsec/_updown скрипт, вроде там можно задать используемую таблицу маршрутизации $IPROUTETABLE.

А так мне проще написать свой _updown скрипт, я просто сразу не понял, что он вызывается несколько раз на разные стадии установления соединения.

mky ★★★★★
() автор топика
Ответ на: вопрос от evgenyra

Оно не на пол упадёт, оно пойдёт по другому маршруту, а мне надо REJECT.

mky ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.