Моя идея теперь состоит в том, чтобы использовать реализацию Wireguard ядра Linux и протестировать локально на том же хосте. Моя собственная реализация основана на scapy, поэтому я могу просто прослушивать созданный мной виртуальный интерфейс.
Код: Выделить всё
virt_iface_wg:
mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:54:00:01:80:01 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.101/24 scope global br-vm80-1
valid_lft forever preferred_lft forever
Код: Выделить всё
[Interface]
Address = 10.0.0.100/32
ListenPort = 42641
PrivateKey = ######
[Peer]
PublicKey = ######
PresharedKey = #####
AllowedIPs = 10.0.0.200/32
Endpoint = 192.168.100.100:12913
Код: Выделить всё
WG0:
mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.0.0.100/32 scope global VPN_WG
valid_lft forever preferred_lft forever
но теперь я хочу отправить пинг на IP 10.0.0.200 через wg0, чтобы он поступал в зашифрованном виде на virt_iface_wg, и я мог прочитать его там через scapy.
когда я пингую 10.0.0.200, я вижу arp-запросы на virt_iface_wg и отвечаю на это соответствующим образом, и Я вижу простой пакет icmp на wg0, но инкапсулированный пакет Wireguard не найден. При включенной отладке я даже вижу в dmesg: «Отправка инициирования рукопожатия на узел 13 (192.168.100.100:12913)».
также есть созданный маршрут:
Ссылка на область действия 10.0.0.200 dev wg0
Есть ли очевидные ошибки? Буду очень признателен за помощь, не могу заставить это работать

Подробнее здесь: https://stackoverflow.com/questions/791 ... -same-host