lug-bg: IPsec esp Linux(racoon) <-> OpenBSD(isakpmd) [ДЪЛГО]
- Subject: lug-bg: IPsec esp Linux(racoon) <-> OpenBSD(isakpmd) [ДЪЛГО]
- From: Alexander Iliev <sasoiliev@xxxxxxxxx>
- Date: Tue, 17 Oct 2006 23:24:48 +0300
- Delivered-to: lug-bg-list@xxxxxxxxxxxxxxxxxx
- Delivered-to: lug-bg@xxxxxxxxxxxxxxxxxx
Добър вечер.
Първо искам да се извиня за дългото писмо.
Сега за проблема - опитвам се да пусна ESP тунел между Fedora Core 4
и OpenBSD 3.9.
Ситуацията е следната - Linux-а е зад SNAT, OpenBSD-то е с публичен
адрес. Адреса на Linux-а от NAT-натата мрежа е 10.0.0.89. От другата
страна също има вътрешна мрежа - 192.168.1/24. Имам малко притеснение,
понеже се опитвам да пусна тунела м/у именно тези две мрежи - 10.0/16
и 192.168.1/24. Притеснението ми е, че от страната на Fedora-та адреса
е част от мрежата, която се опитвам да прекарам през самия тунел. Не
знам дали изобщо се прави така, ако може някой да ме осветли? :)
Проблемът с тунела е, че от машините от 192.168.1/24 няма достъп до
10.0/16 мрежата, с изключение на IPsec gateway-а (OpenBSD-то). Т.е.
при 'ping 10.0.0.89' от произволна машина от 192.168.1/16 няма отговор,
при 'ping -I 192.168.1.1 10.0.0.89' от машината с OpenBSD няма проблем
(192.168.1.1 е адреса на OpenBSD машината от вътрешната мрежа).
От другата страна няма проблем, т.е. ако от 10.0.0.89 пусна пинг до
коя да е машина от 192.168.1/16 си връща отговори.
Конфигурацията е с pre-shared keys, ето подробностите:
---- racoon.conf ----
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
sainfo anonymous
{
pfs_group 2;
lifetime time 1 hour ;
encryption_algorithm 3des, blowfish 448, rijndael ;
authentication_algorithm hmac_sha1, hmac_md5 ;
compression_algorithm deflate ;
}
remote anonymous
{
exchange_mode main;
my_identifier address;
nat_traversal on;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
}
---- /racoon.conf ----
---- setkey.conf ----
#! /sbin/setkey -f
flush;
spdflush;
spdadd 192.168.1.0/24 10.0.0.0/16 any -P in ipsec
esp/tunnel/W.Z.Y.Z-10.0.0.89/require;
spdadd 10.0.0.0/16 192.168.1.0/24 any -P out ipsec
esp/tunnel/10.0.0.89-W.X.Y.Z/require;
---- /setkey.conf ----
---- isakmpd.conf ----
[General]
Listen-On= W.X.Y.Z
[Phase 1]
P.Q.R.S= peer-machine
[Phase 2]
Passive-connections= VPN
[peer-machine]
Phase= 1
Transport= udp
Address= P.Q.R.S
Configuration= Default-main-mode
Authentication= <secret>
[VPN]
Phase= 2
ISAKMP-peer= peer-machine
Configuration= Default-quick-mode
Local-ID= local-internal-network
Remote-ID= remote-internal-network
[local-internal-network]
ID-type= IPV4_ADDR_SUBNET
Network= 192.168.1.0
Netmask= 255.255.255.0
[remote-internal-network]
ID-type= IPV4_ADDR_SUBNET
Network= 10.0.0.0
Netmask= 255.255.0.0
[Default-main-mode]
DOI= IPSEC
EXCHANGE_TYPE= ID_PROT
Transforms= 3DES-SHA,BLF-SHA
[Default-quick-mode]
DOI= IPSEC
EXCHANGE_TYPE= QUICK_MODE
Suites= QM-ESP-3DES-SHA-SUITE
---- /isakmpd.conf ----
---- isakmpd.policy ----
Keynote-version: 2
Authorizer: "POLICY"
Conditions: app_domain == "IPsec policy" &&
esp_present == "yes" &&
esp_enc_alg != "null" -> "true";
---- /isakmpd.policy ----
W.X.Y.Z е публичният адрес на OpenBSD машината,
P.Q.R.S е адресът, с който излиза 10.0.0.89 към интернет.
В допълнение само да кажа, че имам 'no nat' правило за пакетите
от 192.168.1/16, пускам всичко на enc0 и пускам udp/500 и udp/4500
на външния интерфейс на OpenBSD машината.
Много благодаря на всички, които благоволят да прочетат наистина
дългото обяснение. :)
Поздрави,
--
Александър Илиев
|