Настройка NAT стандартными средствами WinXP

Долго искал информацию по настройке NAT в windows , раньше приходилось ставить комерческие реализации NAT’а под винду …  наконецто на хабРе вычитал статейку небольшую такую танюсенькую про настройку NAT стандартными средствами Windows XP
Итак. У нас есть компьютер, на котором имеется интернет (не через прокси разумеется). Мы хотим с этого компа инет раздать по WiFi, BlueTooth или просто в сеть, подключенную ко второй сетевой карте.
Что нужно  сделать в первую очередь:
1) проверяем что запущен ли сервис «Маршрутизация и удалённый доступ» («Routing and Remote Access»), и его режим запуска — «Авто».
2) идём в (regedit) реестр и ставим в еденичку ключ «IPEnableRouter» из ветки «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters»
3) перезагружаем компьютер
4) открываем консоль ( cmd )
5) netsh routing ip nat install
6) netsh routing ip nat show global
если в ответ видим сообщение  «NAT должен быть установлен первым» — ребутимся, если молчит то  идём  пунктам дальше.
7) netsh routing ip nat add interface «Internet connection» full
где «Internet connection» — название сетевого соединения от которого получаем интернет(внешний интерфес). Его можно посмотреть и скопировать в сетевых подключениях.
8) netsh routing ip nat add interface «Local Area Connection» private
где «Local Area Connection» — название сетевого соединения на которое раздаём интернет(внутренний интерфейс). Его так же можно посмотреть и скопировать в сетевых подключениях.

Настройка NAT завершена. Теперь несколько слов о настройке сети.
Важно чтобы ip-адерса внешнего и внутреннего интерфейса были в разных подсетях. Т.е. если внешний идёт например к ADSL роутеру и имеет адрес и маску 192.168.1.2/255.255.255.0 и адрес шлюза например 192.168.1.1, то внутренний интерфейс можно сделать таким: 192.168.3.1/255.255.255.0  но адрес шлюза не указываем.
Компьютеры а вернее интерфейсы в подсети, подключённой к внутреннему интерфейсу нашего компьютера настраиваем так:
192.168.3.2/255.255.255.0
192.168.3.3/255.255.255.0
192.168.3.4/255.255.255.0  и так далее.

Для них всех шлюз — 192.168.3.1, в качестве DNS указываем адрес днс, прописанный (либо назначенный провайдером) для внешнего интерфейса. Посмотреть можно так — «Сетевый подключения» — пр. кн. на внешнем сетевом интерфейсе — «Состояние» -«Поддержка» — «Подробности». Либо выполнив в консоли комманду ipconfig /all

Далее коммент автора:
«Вот как-то так. У меня по этой схеме работает «Интернет -> ADSL-Router -(Ethernet)> Настольный комп с настроенным NAT -(BlueTooth PAN)> КПК»

Многие в недоумении что такая фича всегда была под рукой…

И даже батник нашелся для автомата :

———————————————————————

[sourcecode language=»plain»]
@echo off

REM В кавычках укажите имя внутреннего интерфейса, с учетом регистра
REM Лучше переименуйте интерфейсы по-английски
set int="int"
REM здесь укажите имя внешнего интерфейса
set ext="ext"

sc stop RemoteAccess > NUL
sc stop SharedAccess > NUL
sc config SharedAccess start= disabled > NUL
sc config TapiSrv start= demand > NUL
sc config RasAuto start= demand > NUL
sc config RasMan start= demand > NUL
echo Enable routing …
echo Windows Registry Editor Version 5.00 > re.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] >> re.reg
echo "IPEnableRouter"=dword:00000001 >> re.reg
regedit /s re.reg
del /q re.reg
echo OK.

REM Раскомментируйте в случае если ошибка "нет записей"
netsh routing ip add interface name=%int% state=enable > NUL
netsh routing ip add interface name=%ext% state=enable > NUL

echo Setting up NAT…
netsh routing ip nat uninstall > NUL
netsh routing ip nat install
echo Enable NAT on internal interface…
netsh routing ip nat add interface name=%int% Private
echo Enable NAT on external interface…
netsh routing ip nat add interface name=%ext% Full
echo Now enable Routing and Remote Access…
sc config RemoteAccess start= auto > NUL
net start RemoteAccess
netsh routing ip nat show interface

echo Setting up DNS for NAT…
netsh routing ip dnproxy uninstall > NUL
netsh routing ip dnsproxy install
netsh routing ip dnsproxy set interface %ext% mode=disable > NUL
netsh routing ip dnsproxy set interface %int% mode=enable > NUL
netsh routing ip dnsproxy show interface %int%

echo Setting up DHCP…
netsh routing ip autodhcp uninstall > NUL
netsh routing ip autodhcp install
netsh routing ip autodhcp set interface %ext% mode=disable > NUL
netsh routing ip autodhcp set interface %int% mode=enable > NUL
netsh routing ip autodhcp set global 192.168.6.0 255.255.255.0
netsh routing ip autodhcp add exclusion 192.168.6.0
for /l %%i in (1,1,32) do netsh routing ip autodhcp add exclusion 192.168.6.%%i
netsh routing ip autodhcp add exclusion 192.168.6.255
netsh routing ip autodhcp show interface %int%

echo Done.
pause

[/sourcecode]

И так же удаляем его если вдруг надоел:

[sourcecode language=»plain»]
@echo off
sc stop RemoteAccess > NUL
sc stop SharedAccess > NUL
sc config SharedAccess start= disabled > NUL
sc config TapiSrv start= demand > NUL
sc config RasAuto start= demand > NUL
sc config RasMan start= demand > NUL
echo Disable routing …
echo Windows Registry Editor Version 5.00 > re.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] >> re.reg
echo "IPEnableRouter"=dword:00000000 >> re.reg
regedit /s re.reg
del /q re.reg
echo OK.

echo Stopping NAT…
netsh routing ip nat uninstall > NUL
echo Now disable Routing and Remote Access…
sc config RemoteAccess start= disabled > NUL

echo Stopping DNS for NAT…
netsh routing ip dnproxy uninstall > NUL

echo Stopping DHCP…
netsh routing ip autodhcp uninstall > NUL

echo Done.
pause
[/sourcecode]