Проблема: перестают ходить пакеты внутри туннеля (ipsec)
Добавлено: 2012-07-27 5:48:47
Всем здравствуйте!
Хочу описать проблему, с которой столкнулся администрируя VPN-туннели между шлюзом с FreeBSD и "файрволами" D-Link DFL-210. В общей сложности сейчас поднято более 30 каналов. Более года все шло хорошо, но в последнее время я начал замечать что периодически внутри какого-нибудь канала перестает ходить трафик. При этом по ssh на эти точки я захожу, даже могу их перезагрузить. Остальные каналы при этом работают. Проблема решается ТОЛЬКО перезапуском ipsec или racoon на FreeBSD. То есть перезагрузка роутера не помогает. Версия фрихи была 8.0, сделал бинарное обновление до 8.3, обновил все порты (в том числе и ipsec-tools), но проблема не исчезла - также периодически какие-то каналы "подвисают". После проведенного исследования я выяснил, что в базе SA на фрихе появляются дублирующиеся записи для одного и того же хоста (X.X.X.X - мой шлюз):
Моё внимание привлеко отсутствие записей last для двух из них. Потом я пошел дальше и посмотрел вывод tcpdump:
Здесь я вижу, что идут какие-то запросы от удаленного узла, касающиеся второй фазы согласования, и еще идут зашифрованные пакеты и ОТВЕТЫ на них со стороны фрихи! Посмотрев в локалку, я увидел, что это пинги. На д-линках настроено keep-alive и они каждые 10 секунд пингуют мой хост. Но самое главное, что хост им отвечает! При этом "вручную" ни с одной стороны пинги не идут.
Отсюда я делаю вывод, что проблема заключается как раз в наличии этих дублирующих SA-записей. Видимо, одна из них "рабочая", а остальные нет. Но по какой причине образуются лишние я никак не пойму. В логах racoon ничего подозрительного нет. На всякий случай привожу свой конфиг:
Настройки lifetime одинаковы на всех устройствах. Единственное, в логах racoon появляются сообщения типа , но на установку канала это не влияет. При старой прошивке роутера (двухлетней давности) таких сообщений не было. Но перепрошивал устройства я достаточно давно (около года назад), после этого все работало исправно.
В общем, прошу помощи
Хочу описать проблему, с которой столкнулся администрируя VPN-туннели между шлюзом с FreeBSD и "файрволами" D-Link DFL-210. В общей сложности сейчас поднято более 30 каналов. Более года все шло хорошо, но в последнее время я начал замечать что периодически внутри какого-нибудь канала перестает ходить трафик. При этом по ssh на эти точки я захожу, даже могу их перезагрузить. Остальные каналы при этом работают. Проблема решается ТОЛЬКО перезапуском ipsec или racoon на FreeBSD. То есть перезагрузка роутера не помогает. Версия фрихи была 8.0, сделал бинарное обновление до 8.3, обновил все порты (в том числе и ipsec-tools), но проблема не исчезла - также периодически какие-то каналы "подвисают". После проведенного исследования я выяснил, что в базе SA на фрихе появляются дублирующиеся записи для одного и того же хоста (X.X.X.X - мой шлюз):
Код: Выделить всё
FREE# setkey -D
. . .
X.X.X.X Y.Y.Y.Y
esp mode=tunnel spi=2746933399(0xa3bae097) reqid=0(0x00000000)
E: rijndael-cbc f360e41c 3b84d37b 41aea87e 55a7476c
A: hmac-md5 a00a284d 9867001d d861b09d 830cc602
seq=0x00000000 replay=4 flags=0x00000000 state=mature
created: Jul 27 05:43:57 2012 current: Jul 27 08:58:35 2012
diff: 11678(s) hard: 43200(s) soft: 34560(s)
[b]last:[/b] hard: 0(s) soft: 0(s)
current: 0(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 0 hard: 0 soft: 0
sadb_seq=23 pid=8702 refcnt=1
X.X.X.X Y.Y.Y.Y
esp mode=tunnel spi=4264316708(0xfe2c4f24) reqid=0(0x00000000)
E: rijndael-cbc 220fa7a8 9be7a061 b10aa17c bccc91d3
A: hmac-md5 286993c5 0a477e63 44790fa2 d22c1860
seq=0x00000000 replay=4 flags=0x00000000 state=mature
created: Jul 27 04:40:47 2012 current: Jul 27 08:58:35 2012
diff: 15468(s) hard: 43200(s) soft: 34560(s)
[b]last:[/b] hard: 0(s) soft: 0(s)
current: 0(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 0 hard: 0 soft: 0
sadb_seq=22 pid=8702 refcnt=1
X.X.X.X Y.Y.Y.Y
esp mode=tunnel spi=4278676248(0xff076b18) reqid=0(0x00000000)
E: rijndael-cbc 7eaf53c0 9be29fd8 aa6808a7 909c6ac8
A: hmac-md5 05f10c42 eb9bb445 91647794 6edec657
seq=0x000004e9 replay=4 flags=0x00000000 state=mature
created: Jul 27 04:39:56 2012 current: Jul 27 08:58:35 2012
diff: 15519(s) hard: 43200(s) soft: 34560(s)
[b]last: Jul 27 08:58:27 2012[/b] hard: 0(s) soft: 0(s)
current: 112856(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 1257 hard: 0 soft: 0
sadb_seq=21 pid=8702 refcnt=2
Y.Y.Y.Y X.X.X.X
esp mode=tunnel spi=223402791(0x0d50db27) reqid=0(0x00000000)
E: rijndael-cbc 7e03c3ca 4fe8e1a5 4b8bb9ef aaba3273
A: hmac-md5 fce3a0dd b95da09c 8afe136a 07f5b4bd
seq=0x000004a9 replay=4 flags=0x00000000 state=mature
created: Jul 27 05:43:57 2012 current: Jul 27 08:58:35 2012
diff: 11678(s) hard: 43200(s) soft: 34560(s)
last: Jul 27 08:58:27 2012 hard: 0(s) soft: 0(s)
current: 57660(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 1193 hard: 0 soft: 0
sadb_seq=19 pid=8702 refcnt=1
Y.Y.Y.Y X.X.X.X
esp mode=tunnel spi=181776993(0x0ad5b261) reqid=0(0x00000000)
E: rijndael-cbc c78472c3 22ceb212 66b40a2f ebf36d56
A: hmac-md5 107568f4 13ff13fc b3992624 e5c3fea1
seq=0x0000016c replay=4 flags=0x00000000 state=mature
created: Jul 27 04:40:47 2012 current: Jul 27 08:58:35 2012
diff: 15468(s) hard: 43200(s) soft: 34560(s)
last: Jul 27 05:41:17 2012 hard: 0(s) soft: 0(s)
current: 17472(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 364 hard: 0 soft: 0
sadb_seq=18 pid=8702 refcnt=1
Y.Y.Y.Y X.X.X.X
esp mode=tunnel spi=182258880(0x0add0cc0) reqid=0(0x00000000)
E: rijndael-cbc 550e25fb 4e2b7bb3 27b3b01b fd97e03c
A: hmac-md5 ae62da0c ebed5b61 79e88ed0 baa5cf0c
seq=0x00000008 replay=4 flags=0x00000000 state=mature
created: Jul 27 04:39:56 2012 current: Jul 27 08:58:35 2012
diff: 15519(s) hard: 43200(s) soft: 34560(s)
last: Jul 27 04:40:37 2012 hard: 0(s) soft: 0(s)
current: 384(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 8 hard: 0 soft: 0
sadb_seq=17 pid=8702 refcnt=1
. . .
Код: Выделить всё
FREE# tcpdump -s0 -vvvv -ni inet1 host Y.Y.Y.Y
tcpdump: listening on inet1, link-type EN10MB (Ethernet), capture size 65535 bytes
10:20:48.135083 IP (tos 0x0, ttl 251, id 473, offset 0, flags [none], proto UDP (17), length 96)
Y.Y.Y.Y.500 > X.X.X.X.500: [udp sum ok] isakmp 1.0 msgid cookie ->: phase 2/others ? inf[E]: [encrypted hash]
10:20:57.754864 IP (tos 0x0, ttl 236, id 508, offset 0, flags [none], proto ESP (50), length 88)
Y.Y.Y.Y > X.X.X.X: ESP(spi=0x0d50db27,seq=0x699), length 68
10:20:57.755052 IP (tos 0x0, ttl 64, id 36118, offset 0, flags [none], proto ESP (50), length 88)
X.X.X.X > Y.Y.Y.Y: ESP(spi=0xff076b18,seq=0x702), length 68
10:21:07.753979 IP (tos 0x0, ttl 236, id 516, offset 0, flags [none], proto ESP (50), length 88)
Y.Y.Y.Y > X.X.X.X: ESP(spi=0x0d50db27,seq=0x69a), length 68
10:21:07.754341 IP (tos 0x0, ttl 64, id 36187, offset 0, flags [none], proto ESP (50), length 88)
X.X.X.X > Y.Y.Y.Y: ESP(spi=0xff076b18,seq=0x703), length 68
10:21:08.135586 IP (tos 0x0, ttl 251, id 166, offset 0, flags [none], proto UDP (17), length 96)
Y.Y.Y.Y.500 > X.X.X.X.500: [udp sum ok] isakmp 1.0 msgid cookie ->: phase 2/others ? inf[E]: [encrypted hash]
10:21:17.754507 IP (tos 0x0, ttl 236, id 226, offset 0, flags [none], proto ESP (50), length 88)
Y.Y.Y.Y > X.X.X.X: ESP(spi=0x0d50db27,seq=0x69b), length 68
10:21:17.754710 IP (tos 0x0, ttl 64, id 36240, offset 0, flags [none], proto ESP (50), length 88)
X.X.X.X > Y.Y.Y.Y: ESP(spi=0xff076b18,seq=0x704), length 68
. . .
Код: Выделить всё
FREE# tcpdump -s0 -vvvv -ni local host B.B.B.B
tcpdump: listening on local, link-type EN10MB (Ethernet), capture size 65535 bytes
10:33:17.775025 IP (tos 0x0, ttl 254, id 11432, offset 0, flags [none], proto ICMP (1), length 28)
B.B.B.B > A.A.A.A: ICMP echo request, id 42653, seq 16495, length 8
10:33:17.775305 IP (tos 0x0, ttl 64, id 4362, offset 0, flags [none], proto ICMP (1), length 28)
A.A.A.A > B.B.B.B: ICMP echo reply, id 42653, seq 16495, length 8
10:33:27.775079 IP (tos 0x0, ttl 254, id 60835, offset 0, flags [none], proto ICMP (1), length 28)
B.B.B.B > A.A.A.A: ICMP echo request, id 42653, seq 16496, length 8
10:33:27.775363 IP (tos 0x0, ttl 64, id 4474, offset 0, flags [none], proto ICMP (1), length 28)
A.A.A.A > B.B.B.B: ICMP echo reply, id 42653, seq 16496, length 8
. . .
Код: Выделить всё
FREE# cat /usr/local/etc/racoon/racoon.conf
path pre_shared_key "/usr/local/etc/racoon/psk.txt" ;
log notify;
padding
{
maximum_length 20; # maximum padding length.
randomize off; # enable randomize length.
strict_check off; # enable strict check.
exclusive_tail off; # exctract last one octet.
}
listen
{
isakmp X1.X1.X1.X1 [500];
isakmp X2.X2.X2.X2 [500];
isakmp X3.X3.X3.X3 [500];
}
timer
{
counter 5;
interval 20 sec;
persend 1;
phase1 60 sec;
phase2 30 sec;
}
remote anonymous
{
exchange_mode main;
lifetime time 24 hour ;
doi ipsec_doi;
situation identity_only;
nonce_size 16;
initial_contact on;
proposal {
encryption_algorithm 3des;
hash_algorithm md5;
authentication_method pre_shared_key ;
dh_group 2;
}
proposal_check obey;
}
sainfo anonymous
{
pfs_group 2;
lifetime time 12 hour ;
encryption_algorithm 3des, cast128, blowfish 448, des, rijndael ;
authentication_algorithm hmac_sha1, hmac_md5 ;
compression_algorithm deflate ;
}
Код: Выделить всё
WARNING: trns_id mismatched: my:3DES peer:AES
В общем, прошу помощи