Привет, недавно столкнулся с ситуацией — есть выделенный сервер, на сервер установлен Hyper-V, провайдер выдает один белый IP на сервер. Обратились ко мне с вопросом — как можно сделать так, что бы не покупая дополнительные адреса, на создаваемых на сервере виртуальных машинах работал интернет.
В случае, например с VirtualBox вопрос решается подключением виртуальной машины к сети с типом NAT, но как же быть с Hyper-V, в нем нельзя подключить виртуальный свитч к сети NAT.
Ответ очевиден — нужно подключить свитч к внутренней сети, и с него трафик натить через физический порт. Сделать это совсем не сложно.
Ниже я расскажу как можно настроить NAT на Windows Server 2016 через PowerShell, а так же как можно настроить NAT на более старых версиях ОС Windows, через RRAS (к слову и на Windows Server 2016, через RRAS то же можно делать).
Начнем с более предпочтительного и простого способа - через PowerShell, но он для Windows 2016 и Windows 10 (к слову эти же команды должны работать и на более старых версях Windows, при условии, что будет установлен PowerShell 5, но я не проверял, кто проверит, отпишитесь в комментариях).
#Добавляем виртуальный свитч New-VMSwitch -name NAT -SwitchType Internal #Добавляем NAT New-NetNat -Name LocalNat -InternalIPInterfaceAddressPrefix "10.0.0.0/24" #Назначем адрес виртуальному свитчу Get-NetAdapter "vEthernet (NAT)" | New-NetIPAddress ` -IPAddress 10.0.0.1 -AddressFamily IPv4 -PrefixLength 24 #Делаем проброс портов Add-NetNatStaticMapping -NatName NATnetwork -Protocol TCP ` -ExternalIPAddress 0.0.0.0 -InternalIPAddress 10.0.0.2 ` -InternalPort 22 -ExternalPort 50022 #Посмотреть текущие пробросы портов можной командой: Get-NetNatStaticMapping #Как и список сетей NAT Get-NetNat #Такими командами это хозяйство можно удалить Remove-NetNatStaticMapping -StaticMappingID 0 Remove-NetNat -Name LocalNat
Теперь опишу способ, как можно сделать NAT, который работает практически на всех версиях винды (на 2003, 2008, 2012 и 2016 соответсвенно), будем делать NAT через RRAS.
Сперва нужно поставить роль RAS, для этого заходим в диспетчер сервера, жмем управление и выбираем — добавить роли и компоненты.
В мастере добавления ролей, в ролях сервера, выбираем Удаленный доступ.
В службах ролей удаленного доступа, выбираем маршрутизация,
и добавляем необходимые компоненты.
После завершения установки, перезагружаем сервер, возвращаемся в диспетчер сервера и выбираем: средства — маршрутизация и удаленный доступ.
Щелкаем правой кнопкой по нашему серверу и выбираем - настроить маршрутизацию и удаленный доступ.
На втором шаге мастера настройки сервера маршрутизации и удаленного доступа, выбираем - преобразование сетевых адресов (NAT).
Дальше выбираем сетевой интерфейс, который подключен к интернету.
На этом настройка NAT на Windows Server 2016 закончена, вернемся в консоль управления RRAS, развернем наш сервер, перейдем в IPv4, и зайдем в преобразование сетевых адресов.
Здесь можно посмотреть свойства сетевых интерфейсов. Например для внутреннего свойства выглядят так:
А для внешнего так:
Здесь же можно сделать проброс портов, например, сделаю проброс ssh до виртуальной машины. Заходим в службы и порты и жмем добавить,
Здесь указываем понятное имя службы, входящий порт (порт по которому нужно ломиться на сервер), адрес сервера к которому пробрасываем порт, и порт сервера.
Всё порт проброшен. Можно пробовать подключиться.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.
Если вам помогла статья, вы можете >>отблагодарить автора<<
Комментарии
Здравствуйте! Спасибо за статью, а не подскажите как расшарить интернет если у нас PPPoe подключение? В списке интерфейсов его нет.
Здравствуйте. Спасибо за статью. Многое прояснил для себя. Но остались и непонятки.
У меня есть один белый ip для хоста. На хосте я поднял виртуальную машину ip 192.168.0.10/28. На виртуальной машине поднял сайт на share point 2016 с адресом "]]>http://saittest]]>" . По вашему примеру пробросил порт 80 на внешний 50022. Теперь пытаюсь зайти на этот сайт, в браузере набираю "]]>http://ip]]> адрес сайта:50022" сайт отвечает выдает форму для проверки логина и пароля. Ввожу их. Но появляется ошибка 404, говорит что не удалось найти данный ресурс. С самой виртуальной машины сайт открывается.
Не подскажите что я делаю не так?
С уважением, Вячеслав.
Здравствуйте. Спасибо за статью. Многое прояснил для себя. Но остались и непонятки.
У меня есть один белый ip для хоста. На хосте я поднял виртуальную машину ip 192.168.0.10/28. На виртуальной машине поднял сайт на share point 2016 с адресом "]]>http://saittest]]>" . По вашему примеру пробросил порт 80 на внешний 50022. Теперь пытаюсь зайти на этот сайт, в браузере набираю "]]>http://ip]]> адрес сайта:50022" сайт отвечает выдает форму для проверки логина и пароля. Ввожу их. Но появляется ошибка 404, говорит что не удалось найти данный ресурс. С самой виртуальной машины сайт открывается.
Не подскажите что я делаю не так?
С уважением, Вячеслав.
Ура! Победил :) Александр, спасибо огромное. Нужно было проклинать 80 ый порт на 80ый!