Назад | Перейти на главную страницу

Как сделать серверы видимыми в моем VPN?

Я возился с веб-серверами в Rackspace, пытаясь выяснить, могу ли я создать веб-сайт с общедоступными частями, а также частными частями, которые видны только через VPN-соединение.

У меня есть 2 сервера, на которых запущен apache, у первого есть смесь публичных и частных сайтов. У второго есть частные сайты, а также pptpd, работающий как VPN-сервер. В обоих случаях внутренние IP-адреса (10.n.n.n) предоставляются через DNS для частных сайтов.

Вот наспех нарисованная диаграмма, которая, надеюсь, покажет, как мне удалось все настроить:

Публичные сайты работают нормально. VPN-соединение работает нормально. Частные сайты на сервере 2 работают нормально при подключении к VPN. Что не работает, так это доступ к частным сайтам на сервере 1 через VPN. Я добавил на диаграмму потенциально вводящую в заблуждение красную стрелку, показывающую, где, по моему мнению, проблема.

Я могу пинговать каждый сервер от другого по их внутренним адресам, и я могу пинговать сервер 2 через Интернет по его внутреннему адресу. Что я не могу сделать, так это проверить связь с сервером 1 через Интернет.

Я чувствую, что мне наивно не хватает некоторых важных сетевых знаний о том, как на самом деле работают VPN. Кто-нибудь может увидеть, что мне не хватает?

Внутренняя IP-информация для серверов:

Server 1
    inet addr:10.177.129.10  Bcast:0.0.0.0  Mask:255.255.192.0

Server 2
    inet addr:10.176.132.180  Bcast:0.0.0.0  Mask:255.255.192.0

Rckspace уверяет меня, что это означает, что они находятся в одной подсети


Вещи, которые я пробовал:

Изменение локального и удаленного IP-адресов в /etc/pptpd.conf

localip 10.176.132.180
remoteip 192.168.0.234-238,192.168.0.245

или

localip 192.168.1.1-99
remoteip 192.168.1.100-245

или

localip 192.168.1.1
remoteip 192.168.1.2-245

Включение bcrelay eth1 и proxyarp в /etc/pptpd.conf

Не знаю, нужен ли мне бкрелей, но в то время это казалось хорошей идеей.

Добавление маршрута с

route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.176.132.180

(или 192.168.0.0, независимо от того, какой локальный идентификатор) или

route add -net 192.168.1.0 netmask 255.255.255.0 gw  192.168.1.1

Добавление различных записей iptable, таких как:

sudo iptables -t nat -A POSTROUTING -j SNAT --to-source [server 2 ext ip]

или

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

или

sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

или

sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

Добавить записи в таблицу ARP через скрипт

Следующий предложения найдены на этом сайте(Так как я вижу "Невозможно определить адрес Ethernet для ARP прокси" из pptp в системном журнале), я добавил ip-up.local и ip-down.local сценарии, которые запускаются всякий раз, когда клиент подключается и отключается, автоматически изменяя таблицу ARP, чтобы добавить это:

arp --use-device --set <client 192.168... ip address> eth0 pub

Кажется, ничего из этого не работает. Единственная разница в том, что иногда я получаю следующее:

Pinging 10.177.129.10 with 32 bytes of data:
Request timed out.

и иногда получаю такое:

Pinging 10.177.129.10 with 32 bytes of data:
Reply from <server 2 ext ip>: Destination host unreachable.

в зависимости от того, какие варианты я пробую.

Однако я с болью осознаю, что из всей моей работы с таблицами firewall / arp, я не совсем понимаю, что я делаю, и это меня беспокоит. Мне также известно о неприятном ощущении, что я, должно быть, все перепробовал или что есть какая-то волшебная комбинация вышеперечисленных вещей, которую я еще не пробовал.

Не зная больше о специфике вашей IP-адресации, я бы предположил, что сервер 1 не знает, что ваша рабочая станция должна быть маршрутизирована через сервер 2.

Если вы добавите более подробную информацию о своей схеме IP-адресации, особенно в отношении IP-адреса, с которого, по-видимому, исходят HTTP-запросы с вашей рабочей станции, я мог бы расширить этот ответ.

Обновить: Лучшее предположение сервера 1 о том, как добраться до 192.168.0.234, - это маршрут по умолчанию, что неверно. Вам нужно добавить статический маршрут к 192.168.0.0/24 через сервер 2 на сервере 1.

route add -net 192.168.0.0 netmask 255.255.255.0 gw <server2>

Я делаю предположения о сети, назначенной pptpd. Кроме того, этот маршрут не выдержит перезагрузки, поэтому вы, вероятно, захотите добавить маршрут в файл конфигурации. Какой файл и какой синтаксис зависит от вашего дистрибутива.