Я хочу, чтобы каждое соединение в виртуальной машине (windows XP) использовало ТОЛЬКО мой сервер OpenVPN, как только соединение с OpenVPN будет потеряно, я хочу потерять все интернет-подключения в виртуальной машине. Естественно, хост виртуальной машины (Windows 7) никогда не подключится к VPN и не отключится от моего реального интернета.
Я почти уверен, что смогу сделать это с помощью route
команды Windows, которая позволяет подключаться к моему серверу OpenVPN только с помощью компьютера с Windows XP, скажем так:1.2.3.4.
Я следовал этому руководству:http://community.spiceworks.com/how_to/show/1334 но я даже не могу заставить их примеры работать.
Вот мои конфигурации маршрутов, полученные с помощью командыroute print
Маршрутизация pre-openVPN-подключения:
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.108 30
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.1.0 255.255.255.0 192.168.1.108 192.168.1.108 30
192.168.1.108 255.255.255.255 127.0.0.1 127.0.0.1 30
192.168.1.255 255.255.255.255 192.168.1.108 192.168.1.108 30
224.0.0.0 240.0.0.0 192.168.1.108 192.168.1.108 30
255.255.255.255 255.255.255.255 192.168.1.108 192.168.1.108 1
255.255.255.255 255.255.255.255 192.168.1.108 3 1
Default Gateway: 192.168.1.1
===========================================================================
Persistent Routes:
None
после подключения OpenVPN (обратите внимание, что 1.2.3.4 заменил мой реальный IP-адрес VPN):
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 128.0.0.0 10.8.0.5 10.8.0.6 1
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.108 30
10.8.0.1 255.255.255.255 10.8.0.5 10.8.0.6 1
10.8.0.4 255.255.255.252 10.8.0.6 10.8.0.6 30
10.8.0.6 255.255.255.255 127.0.0.1 127.0.0.1 30
10.255.255.255 255.255.255.255 10.8.0.6 10.8.0.6 30
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
128.0.0.0 128.0.0.0 10.8.0.5 10.8.0.6 1
1.2.3.4 255.255.255.255 192.168.1.1 192.168.1.108 1
192.168.1.0 255.255.255.0 192.168.1.108 192.168.1.108 30
192.168.1.108 255.255.255.255 127.0.0.1 127.0.0.1 30
192.168.1.255 255.255.255.255 192.168.1.108 192.168.1.108 30
224.0.0.0 240.0.0.0 10.8.0.6 10.8.0.6 30
224.0.0.0 240.0.0.0 192.168.1.108 192.168.1.108 30
255.255.255.255 255.255.255.255 10.8.0.6 10.8.0.6 1
255.255.255.255 255.255.255.255 192.168.1.108 192.168.1.108 1
Default Gateway: 10.8.0.5
===========================================================================
Persistent Routes:
None
решение1
После некоторых проб и ошибок я нашел решение своей проблемы:
Чтобы предотвратить все случайные или непреднамеренные отключения от VPN, раскрывающие ваш реальный IP-адрес, вам необходимо настроить все пункты назначения так, чтобы они проходили через поддельный шлюз, за исключением вашего IP-адреса VPN.
Экспертам по сетям и компьютерам:
Предположим следующее:
Обычный шлюз по умолчанию:192.168.1.1
Неиспользуемый частный IP:192.168.1.222
IP-адрес сервера OpenVPN:1.2.3.4
Используя cmd:
route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.222 metric 2
route -p add 1.2.3.4 mask 255.255.255.255 192.168.1.1 metric 1
Затем отключите DHCP, назначив адаптеру статический IP-адрес и используя неиспользуемый частный IP-адрес в качестве поддельного шлюза по умолчанию; таким образом блокируя все соединения, кроме вашего OpenVPN.
Для тех, кому нужен более пошаговый подход:
Первое, что вам нужно сделать, это открыть командную строку, удерживая клавишу Windows (кнопка справа от левого Ctrl) и нажав r, появится диалоговое окно. Введите «cmd» и нажмите Enter.
Должен появиться черный ящик с какой-то надписью, это называется командной строкой, и все команды, вводимые с этого момента, будут выполняться в этом черном ящике.
Первое, что нужно выяснить, это то, что фальшивый шлюз должен находиться в сетевом интерфейсе. Что такое «интерфейс»? Ну, в этом случае это частный IP, который был назначен компьютеру, что, похоже, дает 2 варианта, учитывая мою таблицу «до OpenVPN»: или 127.0.0.1
или 192.168.1.108
. Я знаю по опыту, что 127.0.0.1 — это IP-адрес обратной связи, поэтому он сузил круг поиска. Однако, если бы я не знал свой IP-адрес, я мог бы нажать «Выполнить» (клавиша Windows + r), ввести cmd и нажать OK. Появляется черное поле, введите команду CMD ipconfig
и получите вывод вроде:
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.1.108
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.1
Там мне конкретно сообщается мой IP-адрес и, таким образом, «интерфейс» — 192.168.1.108
, поэтому мой поддельный шлюз должен быть в диапазоне 192.168.1.100
до 192.168.1.254
, и не может быть уже использован.
Например, предположим, что я хочу использовать IP-адрес 192.168.1.101
. Чтобы проверить, используется ли он, я ввожу команду ping 192.168.1.101
и получаю ответ вроде этого:
Pinging 192.168.1.101 with 32 bytes of data:
Reply from 192.168.1.101: bytes=32 time=1ms TTL=64
Reply from 192.168.1.101: bytes=32 time=1ms TTL=64
Reply from 192.168.1.101: bytes=32 time=1ms TTL=64
Reply from 192.168.1.101: bytes=32 time=1ms TTL=64
Ping statistics for 192.168.1.101:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 1ms, Average = 1ms
Это будет означать, что IP 192.168.1.101
в настоящее время занят, и я cannot
использую его для своего фальшивого шлюза. Поэтому я решаю попробовать IP 192.168.1.222
и выдаю ту же команду ping: ping 192.168.1.222
. Если ответ будет следующим:
Pinging 192.168.1.222 with 32 bytes of data:
Reply from 192.168.1.100: Destination host unreachable.
Reply from 192.168.1.100: Destination host unreachable.
Reply from 192.168.1.100: Destination host unreachable.
Reply from 192.168.1.100: Destination host unreachable.
Ping statistics for 192.168.1.222:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Тогда я бы успешно нашел частный IP, который в настоящее время не используется и может использоваться для моего поддельного шлюза. Для остальной части ответа я буду использовать 192.168.1.222
как мой поддельный шлюз.
Следующий шаг — отправить каждую попытку назначения через наш поддельный шлюз, а не через настоящий. Мы делаем это, выполнив следующую команду:
route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.222 metric 2
означает 0.0.0.0 mask 0.0.0.0
, что "каждый адрес" будет отправлен на шлюз 192.168.1.222
. metric 2
Часть назначает этому маршруту приоритет2- это важно, потому что приоритет (метрика)1будет иметь приоритет над приоритетом2.
Если задать для него метрику 2, то он получит более высокий приоритет, чем шлюз, назначенный вашим DHCP, который в моем случае был 30. Это означает, что каждый пункт назначения будет пытаться пройти через шлюз 192.168.1.222, а не через реальный шлюз, по сути направляя все ваши попытки установить соединение в никуда.
Вы можете убедиться, что сделали все правильно, выполнив ipconfig
команду еще раз:
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.1.108
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.222
192.168.1.1
Обратите внимание, что на этот раз у нас есть 2 IP-адреса, перечисленных под шлюзом по умолчанию, а не только один. Также обратите внимание, что наш поддельный шлюз указан первым (сверху), а реальный шлюз указан вторым.
Что это в свою очередь означает, что также, когда мы пытаемся подключиться к нашему серверу OpenVPN IP, в этом примере 1.2.3.4
он будет направлен на поддельный шлюз (192.168.1.222) и не позволит нам подключиться. Мы этого не хотим. Поэтому мы должны создать другой маршрут с более высоким приоритетом (более низкой метрикой), чем 2, который говорит, что при подключении к нашему OpenVPN IP мы хотим, чтобы он подключался к настоящему шлюзу (192.168.1.1).
Первое, что мы хотим сделать, это подтвердить, что такое сервер OpenVPN, мы можем сделать это, снова используя команду ping. Обычно поставщики VPN предоставляют вам адрес, например, us.bestvpn.com
для подключения, нам нужно выяснить, для какого IP-адреса этот URL является псевдонимом, что лучше всего сделать с помощью команды ping, мы вводим:
ping us.bestvpn.com
и ответ должен быть примерно таким:
Pinging us.bestvpn.com [1.2.3.4] with 32 bytes of data
где IP-адрес в скобках — это IP-адрес сервера OpenVPN. Мы будем использовать 1.2.3.4
в качестве IP-адреса VPN-сервера.
Теперь нам нужно настроить его так, чтобы этот IP-адрес был направлен на наш реальный шлюз. Для этого мы выполняем команду:
route -p add 1.2.3.4 mask 255.255.255.255 192.168.1.1 metric 1
Метрика 1 позволит маршруту получить приоритет над метрикой 2, которую мы дали маршруту поддельного шлюза. Важно отметить, что это mask 255.255.255.255
означает точный IP 1.2.3.4
- что верно для моего случая, но вы можете захотеть создать маску 255.255.255.0
, которая по сути скажет ему, что любой IP в диапазоне от 1.2.3.0
до 1.2.3.254
будет направлен на настоящий шлюз. Это полезно, если ваш провайдер OpenVPN использует диапазон IP для подключения к нему.
Теперь мы должны иметь возможность подключиться к VPN как обычно, а затем, как только подключитесь, можете просматривать весь интернет. Как только вы отключитесь, вы заметите, что, кажется, что он не подключается, а затем внезапно подключается, с вашим РЕАЛЬНЫМ IP, что?! Почему он это сделал?
Насколько я понимаю, по умолчанию, когда DHCP понимает, что шлюз не работает в течение определенного количества секунд, он пытается попробовать вторичный шлюз, в данном случае ваш настоящий шлюз.
Чтобы этого не произошло, необходимо отключить DHCP, назначив статический IP-адрес, маску подсети и шлюз вашим интернет-свойствам.Пошаговое руководство с картинками о том, как это сделать в XP, Vista и 7.
После того, как вы это сделаете, снова подключитесь к VPN, проверьте, что он все еще работает, затем подключитесь. Попробуйте подключиться к сайту и подождите 2-3 минуты, чтобы убедиться, что он не загружается, и все готово.
Таким образом вы можете предотвратить раскрытие вашего реального IP-адреса при случайном отключении VPN.
решение2
Если вас беспокоят утечки DNS и IP в OpenVPN и вам нужен простой и автоматический способ предотвращения утечек IP и DNS при использовании OpenVPN, ознакомьтесь с этими двумя простыми инструментами, предлагаемыми www.openvpnchecker.com
Контрольный таймер OpenVPN:http://openvpnchecker.com/
Брандмауэр OpenVPN:http://openvpnchecker.com/firewall.htm Редактировать/Удалить сообщение