Использую Network 9.0.114
USG 4.4.57
UCKP 4.1.11
Пытаюсь настроить VPN-соединение типа "сайт-в-сайт", но постоянно получаю ошибки NO_PROPOSAL_CHOSEN в IKE, хотя мои настройки, кажется, совпадают с настройками удалённой стороны. При более детальном изучении обнаружил, что большинство моих ручных настроек VPN в консольном интерфейсе игнорируются, и моя сторона VPN предлагает неверные алгоритмы. Изучив файл /etc/ipsec.conf на USG, выяснил, что эти поля в интерфейсе уважаются:
* Версия обмена ключами
* Совершенная прямая секретность (PFS)
А эти поля, похоже, игнорируются:
* Шифрование
* Хэш
* DH Group
* Срок действия
* Локальный идентификатор аутентификации
* Удалённый идентификатор аутентификации
Вот что я вижу в /etc/ipsec.conf:
```
# generated by /opt/vyatta/sbin/vpn-config.pl
config setup
conn %default
keyexchange=ikev1
conn peer-YYYY-tunnel-vti
left=XXXX
right=YYYY
leftsubnet=0.0.0.0/0
rightsubnet=0.0.0.0/0
ike=aes256-sha1-modp2048,aes128-sha1-modp2048!
keyexchange=ikev2
reauth=no
ikelifetime=28800s
esp=aes256-sha1-modp2048,aes128-sha1-modp2048!
keylife=3600s
rekeymargin=540s
type=tunnel
compress=no
authby=secret
mark=9437186
auto=route
keyingtries=%forever
#conn peer-XXXX-tunnel-vti
```
Если переключиться на IKEv1, то единственное изменение – "keyexchange=ikev1". Если отключить PFS, то единственное изменение – "esp=aes256-sha1,aes128-sha1!". Если переключиться на "auto" вместо "manual", то она переключается на IKEv1 и удаляет строку "reauth=no", но других изменений не происходит.
Неважно, какие другие поля я использую, я не могу заставить свою сторону VPN согласовать правильный алгоритм (например, modp4096). Кажется, она зафиксирована на aes256-sha1-modp2048,aes128-sha1-modp2048.
Я подтвердил это с помощью tcpdump (вы можете видеть, что другая сторона предлагает aes256-sha1-modp4096):
```
me@USG:~ $ tcpdump -i eth0 udp port 500 or port 4500 -n -v
20:45:11.696979 IP (tos 0x0, ttl 54, id 23454, offset 0, flags [DF], proto UDP (17), length 748)
YYYY.500 > XXXX.500: isakmp 2.0 msgid 00000000: parent_sa ikev2_init[I]:
(sa: len=44
(p: #1 protoid=isakmp transform=4 len=44
(t: #1 type=encr id=aes (type=keylen value=0100))
(t: #2 type=integ id=hmac-sha )
(t: #3 type=prf id=hmac-sha )
(t: #4 type=dh id=modp4096 )))
(v2ke: len=512 group=modp4096)
(nonce: len=32 data=(ZZZ...ZZZ))
(n: prot_id=#0 type=16388(nat_detection_source_ip))
(n: prot_id=#0 type=16389(nat_detection_destination_ip))
(n: prot_id=#0 type=16430(status))
(n: prot_id=#0 type=16431(status))
(n: prot_id=#0 type=16406(status))
20:45:11.701990 IP (tos 0x0, ttl 64, id 8926, offset 0, flags [DF], proto UDP (17), length 64)
XXXX.500 > YYYY.500: isakmp 2.0 msgid 00000000: parent_sa ikev2_init[R]:
(n: prot_id=#0 type=14(no_protocol_chosen))
```
Кроме того, я вижу четыре другие проблемы:
* Поддерживаемые алгоритмы устарели, и большинство поддерживаемых групп DH небезопасны или слабы. Мне нужны sha2-512 и ed25519 (группа DH 31).
* Можно ли добавить ключевые слова в раскрывающийся список, чтобы мне не приходилось каждый раз консультироваться со справочной таблицей групп DH?
* Кажется, нет способа увидеть в интерфейсе, работают ли VPN-соединения типа "сайт-в-сайт" или нет, или какое их состояние. Нет никаких доказательств на панели управления или где-либо еще, что VPN вообще настроен.
* Вообще не регистрируются события VPN в интерфейсе/консоли. Я ожидал бы увидеть некоторые из этих неудач согласования протоколов зарегистрированными где-то.
USG 4.4.57
UCKP 4.1.11
Пытаюсь настроить VPN-соединение типа "сайт-в-сайт", но постоянно получаю ошибки NO_PROPOSAL_CHOSEN в IKE, хотя мои настройки, кажется, совпадают с настройками удалённой стороны. При более детальном изучении обнаружил, что большинство моих ручных настроек VPN в консольном интерфейсе игнорируются, и моя сторона VPN предлагает неверные алгоритмы. Изучив файл /etc/ipsec.conf на USG, выяснил, что эти поля в интерфейсе уважаются:
* Версия обмена ключами
* Совершенная прямая секретность (PFS)
А эти поля, похоже, игнорируются:
* Шифрование
* Хэш
* DH Group
* Срок действия
* Локальный идентификатор аутентификации
* Удалённый идентификатор аутентификации
Вот что я вижу в /etc/ipsec.conf:
```
# generated by /opt/vyatta/sbin/vpn-config.pl
config setup
conn %default
keyexchange=ikev1
conn peer-YYYY-tunnel-vti
left=XXXX
right=YYYY
leftsubnet=0.0.0.0/0
rightsubnet=0.0.0.0/0
ike=aes256-sha1-modp2048,aes128-sha1-modp2048!
keyexchange=ikev2
reauth=no
ikelifetime=28800s
esp=aes256-sha1-modp2048,aes128-sha1-modp2048!
keylife=3600s
rekeymargin=540s
type=tunnel
compress=no
authby=secret
mark=9437186
auto=route
keyingtries=%forever
#conn peer-XXXX-tunnel-vti
```
Если переключиться на IKEv1, то единственное изменение – "keyexchange=ikev1". Если отключить PFS, то единственное изменение – "esp=aes256-sha1,aes128-sha1!". Если переключиться на "auto" вместо "manual", то она переключается на IKEv1 и удаляет строку "reauth=no", но других изменений не происходит.
Неважно, какие другие поля я использую, я не могу заставить свою сторону VPN согласовать правильный алгоритм (например, modp4096). Кажется, она зафиксирована на aes256-sha1-modp2048,aes128-sha1-modp2048.
Я подтвердил это с помощью tcpdump (вы можете видеть, что другая сторона предлагает aes256-sha1-modp4096):
```
me@USG:~ $ tcpdump -i eth0 udp port 500 or port 4500 -n -v
20:45:11.696979 IP (tos 0x0, ttl 54, id 23454, offset 0, flags [DF], proto UDP (17), length 748)
YYYY.500 > XXXX.500: isakmp 2.0 msgid 00000000: parent_sa ikev2_init[I]:
(sa: len=44
(p: #1 protoid=isakmp transform=4 len=44
(t: #1 type=encr id=aes (type=keylen value=0100))
(t: #2 type=integ id=hmac-sha )
(t: #3 type=prf id=hmac-sha )
(t: #4 type=dh id=modp4096 )))
(v2ke: len=512 group=modp4096)
(nonce: len=32 data=(ZZZ...ZZZ))
(n: prot_id=#0 type=16388(nat_detection_source_ip))
(n: prot_id=#0 type=16389(nat_detection_destination_ip))
(n: prot_id=#0 type=16430(status))
(n: prot_id=#0 type=16431(status))
(n: prot_id=#0 type=16406(status))
20:45:11.701990 IP (tos 0x0, ttl 64, id 8926, offset 0, flags [DF], proto UDP (17), length 64)
XXXX.500 > YYYY.500: isakmp 2.0 msgid 00000000: parent_sa ikev2_init[R]:
(n: prot_id=#0 type=14(no_protocol_chosen))
```
Кроме того, я вижу четыре другие проблемы:
* Поддерживаемые алгоритмы устарели, и большинство поддерживаемых групп DH небезопасны или слабы. Мне нужны sha2-512 и ed25519 (группа DH 31).
* Можно ли добавить ключевые слова в раскрывающийся список, чтобы мне не приходилось каждый раз консультироваться со справочной таблицей групп DH?
* Кажется, нет способа увидеть в интерфейсе, работают ли VPN-соединения типа "сайт-в-сайт" или нет, или какое их состояние. Нет никаких доказательств на панели управления или где-либо еще, что VPN вообще настроен.
* Вообще не регистрируются события VPN в интерфейсе/консоли. Я ожидал бы увидеть некоторые из этих неудач согласования протоколов зарегистрированными где-то.
