Проблема с IPsec
Добавлено: 2010-08-31 11:10:54
Всем привет! Прошу совета в решении следующей проблемы: необходимо соединить 2 сети с помощью IPsec туннеля.
Офис 1: сеть 192.168.1.0/24, шлюз на FreeBSD 6.4 (внутренний IP- 192.168.1.1, внешний IP- 94.231.91.2)
Офис 2: сеть 192.168.2.0/24, шлюз на FreeBSD 6.4 (внутренний IP- 192.168.2.1, внешний IP- 92.231.28.130)
всё настраивалось с использованием статьи http://www.lissyara.su/archive/ipsec_old/ и хэндбука http://www.freebsd.org/doc/ru/books/handbook/ipsec.html
используется Racoon (/usr/ports/security/ipsec-tools), authentication method: preshared-key
вроде бы туннель между шлюзами устанавливается и пакеты шифруются.
на шлюзе с ip 192.168.1.1 пробую пинговать шлюз 192.168.2.1 и запускаю tcpdump
т.е. можно сделать вывод, что вроде бы всё ок и между шлюзами туннель работает
но проблема начинается, если мы будем посылать пакеты из одной локальной сети в другую - пакеты идут, но не шифруются, т.е.
при вырубании gif0 связь падает
т.е. получаеться что пакеты идут через gif0, как и должно быть.
В чём может быть проблема?
заранее признателен за любую помощь
конфиги шлюза FreeBSD 6.4-RELEASE (внутренний IP- 192.168.1.1, внешний IP- 94.231.91.2)
/etc/rc.conf
/usr/local/etc/ipsec.conf
/usr/local/etc/natd.conf
/usr/local/etc/racoon/racoon.conf
для 2-го шлюза конфиги аналогичные, за исключением ip адресов.
Офис 1: сеть 192.168.1.0/24, шлюз на FreeBSD 6.4 (внутренний IP- 192.168.1.1, внешний IP- 94.231.91.2)
Офис 2: сеть 192.168.2.0/24, шлюз на FreeBSD 6.4 (внутренний IP- 192.168.2.1, внешний IP- 92.231.28.130)
всё настраивалось с использованием статьи http://www.lissyara.su/archive/ipsec_old/ и хэндбука http://www.freebsd.org/doc/ru/books/handbook/ipsec.html
используется Racoon (/usr/ports/security/ipsec-tools), authentication method: preshared-key
вроде бы туннель между шлюзами устанавливается и пакеты шифруются.
на шлюзе с ip 192.168.1.1 пробую пинговать шлюз 192.168.2.1 и запускаю tcpdump
Код: Выделить всё
# ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1): 56 data bytes
64 bytes from 192.168.2.1: icmp_seq=0 ttl=64 time=1.752 ms
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=1.057 ms
64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=1.039 ms
64 bytes from 192.168.2.1: icmp_seq=3 ttl=64 time=1.056 ms
64 bytes from 192.168.2.1: icmp_seq=4 ttl=64 time=0.951 ms
64 bytes from 192.168.2.1: icmp_seq=5 ttl=64 time=1.235 ms
64 bytes from 192.168.2.1: icmp_seq=6 ttl=64 time=0.636 ms
--- 192.168.2.1 ping statistics ---
7 packets transmitted, 7 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.636/1.104/1.752/0.314 ms
Код: Выделить всё
# tcpdump
09:48:46.824329 IP 92.231.28.130 > 94.231.91.2: ESP(spi=0x04767959,seq=0x21), length 116
09:48:47.825098 IP 94.231.91.2 > 92.231.28.130: ESP(spi=0x0097e4e8,seq=0x23), length 116
09:48:47.825835 IP 94.231.91.2 > 92.231.28.130: ESP(spi=0x0097e4e8,seq=0x23), length 116
09:48:47.826288 IP 92.231.28.130 > 94.231.91.2: ESP(spi=0x04767959,seq=0x22), length 116
т.е. можно сделать вывод, что вроде бы всё ок и между шлюзами туннель работает
но проблема начинается, если мы будем посылать пакеты из одной локальной сети в другую - пакеты идут, но не шифруются, т.е.
Код: Выделить всё
ping 192.168.2.2
PING 192.168.2.2 (192.168.2.2): 56 data bytes
64 bytes from 192.168.2.2: icmp_seq=0 ttl=64 time=1.752 ms
64 bytes from 192.168.2.2: icmp_seq=1 ttl=64 time=1.057 ms
64 bytes from 192.168.2.2: icmp_seq=2 ttl=64 time=1.039 ms
Код: Выделить всё
# tcpdump
10:00:12.061525 IP 192.168.1.2 > 192.168.2.2: ICMP echo request, id 512, seq 27411, length 40
10:00:12.061939 IP 192.168.1.1 > 192.168.1.2: ICMP redirect 192.168.2.2 to host 192.168.1.1, length 36
10:00:12.062433 IP 94.231.91.2 > 92.231.28.130: ESP(spi=0x0f6f64b2,seq=0x5d), length 92
10:00:12.063044 IP 94.231.91.2 > 92.231.28.130: ESP(spi=0x0f6f64b2,seq=0x5d), length 92
10:00:12.063718 IP 192.168.1.2 > 192.168.2.2: ICMP echo request, id 512, seq 27411, length 40
10:00:12.063720 IP 192.168.2.2 > 192.168.1.2: ICMP echo reply, id 512, seq 27411, length 40
10:00:12.063722 IP 92.231.28.130 > 94.231.91.2: ESP(spi=0x03ca1b1f,seq=0x5d), length 92
10:00:12.063724 IP 192.168.2.1 > 192.168.2.2: ICMP redirect 192.168.1.2 to host 192.168.2.1, length 36
10:00:12.063726 IP 92.231.28.130 > 94.231.91.2: ESP(spi=0x03ca1b1f,seq=0x5d), length 92
10:00:12.063893 IP 192.168.2.2 > 192.168.1.2: ICMP echo reply, id 512, seq 27411, length 40
10:00:12.598430 IP 192.168.1.2 > 192.168.2.2: ICMP echo request, id 512, seq 27667, length 40
Код: Выделить всё
# ifconfig gif0 down
# ping 192.168.2.2
PING 192.168.2.2 (192.168.2.2): 56 data bytes
В чём может быть проблема?
заранее признателен за любую помощь
конфиги шлюза FreeBSD 6.4-RELEASE (внутренний IP- 192.168.1.1, внешний IP- 94.231.91.2)
/etc/rc.conf
Код: Выделить всё
ifconfig_lnc1="inet 94.231.91.2 netmask 255.255.255.0"
defaultrouter="94.231.91.1"
ifconfig_lnc0="inet 192.168.1.1 netmask 255.255.255.0"
gif_interfaces="YES"
gif_interfaces="gif0"
cloned_interfaces="gif0"
gifconfig_gif0="94.231.91.2 92.231.28.130"
ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 255.255.255.0"
gateway_enable="YES"
natd_enable="YES"
natd_interface="lnc1"
natd_flags="-f /usr/local/etc/natd.conf"
firewall_enable="YES"
firewall_type="open"
ipsec_enable="YES"
ipsec_program="/usr/local/sbin/setkey"
ipsec_file="/usr/local/etc/ipsec.conf"
racoon_enable="YES"
racoon_flags="-f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.log"
Код: Выделить всё
flush;
spdflush;
spdadd 192.168.1.0/24 192.168.2.0/24 any -P out ipsec
esp/tunnel/94.231.91.2-92.231.28.130/require;
spdadd 192.168.2.0/24 192.168.1.0/24 any -P in ipsec
esp/tunnel/92.231.28.130/require;
Код: Выделить всё
use_sockets yes
same_ports yes
Код: Выделить всё
path include "/usr/local/etc/racoon";
path pre_shared_key "/usr/local/etc/racoon/psk.txt";
padding
{
maximum_length 20; # maximum padding length.
randomize off; # enable randomize length.
strict_check off; # enable strict check.
exclusive_tail off; # extract last one octet.
}
listen
{
isakmp 94.231.91.2 [500];
}
timer
{
# These value can be changed per remote node.
counter 5; # maximum trying count to send.
interval 20 sec; # maximum interval to resend.
persend 1; # the number of packets per send.
# maximum time to wait for completing each phase.
phase1 30 sec;
phase2 15 sec;
}
remote anonymous
{
exchange_mode aggressive,main;
doi ipsec_doi;
situation identity_only;
my_identifier address;
lifetime time 2 min;
initial_contact on;
proposal_check obey;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
}
sainfo anonymous
{
pfs_group 1;
lifetime time 2 min;
encryption_algorithm 3des;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}