Как использовать Windows WSL для настройки маршрутизации? Это возможно?

918
init_js

Я заметил, что 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.X. 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

2

0 ответов на вопрос