В общем, есть некий хост. Нужно сделать так, чтобы доступ к определённым (на самом деле - всем, кроме небольшого исключения) портам на нём был возможен только через 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