О том, что в Windows XP (как, впрочем, и в другие разновидности семейства Windows) встроен VPN-клиент, позволяющий совместно с VPN-сервером строить защищенные сети поверх Интернет (или других сетей), я знал давно.
Эта возможность широко используется даже для организации доступа в Интернет провайдерами. Но о том, что в Windows XP встроен легко запускаемый сервер (!) VPN, я узнал совсем недавно из статьи "Настраиваем VPN/OpenVPN на WinXP Professional и Win2003 Server" (http://ruskij.net/modules.php?name=Content&pa=showpage&pid=16).
В статье все написано очень хорошо и правильно, но некоторые моменты в настройке все же упущены, поэтому решил заново на будущее расписать всю процедуру. Итак, процесс по шагам на примере соединения двух компьютеров с 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, см. статью Как поиграть в StarCraft (BroodWar) по Интернет)! Причем если на шаге 2.7 были указаны IP-адреса, попадающие в уже существующую физическую подсеть, где есть другие компьютеры, то эти компьютеры становятся тоже доступны клиенту (либо серверу, в зависимости от того, какие IP адреса настроены).
Описанный сервер VPN на Windows XP позволяет подключить и VPN-клиентов других операционных систем, так как используются стандартные протоколы, но это наверное тема для другой статьи.
См. также:
"VPN Setup" http://www.chicagotech.net/vpnsetup.htm
"Re: gre vpn PPTP 47/ip ipnat" http://monkey.org/openbsd/archive/tech/9912/msg00135.html
|
Комментарии
2012-03-0610:31:25 Доброго времени суток, у меня такая проблема на центральном офисе Server 2003, у нас на офисе ХР и 7. Подключение к удаленному рабочему столу у всех создано, но проблема в том что на сервер может единовременно зайти только один пользователь, мы можем заходить на сервер только по очереди, что есть нехорошо. подскажите в чем может быть проблема. Заранее благодарен.
microsin: к сожалению, ничего посоветовать не могу - давно админом уже не работаю, и смоделировать Вашу ситуацию нет возможности.
2012-02-1306:22:22 Мне удалось настроить тонель дома, повязав два компа через роутер. Чисто для проверки. Но мне надо повязать два компа в разных районах города, сидящих под разными провайдерами и оба они имеют "серые" хотя и статические IP-адреса. Возможно ли это сделать с помощью выше описанного или же обязательно, чтобы VPN-сервер имел "белый" IP-адрес? Или же они оба должны иметь "белые", глобально, то есть, значимые IP-шники?
microsin: не имеет абсолютно никакого значения - какие IP у VPN-клиента и VPN-сервера - белые, серые, статические, динамические или какие-то еще. Единственное условие - клиенту VPN должен быть известен IP-адрес сервера VPN, чтобы клиент мог подключиться к серверу. И, само собой, порты VPN-соединения тоже должны быть открыты (не выпилены файерволом или NAT-ом). Если IP у сервера динамический, то можно воспользоваться службой динамических доменных имен, чтобы привязать к изменяющемуся IP фиксированное доменное имя - клиент VPN тогда будет искать сервер по этому имени.
2011-07-1920:24:27 А как сделать чтобы VPN-соединение автоматически устанавливалось на клиенте при старте системы?
microsin: нужно ярлычок сетевого соединения на клиенте положить в папку Автозагрузка (Startup). Либо настроить "Назначенное задание", которое запускает соединение при старте Windows.
2011-05-1612:12:33 Если Вы не имеете статического IP (он стоит около 100 р. в месяц у провайдера) но имеете нормальный ДИНАМИЧЕСКИЙ IP (нормальный в смысле он совпадает с тем, как Вас видит интернет например здесь http://2ip.ru/) то при помощи бесплатного сервиса http://www.dyndns.com/ можно сопоставить ИМЯ с Вашим ДИНАМИЧЕСКИМ IP. На компьютере запускается специальный клиент, он следит за вашим IP и постоянно обновляет его в базе DNS в случае разрыва соединения. Имена типа XXX.dyndns.info
2011-02-1914:00:01 В статье есть неточность:
"Если нужно бОльшее количество одновременных соединений, то нужно указывать соответственно и бОльший диапазон адресов. "
Больше одного клиента ХР не может принимать одновременно!
desktop wallpapers, youtube
free games download, youtube
watch free online movies, youtube
3d wallpaper, youtube
monster truck games, youtube
baby shower games, youtube
pool games, youtube
cool wallpapers, youtube
typing games, youtube
movies 2011, youtube
free download games, youtube
web development, youtube
2011-02-1812:22:03
2011-01-1716:04:23 Айпи на сервере динамический, но он не меняется до реконнекта.
Почему-то часто разрывается соединение. В чем может быть причина?
microsin: причина может быть в неустойчивом канале, поверх которого работает VPN - например, потеря или большие задержки пакетов.
2010-11-1717:44:04 Просто супер. Спасибо огромное, несколько часов мучился, пока нашёл вашу статью :)
2010-10-0513:20:34 Спасибо огромное!
Хорошее пояснение, все настроил, все работает.
2010-06-1716:56:20 А как быть с USB модемом? Например МТС Коннект Е1550?
microsin: я не Ваш понял вопрос относительно модема. Любой модем, подключенный куда-то (не важно, какого типа модем), это по сути простой сетевой интерфейс и/или сетевое соединение чего-то с чем-то. Как вариант, поверх этого соединения (если соединение с Интернет) можете настроить VPN.