IPsec a iptables

Pavel Lisý pali na tmapy.cz
Neděle Září 24 17:59:33 CEST 2006


Dobrý den

Potřebuji nějakou kvalifikovanou radu ohledně nastavení IPsec a
iptables.

Nejprve popíšu záměr. 
Propojuji lokální síť s jinou sítí pomocí IPsec (na druhé straně je
nějaké cisco). Původně jsem používal vpnc (tj. připojení IPsec
host-to-host), který vytvoří na mé straně síťové rozhraní a provoz
odcházející přes toto rozhranní jsem maskoval, nějak takto: 

iptables -t nat -s local.ip.addresa/maska -o tun12 \
   -j MASQUERADE

Tak jsem mohl pomocí jednoho připojení umožnít komunikaci více strojů z
naší sítě na více strojů v vzdálené síti.

Bohužel se mi nepodařilo nakonfigurovat vpnc po výměně cisca za nějaký
nový typ. Nastavil jsem tedy připojení nativním IPsec/racoon démonem v
módu network-to-network.

Připojení mi chodí, narazil jsem ale tvrdě jinde. Vzhledem k tomu, že
obě sítě mají adresy z neveřejného rozsahu, který se navíc překrývá
(192.168.0.0/16), nemohu použít normální nastavení, ale musím naši síť
nějak zamaskovat. Nevím ale, jak to nastavit pomocí iptables.

stručné schema

192.168.20.20/16 - cisco -- internet -- mujFW - 192.168.5.1/24

na své straně FW mám udělaný alias eth0:0 10.0.0.1/24, za který jsem
chtěl komunikaci zamaskovat pomocí DNAT

iptables -t nat -A POSTROUTING -s 192.168.5.40/32 \
   -d 192.168.20.10/24 -j SNAT --to-source 10.0.0.1

Toto mi ale funguje pouze na pakety, které odesílám přímo z FW. Do
cílové sítě dorazí se zrojovou adresou 10.0.0.1.
Pokud pošlu něco z vnitřní sítě, tak se mi sice v iptables logu paket v
tomto místě zaznamená, ale do tunelu se už nic neposílá (tcpdump mlčí).
Po několika dnech testování jsem dospěl z závěru, že asi dělám někde
nějakou principiální chybu. Ale nenašel jsem nikde na internetu popis,
jak by to mělo fungovat. 

1. Jsou pakety do ipsec tunelu posílané až poté, co projdou přes
iptables POSTROUTING?

2. Jsem schopen nějak trasovat, kde paket je poté, co iptables (tedy
prostor v kernelu, který se pomocí iptables nastavuje) opustí?

Nenapadá vás někoho, jestli není něco v těchto úvahách špatně? 

Uvítám jakékoliv nakopnutí správným směrem.

Pavel





Další informace o konferenci Linux