
Lev
25.10.2018
16:55:58
Да, никаких ошибок в netstat -sp esp нету.

Andrey
25.10.2018
16:56:23
загрузи if_enc и смотри в tcpdump

Andrey
25.10.2018
17:06:42
Кому там нужно больше нетмапа, айда в карент https://reviews.freebsd.org/D17683

Google


Lev
25.10.2018
17:12:14
загрузи if_enc и смотри в tcpdump
Да по логу видно. Смешное. Что не попадает пакет в ipfw второй раз после декапсуляции если ipsec применялся. Это что-то очень странное, но видно чётко.
Вот без IPsec:
Oct 25 20:08:12 gateway-old kernel: ipfw: 1720 Count ICMP:8.0 10.0.10.1 10.0.10.2 out via gif0
Oct 25 20:08:12 gateway-old kernel: ipfw: 1720 Count P:4 10.0.0.1 10.0.0.2 out via em1
Oct 25 20:08:12 gateway-old kernel: ipfw: 1720 Count P:4 10.0.0.2 10.0.0.1 in via em1
Oct 25 20:08:12 gateway-old kernel: ipfw: 1720 Count ICMP:0.0 10.0.10.2 10.0.10.1 in via gif0
Вот с IPsec:
Oct 25 20:09:58 gateway-old kernel: ipfw: 1720 Count ICMP:8.0 10.0.10.1 10.0.10.2 out via gif0
Oct 25 20:09:58 gateway-old kernel: ipfw: 1720 Count P:50 10.0.0.1 10.0.0.2 out via em1
Oct 25 20:09:58 gateway-old kernel: ipfw: 1720 Count P:50 10.0.0.2 10.0.0.1 in via em1
Нету пакета в файрволле. А в сокете — есть, сам ping ответ видит.
Разница только в наличии tunnel-политики IPsec для протокола ipencap.
Есть ещё вот такое https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=174602


Volodymyr Kostyrko
25.10.2018
17:14:30
Кому шо, у меня wireguard не пашет.

Andrey
25.10.2018
17:15:24
Вон же @blacklion79 вроде заводил

Lev
25.10.2018
17:15:26
Говорит, мол, управляющий сокет not exist внезапно и всё
А ещё через 3 попытки всё работает
А потом снова нет
Глюкалово

Andrey
25.10.2018
17:16:21
ох уж эти хипстеры програмисты :)

Volodymyr Kostyrko
25.10.2018
17:16:41
Какой контрол, я его перезапускаю каждый раз.
Всё вроде правильно, но пакетики не бегают.

Google

Lev
25.10.2018
17:17:04

Artem
25.10.2018
17:17:41

Vladislav
25.10.2018
17:18:43

Andrey
25.10.2018
17:21:17


Lev
25.10.2018
17:21:29
OMG
Да, в логе появляется. Но дальше как-то не de-nat-ится
с такого пакета стрипаются теги все про интерфейсы?
Т.е. не получается, что на нём висит даже после расшифровки, что он in phy0?
Oct 25 20:24:06 gateway-old kernel: ipfw: 1720 Count ICMP:0.0 10.0.10.2 10.0.10.1 in via em1
НЕ СТРИПАЮТСЯ
БЛЯДЬ
Извините
Я не понимаю, как в таких условиях файрволл писать, когда пакет который на самом деле in via gif0 записан как in via em1 :-(
Причём я нашёл закрытый баг про это
не может файрволл пустить пакет для 10.0.10.1 через em1
Причём он на столько via em1, что его даже tcpdump -i gif0 не видит :-(

Andrey
25.10.2018
17:28:18
скорее всего ты опять что-то делаешь неправильно

Lev
25.10.2018
17:28:37
Ну вот, кусочек лога от правила до всех разборок я привёл
ICMP-ответ на туннельный адрес на физическом интерфейсе

Andrey
25.10.2018
17:28:50
если пакет декапсулирован gif'ом, то rcvif будет gif0

Google

Denis 災 nobody
25.10.2018
17:29:25
Закапывай.
прежде чем закопать, нужно сохранить данные так, чтобы можно было вытащить потом

Lev
25.10.2018
17:29:39
если пакет декапсулирован gif'ом, то rcvif будет gif0
Вот лог 1 цикла пинга
Oct 25 20:28:29 gateway-old kernel: ipfw: 1720 Count ICMP:8.0 10.0.10.1 10.0.10.2 out via gif0
Oct 25 20:28:29 gateway-old kernel: ipfw: 1720 Count P:50 10.0.0.1 10.0.0.2 out via em1
Oct 25 20:28:29 gateway-old kernel: ipfw: 1720 Count P:50 10.0.0.2 10.0.0.1 in via em1
Oct 25 20:28:29 gateway-old kernel: ipfw: 1720 Count ICMP:0.0 10.0.10.2 10.0.10.1 in via em1
Запрос пошёл через gif0, был энапсулирован, зашифрован и послан через em1
Ответ пришёл зашифрованным через em1 (правильно), потом расшифрован, ДЕЭНКАПСУЛИРОВАН и принят снова через em1
10.0.0.0/24 — физика, 10.0.10.0/24 — внутри туннеля

Andrey
25.10.2018
17:30:58
значит у тебя туннельная SA, которая декапсулировала, а не gif это сделал

Artem
25.10.2018
17:31:06

Lev
25.10.2018
17:31:12
SA у меня вот такие:

Andrey
25.10.2018
17:31:20
потому что она туннельная

Lev
25.10.2018
17:31:34

Andrey
25.10.2018
17:31:43
нет

Lev
25.10.2018
17:32:20
10.0.0.2[any] 10.0.0.1[any] ip4
in ipsec
esp/transport//require
spid=10 seq=1 pid=3035 scope=global
refcnt=1
10.0.0.1[any] 10.0.0.2[any] ip4
out ipsec
esp/transport//require
spid=9 seq=0 pid=3035 scope=global
refcnt=1

Andrey
25.10.2018
17:32:37
это не SA

Denis 災 nobody
25.10.2018
17:32:44
как, но очень долго

Artem
25.10.2018
17:34:06
А что тебе надо в итоге то? Ось поставить и данные оставить? Kvm есть?

Lev
25.10.2018
17:34:08
это не SA
10.0.0.2 10.0.0.1
esp mode=any spi=65538(0x00010002) reqid=0(0x00000000)
E: null
seq=0x00000000 replay=0 flags=0x00000040 state=mature
created: Oct 25 20:09:47 2018 current: Oct 25 20:30:53 2018
diff: 1266(s) hard: 0(s) soft: 0(s)
last: Oct 25 20:09:48 2018 hard: 0(s) soft: 0(s)
current: 1512(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 20 hard: 0 soft: 0
sadb_seq=1 pid=3033 refcnt=1
10.0.0.1 10.0.0.2
esp mode=any spi=65537(0x00010001) reqid=0(0x00000000)
E: null
seq=0x00000014 replay=0 flags=0x00000040 state=mature
created: Oct 25 20:09:47 2018 current: Oct 25 20:30:53 2018
diff: 1266(s) hard: 0(s) soft: 0(s)
last: Oct 25 20:09:48 2018 hard: 0(s) soft: 0(s)
current: 2152(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 20 hard: 0 soft: 0
sadb_seq=0 pid=3033 refcnt=1
По идее, мне вообще нужны транспортные SA, не туннельные, в данном случае.

Denis 災 nobody
25.10.2018
17:36:11

Google

Denis 災 nobody
25.10.2018
17:36:33
ипми+квм е

Artem
25.10.2018
17:36:42

Andrey
25.10.2018
17:36:45
ну у тебя mode=any, т.е.
"
334 if (prot == IPPROTO_IPIP &&
335 saidx->mode != IPSEC_MODE_TRANSPORT) {
336 if (m->m_pkthdr.len - skip < sizeof(struct ip)) {
337 IPSEC_ISTAT(sproto, hdrops);
338 error = EINVAL;
339 goto bad;
340 }
341 /* enc0: strip outer IPv4 header */
342 m_striphdr(m, 0, ip->ip_hl << 2);
343 }
"
если ты скажешь при добавлении SA, -m transport

Lev
25.10.2018
17:37:42

Andrey
25.10.2018
17:37:45
то IPsec не будет стрипать
и тогда ipencap пакет попадёт в gif

Lev
25.10.2018
17:39:33
Умничает IPsec! :-)
Да, так заработало
Но я начинаю понимать тех, кто написал и тех, кто полюбил WireGuard
Я тебе должен не одно пиво. или что ты предпочитаешь.

Andrey
25.10.2018
17:40:55
:)

Lev
25.10.2018
17:41:19
Ты же в Москве? :)

Andrey
25.10.2018
17:41:54
не, наверно где-то через месяц буду там на недельку

Lev
25.10.2018
17:42:32
Увы, я не буду, я-то тоже не в Москве. А обычно ты где?

Andrey
25.10.2018
17:42:45
Киров

Artem
25.10.2018
17:43:00
ужасное место, простите.
окруженное лагерями)

Lev
25.10.2018
17:43:43
Киров
Который в Хибинах? Ещё один повод съездить. Но летом, летом. Простите. Горные лыжи не для меня, увы.

Google

Lev
25.10.2018
17:44:14
Или это Вятка, блин. Я всё время путаю.
Кто Киров а кто Кировск

Andrey
25.10.2018
17:44:23
не, гор у нас нет, по крайней мере с которых на лыжах ездить можно)

Lev
25.10.2018
17:44:43
Да, Вятка.

Andrey
25.10.2018
17:44:48
Киров-Вятка-Хлынов

Lev
25.10.2018
17:44:57
У меня дед был из тех краёв. В общем, тоже повод съездить! :-)
По идее, там даже по-прежнему где-то в лесу живут мои дальние (очень уже дальние) родственники.
В лесу — там лесхоз всегда был. Но я там никогда не был, только мама рассказывала как её туда два раза на лето отправляли

Andrey
25.10.2018
17:46:34
:)
да, так мы и живём тут, в лесу, окружённые лагерями
делаем себе потихоньку С400

Andrey
25.10.2018
17:48:22
Р-романтика :)
https://twitter.com/pernila/status/1055546024297725952

MK
25.10.2018
20:05:27

Andrey
25.10.2018
20:06:32

MK
25.10.2018
20:11:40
Да, да. Помню этот старый анекдот :-)

Lev
25.10.2018
21:44:18
используя if_enc ты можешь занатить пакет во время ipsec обработки
Ну, кстати, не могу. Потому что если у меня SAP'ы и SA'шки на после-nat-адреса, то нифига в if_enc не попадает, потому что он не находит SA по трафику до nat (что не удивительно). Т.е. в if_enc вообще не попадает трафик, который интересен.
А вот можно ли сделать SA'шки на сочетание внутреннего адреса и внешнего я не очень понимаю, потому что на втором-то конце адреса другие… В общем, похоже, не может NAT-бокс накрутить шифрование в транспортном режиме без всякого туннелирования вообще.

Andrey
25.10.2018
21:49:52
я не понял объяснение твоё. Надо понимать как действует if_enc и когда ты можешь вызвать pfil хук из него. Исходящий трафик попадает в ipsec на основании матчинга политики, а входящий на основании SPI в SA и dst адреса пакета. От этого и надо думать как и когда натить и какие политики и SA делать.

Lev
25.10.2018
22:28:01