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

Доступ к хосту только через ipsec

 , , ,


0

1

В общем, есть некий хост. Нужно сделать так, чтобы доступ к определённым (на самом деле - всем, кроме небольшого исключения) портам на нём был возможен только через ipsec. Также нужно, чтобы к нему умел коннектиться android4.

ipsec я настроил (racoon, ipsec-psk-xauth, режим туннелирования т. к. андроид по-другому не умеет), андроид успешно цепляется к нему. Но при этом почему-то tcp-соединения с клиента на сервер не устанавливаются. iptables там выглядят так:

fileserver ~ # iptables -vL
Chain INPUT (policy DROP 879K packets, 46M bytes)
 pkts bytes target     prot opt in     out     source               destination         
76688 7614K ACCEPT     all  --  lo     any     anywhere             anywhere            
 8934  748K ACCEPT     icmp --  any    any     anywhere             anywhere            
  23M 1586M ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
13868  824K ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh
   28  1268 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https
    3  1512 ACCEPT     udp  --  any    any     anywhere             192.168.2.22         udp dpt:isakmp
   26  3952 ACCEPT     esp  --  any    any     anywhere             192.168.2.22        

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 22M packets, 30G bytes)
 pkts bytes target     prot opt in     out     source               destination         
Пинги при этом проходят нормально, в tcpdump вижу сначала пакет esp, затем деинкапсулированный icmp-пакет, и ответ в обратную сторону (тоже два пакета - обычный и в esp). В случае с tcp тоже вижу esp, затем вынутый из него SYN, и всё, ответа нет. Пробовал даже добавлять в INPUT правило, разрешающее вообще все пакеты на 192.168.2.22 с того ip, который racoon выдал клиенту - правило, судя по счётчикам, срабатыват, но не помогает, всё равно tcp не работает.

★★

А покажи поля отфильтрованного SYN'а.

thesis ★★★★★
()
Ответ на: комментарий от ne-vlezay

попробуй в iptables прописать source

Так пробовал же, написал выше - прописывал в source тот ip, который получило андроид-устройство от racoon - ноль эффекта. Правило срабатывает (счётчики растут), ответных пакетов в tcpdump не видно.

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

Спасибо всем ответившим, выяснилось, что я сам дурак и всё работало как надо. Просто я для проверки пытался коннектиться к закрытому порту, ожидая RST в ответ. А в ядре была включена (дефолт) grsec-опция ip blackhole, которая как раз заключается в том, что RST не шлются.

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

Да, разумеется, чтобы всё заработало как надо, надо было добавить ещё

iptables -A INPUT -m policy --dir in --pol ipsec -j ACCEPT

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

У вас, случаем, не OpenVZ? А то на нем есть похожий баг в ядре. Если нет, то вам действительно нужно сделать, как пишет slav

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