LINUX.ORG.RU
ФорумAdmin

IPsec, strongswan, клиент дублирует пакеты в обход туннеля.

 ,


1

2

Схема такая. Есть виртуалка есть хост, между ними виртуальный адаптер, адреса соответственно 192.168.57.2 -виртуалка, 192.168.57.1-хост.

Пытаюсь осовоить IPsec, ковыряюсь со strongswan.

Проблема такая посылаю пинг с хоста на виртуалку, виртуалка отвечает через туннель и повторно отвечает в открытую, посылаю пинг с виртуалки на хост, виртуалка шлет один запрос в открытую один через туннель.

Вот так это выглядит в wireshark

с виртуалки на хост

с хоста на виртуалку

ping с виртуалки на хост:

 ping -I enp0s9 192.168.57.1 -c 2
PING 192.168.57.1 (192.168.57.1) from 192.168.57.2 enp0s9: 56(84) bytes of data.
64 bytes from 192.168.57.1: icmp_seq=1 ttl=64 time=0.241 ms
64 bytes from 192.168.57.1: icmp_seq=2 ttl=64 time=0.294 ms

--- 192.168.57.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1013ms
rtt min/avg/max/mdev = 0.241/0.267/0.294/0.031 

ping c хоста на виртуалку:

 ping 192.168.57.2 -c 2
PING 192.168.57.2 (192.168.57.2) 56(84) bytes of data.
64 bytes from 192.168.57.2: icmp_seq=1 ttl=64 time=0.451 ms
64 bytes from 192.168.57.2: icmp_seq=2 ttl=64 time=0.359 ms

--- 192.168.57.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1019ms
rtt min/avg/max/mdev = 0.359/0.405/0.451/0.046 ms

Конфигурация swanctl на хосте:

cat swanctl.conf 
#ike_v1_psk_connection_cld simple test configuration for ipsec client/server
# main configuration section
connections {
	ike-v1-psk-connection {
		version = 1
		remote_addrs = 192.168.57.2,0.0.0.0/0
		local-1 {
			auth = psk
			id = "server"
		}
		remote-1 {
			auth = psk
		}

		children {
			ike-server {
				local_ts = 192.168.57.0/24
				remote_ts = 192.168.57.0/24
				mode = tunnel
				# defalt start_action is none, that's more \
				# suitable for server
			}
		}
	}
}

# secrets section
secrets {
	ike_pks_mari {
		id-0 = "server"
		id-2 = "mari-el"
		secret = "super_pass"
	}
	ike_psk_server {
		id = "server1"
		secret = "secrete ingredient"
	}
}

Конфигурация swanctl на виртуалке:

 cat swanctl.conf 
# client ipsec configuration 
# main configuration section

connections {
	ike-v1-client-conf {
		version = 1
		remote_addrs = 192.168.57.1		# remote address for server
		
		local-1 {
			auth = psk
			id = "mari-el"
		}
		remote-1 {
			auth = psk
		}
		
		children {
			ike-1{
				remote_ts = 192.168.57.0/24	// all trafic for server side
				mode = tunnel
				start_action = start
			}
		}
	}

}

#secrets section
secrets {
	ike-1 {
		id-1 = "mari-el"
		secret = "super_pass"
	}
}

В обоих случаях используется strongswan 5.8.1 собранный из исходников по инструкции с гитхаба.



Последнее исправление: Notevill (всего исправлений: 2)

Дополнительно хочу добавить. Такое замечено только при работае в режиме туннеля, если установить транспортный режим

mode = transport 
, то все пакеты идут через туннель.

Notevill
() автор топика

Почему вы думаете, что что-то передаётся без шифрования? Если вы запускали wireshark/tcpdump на хостах, на которых и происходит подключение IPsec, то они так трафик и захватывают. Это особенность реализации IPsec в Linux.

https://wiki.strongswan.org/projects/strongswan/wiki/FAQ#Capturing-outbound-p...

https://wiki.strongswan.org/projects/strongswan/wiki/CorrectTrafficDump

ValdikSS ★★★★★
()
Ответ на: комментарий от ValdikSS

Ну если я все правильно понял, то wireshark у меня захватывает как шифрованный, так и уже расшифрованный входящий трафик. Не понятно, правда, почему в транспортном режиме так же не работает?

Notevill
() автор топика
Ответ на: комментарий от Notevill

почему в транспортном режиме так же не работает?

видимо потому что в туннельном режиме происходит инкапсуляция и когда пакет прилетает то его нужно сначала «распаковать», а затем отправить дальше, а в транспортном режиме шифруется только данные пакета, соответственно пакет можно отправлять дальше не «распаковывая» его.

Sherman
()
Последнее исправление: Sherman (всего исправлений: 1)
Ответ на: комментарий от Sherman

Спасибо. Я об этом сам додумался, просто поздно.)))

Notevill
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.