iptables -I ПЕРЕНАПРАВИТЬ -s 192.168.1.100 -p udp --dport 27000:27200 --match string --algo kmp --string 76561198923445525 -j ПРИНЯТЬ
Мне нужен просто аналог этой работающей команды в ОС Windows, например powershell или....cmd...что угодно.
По сути, у нас есть пользователь с ID, подключающийся к серверу. С помощью команды мы ПРИНИМАЕМ указанную строку ID на портах 27000:27200 в пределах локального сервера 192.168.1.100. Как заставить это работать без iptables?
решение1
Это будет довольно близко. Брандмауэр Windows допускает аутентифицированные соединения (сопоставление пользователей), но это может не сработать для вас, в зависимости от того, какой клиент подключается и поддерживает ли он это:
New-NetFirewallRule -DisplayName My-Firewall-Rule `
-Direction Inbound `
-Enabled True `
-Action Allow `
-Protocol UDP `
-LocalPort 27000 `
-LocalAddress 192.168.1.100 `
-Authentication Required `
-RemoteUser "D:(A;;CC;;;$UserSID)"
Замените $UserSID
фактическим SID пользователя для аутентификации.
Это не совсем то же самое, и я не верю, что Windows действительно имеет ту же функциональность, что и цепочка FORWARD в iptables без некоторых функций маршрутизации.
# Basic maintenance commands:
Get-NetFirewallRule -DisplayName My-Firewall-Rule | format-list * ## show all properties
Remove-NetFirewallRule -DisplayName My-Firewall-Rule ## Delete your rule
# Enable detailed logging:
Set-NetFirewallProfile -LogAllowed True -LogFileName %SystemRoot%\System32\LogFiles\Firewall\pfirewall.log
# Watch log:
Get-Content -Tail 10 -Wait "C:\windows\System32\LogFiles\Firewall\pfirewall.log"
Для всего остального, проверьте примеры и документацию в Get-Help New-NetFirewallRule -Full
иливеб-документы. Подумайте о том, чтобы добавить в свой вопрос больше информации о том, что вы уже пробовали и какая клиент-серверная ОС используется.