Туннелирование публичного IP на удаленный компьютер

У меня есть сервер Linux A с блоком из 5 общедоступных IP-адресов, 8.8.8.122/29, В настоящее время, 8.8.8.122 назначен на eth0, а также 8.8.8.123 назначен на eth0:1,

У меня есть другая машина Linux B в удаленном месте, за NAT. Я хотел бы настроить туннель между ними, чтобы B мог использовать IP-адрес 8.8.8.123 в качестве основного IP-адреса.

OpenVPN, вероятно, ответ, но я не могу понять, как это настроить (topology subnet или же topology p2p может быть уместным. Или я должен использовать мост Ethernet?). Безопасность и шифрование не являются большой проблемой на этом этапе, поэтому GRE также будет в порядке - компьютер B будет исходить с известного IP-адреса и может быть аутентифицирован на основании этого.

Как я могу это сделать? Кто-нибудь может предложить конфигурацию OpenVPN или какой-то другой подход, который может работать в этой ситуации? В идеале, он также сможет обрабатывать несколько клиентов (например, обмениваться всеми четырьмя запасными IP-адресами с другими машинами), не позволяя этим клиентам использовать IP-адреса, на которые у них нет прав.

2 ответа

Решение

Я закончил тем, что пошел с мостом Ethernet. Множество невероятно подробных примеров, чтобы пройти через онлайн, но это оказывается довольно легко:

Сначала на А, /etc/network/interfaces был изменен с:

auto eth0
iface eth0 inet static
    address 8.8.8.122
    netmask 255.255.255.248
    gateway 8.8.8.121

чтобы:

auto br0
iface br0 inet static
    address 8.8.8.122
    netmask 255.255.255.248
    gateway 8.8.8.121
    pre-up openvpn --mktun --dev tap0
    bridge_ports eth0 tap0
    bridge_fd 3

для того, чтобы соединить eth0 (настоящий интерфейс WAN) с tap0 (новый туннельный интерфейс) при загрузке.

Затем на A запустите сервер openvpn с:

openvpn --dev tap0

На B подключитесь к нему с помощью:

openvpn --remote 8.8.8.122 --dev tap0 --route-gateway 8.8.8.121 \
        --redirect-gateway def1 --ifconfig 8.8.8.123 255.255.255.248

Это супер простая конфигурация, которую я искал, и она работает - B теперь общедоступен в 8.8.8.123, и исходящие соединения происходят с того же адреса.

Добавить безопасность (--secret, --tls-serverи т. д.) по мере необходимости, конечно.

Я думаю, тебе будет тяжело. Большинству брандмауэров будет трудно маршрутизировать трафик OpenVPN, если обе стороны VPN находятся в одной подсети.

Если вы пытаетесь маршрутизировать для общего доступа, я бы переместил оба сервера в разные подсети с ваших публичных адресов, а затем использовал бы виртуальные IP-адреса (от 1 до 1 Nat) для их соединения. Чтобы соединить два сайта, OpenVPN будет работать или туннель IP-Sec.

Виртуальные IP-адреса: http://doc.pfsense.org/index.php/What_are_Virtual_IP_Addresses%3F

Сайт на сайт: http://doc.pfsense.org/index.php/VPN_Capability_IPsec

Редактировать на основе комментариев:

Я лично установил бы pfSense на коробке A и дал бы порт, который вы хотели для его WAN. Затем настройте сервер OpenVPN в локальной подсети (которая готова к работе в веб-интерфейсе pfSense) и настройте другой компьютер с виртуальным IP-адресом, указанным на его локальный IP-адрес OpenVPN. Это даст вам возможность для дальнейшего расширения (добавьте больше машин с виртуальными IP-адресами, логически перенаправляйте определенные порты на разные серверы, действительно установите полноценную настройку LAN/WAN/DMZ с OpenVPN для виртуального доступа. Не говоря уже о том, что у вас будет полноценный маршрутизатор, так что он, вероятно, будет более безопасным.

Другие вопросы по тегам