Перенаправление пакетов в Windows
в настоящее время мы запускаем windows на всех наших машинах из-за ограничения программного обеспечения.
однако в этом случае нам нужно перенаправить определенные пакеты, которые входят в IP и порт, на другой порт (тот же IP). У нас есть программное обеспечение, прослушивающее "Прокси-порт".
это достижимо с IPTables на linux, делая что-то подобное:
iptables -t nat -I PREROUTING -p udp -d <DSTIP> --dport <DSTPORT> -m u32 --u32 '0>>22&0x3C@8=0xFFFFFFFF && 0>>22&0x3C@12=0x54536F75 && 0>>22&0x3C@16=0x72636520 && 0>>22&0x3C@20=0x456E6769 && 0>>22&0x3C@24=0x6E652051 && 0>>22&0x3C@28=0x75657279' -j REDIRECT --to-port <REDIRECT PORT>
это отлично работает в linux и перенаправляет определенные пакеты на наше прокси-программное обеспечение, однако это вообще можно ли сделать что-то подобное на windows без необходимости получать выделенную машину перед нашими машинами windows?
Я думал написать что-то с pcap.net но я предполагаю, что это будет прямое чтение из NIC, а не windows?
2 ответов
С MSDN:
команды netsh - это утилита сценариев командной строки, которая позволяет вам локально или удаленно отображать или изменять сетевую конфигурацию компьютер, который в настоящее время работает.
вы можете перенаправить соединения, поступающие на любой порт, на другой локальный (или удаленный) порт с помощью команды:
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
также, как указано в это так пост, команды netsh - это хорошая замена для iptabes на Windows.
команда
netsh interface portproxy ...
проксирование портов, но не пересылка пакетов. Главное отличие -
- performace намного хуже, чем iptables (f.e. см.https://plus.google.com / +OlafMonien/посты/fsjUjropYeR)
- исходный IP-адрес изменяется на localhost (127.0.0.1 или ::1 зависит от версии IP), вы теряете исходный IP-адрес источника запроса.
мы использовали этот метод для переадресации портов, но после этого выводы нам пришлось использовать дополнительные правила сетевого брандмауэра, чтобы избежать использование команды netsh.