У меня есть выделенный сервер, который я арендую в OVH, и у меня назначено /27 IP-адресов. На всех моих серверах установлен Debian 8, и я хотел бы использовать VPN (OpenVPN) для маршрутизации некоторых общедоступных IP-адресов в другое удаленное местоположение через VPN. Я знаю, что могу просто пересылать пакеты с использованием iptables
на IP-адрес VPN-клиента, но я не об этом. Я хотел бы использовать свои IP-адреса OVH на своем удаленном сервере, в настройках, использующих контейнеры, чтобы каждый контейнер мог иметь свой собственный (защищенный от DDoS) IP-адрес OVH, и в контейнере было бы показано, что у него есть IP-адрес OVH, а не частный IP-адрес. Возможно ли это, и если да, то как?
2 ответа
Это возможно с использованием интерфейса tap0 в openvpn.
Мне удалось выполнить то, что я попросил, поэтому я опубликую ответ для других.
Моя машина OVH имеет один назначенный IP-адрес в другой подсети, чем мои дополнительные распределения IP-адресов.
OVH: основной ip (158.69.1.18) OVH: дополнительная подсеть: 192.99.1.208-223
Сервер2: 72.34.43.34
Начните с выполнения инструкций по адресу: https://openvpn.net/index.php/open-source/documentation/howto.html#install.
Установите openvpn и создайте ваши ключи. Создайте ключи для клиента сервера 2/vpn и скопируйте их на сервер 2 в папке /etc /openvpn (или там, где вы хотите)
Найдите файл конфигурации сервера, упомянутый в приведенном выше URL-адресе, и скопируйте его из исходного расположения в /etc/openvpn/server.conf на своем сервере vpn.
Убедитесь, что он имеет следующие настройки:
dev tap0
server-bridge 10.8.0.0 255.255.255.0 10.8.0.5 10.8.0.5
push "redirect-gateway def1 bypass-dhcp"
client-to-client
Оставьте все остальное по умолчанию. 10.8.0.5 10.8.0.5 сделайте так, чтобы в его пуле было только 1 локальный ip. Это для VPN с 1 клиентом, соединенным мостом. Возможно, вам придется изменить это, но, вероятно, не будет
Настройте конфигурацию на вашем клиентском сервере
client
dev tap0
proto udp
remote 158.69.1.18 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
comp-lzo
verb 3
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client1.crt
key /etc/openvpn/client1.key # This file should be kept
Запустите сервер и клиент.
Создайте мост на вашем ovh сервере
brctl addbr br0
brctl addif br0 tap0
brctl addif br0 eth0 (main ethernet interface)
Добавьте ip к вашему устройству крана и мосту
ip addr add 18.8.0.1 dev tap0
ip addr add 10.8.0.2 dev br0
route add -net 10.8.0.0/24 dev br0
Если ваш основной ip не находится в подсети распределения ip, добавьте ip из этой подсети в ваш мост. Если это так, пропустите это.
ip addr add 192.99.1.208 dev br0
Добавьте ip к вашему интерфейсу tap0 на клиенте vpn
ip addr add 10.8.0.6 dev tap0
Добавьте ваш OVH IP в интерфейс крана на клиенте vpn
ip addr add 192.99.1.210 dev tap0
Добавить шлюз по умолчанию к tap0
route add default gw 192.99.1.208 dev tap0
Войдите в OVH или SYS и перейдите туда, где вы управляете своими ip-адресами, выберите ip и создайте для него виртуальный mac, затем дождитесь появления mac и установите этот mac-адрес в качестве mac вашего интерфейса tap0 на вашем vpn-клиенте.
ifconfig tap0 hw ether 02:00:00:xx:yy:zz
Теперь ваш OVH IP должен работать на вашем VPN-клиенте.
Вы должны быть в состоянии сделать это, используя интерфейс TAP в OpenVPN - то есть соединить 2 сети вместе, но это может показаться медленным, подверженным ошибкам и вообще ужасным способом сделать это.
Альтернативой было бы разбить ваши /27 на 2/28 и направить один из /28 к удаленному месту. Это потеряло бы немало IP-адресов, но обеспечило бы приличную логическую структуру, которую вы можете использовать с интерфейсом TUN и некоторыми командами маршрутизации в вашей конфигурации.
Тем не менее, и, возможно, неправильные предположения о типе трафика, который вы планируете использовать, использование какого-либо балансировщика нагрузки (даже грубого, такого как iptables) - лучший способ сделать что-то подобное в 99 раз из 100.