2

Я заметил, что IP-пересылка, по-видимому, включена в WSL (Windows 10pro 1709), согласно sysctl. Я надеюсь, что смогу использовать это для создания программного маршрутизатора на WSL - для игры с трафиком виртуальной машины Hyper-V на одном физическом хосте. Виртуальная машина и хост могут взаимодействовать через общую подсеть /24 ipv4.

В идеале я хотел бы использовать WSL для настройки правил, подобных iptables, или иметь какую-то программу программного маршрутизатора с использованием сокетов RAW, которые могут переписывать трафик.

# on the WSL bash
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

Мой хост Windows и виртуальная машина находятся в 192.168.4.Х. 192.168.4.215 - хост. 192.168.4.228 - это ВМ.

Я добавил правило в брандмауэр Windows, чтобы разрешить каждый входящий порт TCP в этой подсети, и проверил подключение, передав веб-страницы, обслуживаемые хостом WSL и загружаемые виртуальной машиной. (например, запустил python -m SimpleHTTPServer в wsl и использовал curl http://192.168.2.215 в виртуальной машине)

Я добавил хост Windows в качестве шлюза по умолчанию внутри виртуальной машины:

# route add default gw 192.168.4.215
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.4.215   0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

Но мои TCP-соединения, инициированные на виртуальной машине , не маршрутизируются Windows (например, curl http://<publicip> .). Не могу подключиться

Что еще мне нужно разблокировать в Windows?

редактировать

Я несколько разочаровался в этом. Поскольку все, что я хотел сделать с трафиком виртуальной машины, - это трансформировать его через VPN-туннель хоста, я решил использовать специальный интерфейс NAT с powershell:

https://serverfault.com/questions/911578/windows-10-pro-as-a-nat-between-two-interfaces

0