В системе Linux мы можем использовать следующую команду для включения пересылки пакетов:
~ # sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
но как реализовать ту же функцию в Windows?
Я использую Windows Server 2008 R2
.
решение1
Попробуйте перейти к разделу реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
. Если его там еще нет, создайте новое REG_DWORD
значение с именем IPEnableRouter
. Установите IPEnableRouter
и 1
перезагрузите. Пересылка пакетов теперь должна быть включена.
Для добавления статических маршрутов используйте route
команду.
решение2
Если вы хотите включить переадресацию для определенного интерфейса или всех интерфейсов, вы можете легко сделать это из PowerShell, перезагрузка не требуется. (ПРИМЕЧАНИЕ: обязательно запустите его как администратор, если вы хотите изменить настройки)
Чтобы просмотреть состояние пересылки для всех интерфейсов, можно выполнить следующее:
Get-NetIPInterface | select ifIndex,InterfaceAlias,AddressFamily,ConnectionState,Forwarding | Sort-Object -Property IfIndex | Format-Table
Это позволит получить наглядную таблицу, показывающую все интерфейсы и их текущую конфигурацию пересылки.
Затем, если вы хотите включить пересылку на одном из них, вы можете выполнить:
Set-NetIPInterface -ifindex <required interface index from table> -Forwarding Enabled
Если вы хотите включить его для всех интерфейсов, просто запустите:
Set-NetIPInterface -Forwarding Enabled
Затем, если вы захотите снова отключить его, просто замените «Включено» на «Отключено».
И не забудьте включитьСлужба маршрутизации и удаленного доступа(По умолчанию отключено) запустив:
Set-Service RemoteAccess -StartupType Automatic; Start-Service RemoteAccess