О том, что в Windows XP (как, впрочем, и в другие разновидности семейства Windows) встроен VPN-клиент, позволяющий совместно с VPN-сервером строить защищенные сети поверх Интернет (или других сетей), я знал давно.
Эта возможность широко используется даже для организации доступа в Интернет провайдерами. Но о том, что в Windows XP встроен легко запускаемый сервер (!) VPN, я узнал совсем недавно из статьи "Настраиваем VPN/OpenVPN на WinXP Professional и Win2003 Server" [1]. В статье все написано очень хорошо и правильно, но некоторые моменты в настройке все же упущены, поэтому решил заново на будущее расписать всю процедуру. Итак, процесс по шагам на примере соединения двух компьютеров с Windows XP (один работает как сервер VPN, другой как клиент VPN).
1. Для того, чтобы туннель VPN заработал, нужно обеспечить для сервера VPN публикацию в Интернете следующих портов и протоколов (не уверен, что все они нужны во всех случаях - в зависимости от типа соединения, например PPTP или L2TP, но лучше настроить их все):
порт 1701 UDP порт 1723 TCP IP протокол 47 (GRE) IP протокол 50 (ESP)
Причем цифры 47 и 50 означают вовсе не порты TCP или UDP, а номера протоколов IP. Открытием портов и протоколов необходимо озаботиться в том случае, если на сервере VPN работает файервол, или сервер VPN спрятан за NAT, или если работает файервол на NAT-маршрутизаторе, за которым находится сервер VPN (последний случай как раз был у меня) - варианты могут быть различные. Вот, например, какие правила надо добавить для настройки ipnat на FreeBSD (компьютер на FreeBSD работает как пограничный с Интернетом NAT-маршрутизатор, за которым расположен сервер VPN с IP 192.168.0.1, ng0 - имя внешнего сетевого интерфейса, который подключен к Интернет):
rdr ng0 публичный_IP/32 port 1701 -> 192.168.0.1 port 1701 udp rdr ng0 публичный_IP/32 port 1723 -> 192.168.0.1 port 1723 tcp rdr ng0 публичный_IP/32 port 47 -> 192.168.0.1 port 47 gre #rdr ng0 публичный_IP/32 port 50 -> 192.168.0.1 port 50 esp
Правило с протоколом esp здесь у меня закомментировано, так как PPTP-соединение у меня работало и без него. Правило с протоколом gre нужно для работы протокола PPTP, без него не проходит проверка пользователя и пароля, и после таймаута выскакивает ошибка 721 - "удаленный компьютер не отвечает".
На клиенте VPN нужно соответственно разрешить исходящие соединения на все вышеуказанные порты и протоколы (если на клиенте работает файервол). Если этот файервол - штатный Windows, то это происходит автоматически.
2. Сначала настраиваем сервер VPN. 2.1. Start -> Control Panel -> Network Connections -> меню File\New Connection..., на первом окошке жмем Next. 2.2. Дальше предложат выбрать тип сетевого соединения (Network Connection Type), выбираем 4-й сверху вариант "Set up an advanced connection" (Connect directly to another computer using your serial, parallel, or infrared port, or set up this computer so that other computers can connect to it.), жмем Next. 2.3. Далее выбираем "Accept incoming connections" (Allow other computers to connect to this computer through the Internet, a phone Iine, or a direct cable connection.), жмем Next. 2.4. Далее предложат выбрать устройства, которые компьютер может использовать для приема входящих соединений (поставить на нужых устройствах галочки). На самом деле в этом списке ничего трогать не нужно (сетевых интерфейсов типа Ethernet в этом списке нет), а еще лучше поубирать все галочки, которые мастер поставил, и просто надо нажать на кнопочку Next. У меня в этом списке было только устройство "Direct Parallel (LPT1)" (подозреваю, что можно наладить VPN, соединив компьютеры через порты LPT, кто бы мог подумать). 2.5. В следующем окне Incoming Virtual Private Network (VPN) Connection выбираем "Allow virtual private connections", жмем Next. 2.6. Предложат выбрать пользователей на VPN-сервере, которым разрешено выполнять подключение к создаваемому серверу VPN. Ставим галочки напротив нужных пользователей, жмем Next. Напоминаю на всякий случай - выбранные пользователи должны иметь хорошие пароли. 2.7. Далее идет окно "Networking Software" (Networking software allows this computer to accept connections from other kinds of computers.) - отображеи список сетевых сервисов с галочками. Кнопка Properties позволяет у некоторых сервисов отредактировать параметры. Советую заглянуть в свойства службы "Internet Protocol (TCP/IP)" - она первая в списке. По умолчанию там выбран вариант "Assign TCP/IP addresses automatically using DHCP", что иногда может вызывать конфликты, если у Вас в той же сети, в которой должна работать VPN, имеется сервер DHCP, работающий на другом компьютере. Рекомендую выбрать вариант "Specify TCP/IP addresses" и указать начальный и конечный адреса IP-адресов, которые будут выдаваться для создаваемого соединения VPN. Проверьте также галочки "Allow callers to access my local area network" и "Allow calling computer to specify its own IP address" - они должны быть установлены - см. рисунок. 
В примере на рисунке указаны в виде начала и конца 2 адреса, сразу идущие друг за другом. Один из этих адресов будет назначен серверу VPN, а другой клиенту, и свободных адресов больше не останется. Это означает, что в каждый момент времени может быть активно только одно VPN-соединение. Если нужно бОльшее количество одновременных соединений, то нужно указывать соответственно и бОльший диапазон адресов.
Окно "Networking Software" последнее, нажатие Next на нем завершает настройку сервера VPN. После завершения настройки в папке Network Connections появится гордое соединение "Incoming Connections", и система начнет прослушивать входящие соединения по портам 1701 UDP и 1723 TCP. Как видно, настройка сервера упрощена до предела, нет возможности выбора сетевого адаптера, по которому будут приниматься соединения VPN (если сетевых соединений несколько), нельзя наложить ограничения на входящие соединения по времени или IP, но в большинстве случаев этого достаточно (если нет, то поднимайте сервер VPN на Windows 2003 или xNIX).
3. Теперь настроим клиента VPN - соединение на компьютере, который будет подключаться к серверу VPN. 3.1. Start -> Control Panel -> Network Connections -> меню File\New Connection..., на первом окошке жмем Next. 3.2. Дальше предложат выбрать тип сетевого соединения (Network Connection Type), выбираем 2-й сверху вариант "Connect to the network at my workplace" (Connect to a business network (using dial-up or VPN) so you can work from home, a field office, or another location.), жмем Next. 3.3. Далее просят выбрать из 2 вариантов "Dial-up connection" или "Virtual Private Network connection", выбираем второй вариант - VPN, жмем Next. 3.4. Далее предложат указать имя соединения - его можно указать произвольным (как его назовете, под тем именем оно и будет видно в папке Network Connections). Вводим имя, жмем Next. 3.5. Далее появится окно "Public Network" (Windows can make sure the public network is connected first.), в нем по сути устанавливаем, какое соединение надо запускать при подключении к публичной сети (Интернет). Если компьютер постоянно подключен к Интернет (что сегодня обычное дело), то выбираем Do not dial the initial connection. Жмем Next. 3.6. Появится окно "VPN Server Selection" (What is the name or address of the VPN server?), где надо ввести доменное имя или IP, под которым можно найти в Интернет сервер VPN. Вводим, жмем Next. На этом создание соединения завершается. 3.7. В папке Network Connections появится наше новое соединение с иконкой в виде облачка. Щелкнем на нем правой кнопкой мыши, выберем Properties. 3.8. На закладке Options может оказаться полезным убрать галочку "Prompt for name and password, certificate, etc.", тогда введенный пароль можно запомнить, и соединение VPN будет запускаться сразу. 3.9. На закладке Security проверьте, стоит ли галочка "Require data encryption (disconnect if none)" - если она стоит, то передаваемые через туннель данные будут всегда автоматически шифроваться (см. рисунок). 
Кнопка "IPSec Settings..." позволяет сделать тонкие настройки протокола шифрования IPSec, но нам лезть в дебри не надо. 3.10. На закладке "Networking" надо поставить "Type of VPN: PPTP VPN". Другие варианты (Automatic и L2TP IPSec VPN) у меня почему-то не заработали, хотя ковырялся я с ними недолго. Кнопка "Settings" позволяет установит опции PPTP, там надо оставить все по умолчанию (галочки "Enable LCP extensions" и "Enable software compression" стоят, галочка "Negotiate multi-link for single link connections" снята). Если у Вас на клиенте необходимо сохранить работу Интернет при работающем VPN-подключении, то еще необходимо отключить шлюз для нашего VPN-соединения. Делается это в свойствах протокола TCP/IP - нажимаете внизу кнопку "Advanced..." и на первой закладке "General" снимаете галочку "Use default gateway on remote network". Если этого не сделать, то в системе будет 2 шлюза по умолчанию, и компьютер не поймет, куда посылать внешние пакеты.  3.11. Стандартная закладка Advanced позволяет включить/выключить файервол и некоторые другие опции. Помните, что по умолчанию файервол может быть активирован, и это может быть причиной того, что VPN-тоннель у Вас запустится, а передать через него Вы ничего не сможете (или он будет работать только в одном направлении). Остальные закладки особого интереса не представляют.
На этом настройка и клиента, и сервера VPN завершена. Теперь если кликнуть на созданном соединении клиента VPN, то запустится соединение VPN. При этом и на сервере, и на клиенте создадутся виртуальные сетевые адаптеры, которые обеспечат прозрачную сетевую видимость компьютеров друг с другом - все сетевые пакеты будут ходить между клиентом и сервером VPN, как будто они соединены сетевым кабелем - привет, Хамачи (Hamachi, см. статью [2])! Причем если на шаге 2.7 были указаны IP-адреса, попадающие в уже существующую физическую подсеть, где есть другие компьютеры, то эти компьютеры становятся тоже доступны клиенту (либо серверу, в зависимости от того, какие IP адреса настроены).
Описанный сервер VPN на Windows XP позволяет подключить и VPN-клиентов других операционных систем, так как используются стандартные протоколы, но это наверное тема для другой статьи.
[Ссылки]
1. Настраиваем VPN/OpenVPN на WinXP Professional и Win2003 Server site:ruskij.net. 2. Как поиграть в StarCraft (BroodWar) по Интернет. 3. VPN Setup site:chicagotech.net. 4. Re: gre vpn PPTP 47/ip ipnat site:monkey.org. |
Комментарии
microsin: запустить клиентское соединение VPN можно на любом компьютере, который предоставляет прохождение пакетов до сервера VPN. Не имеет значение - шлюзовый это компьютер (роутер сети с двумя сетевыми картами), или это компьютер с одной сетевой картой, получающий Интернет через шлюз.
Разновидностей VPN напридумано и понаделано туева хуча, так что если у Вас что-то не работает, то читайте документацию по соответствующем у VPN, и проверяйте прохождение трафика по тем портам, которые задействует этот VPN.
microsin: нужно ярлычок сетевого соединения на клиенте положить в папку Автозагрузка (Startup). Либо настроить "Назначенное задание", которое запускает соединение при старте Windows.
Почему-то часто разрывается соединение. В чем может быть причина?
microsin: причина может быть в неустойчивом канале, поверх которого работает VPN - например, потеря или большие задержки пакетов.
RSS лента комментариев этой записи