Сеть Туннелирует домашний сервер через выделенный IP-адрес аварийного переключения

Вы можете это сделать.

$ f() { This function does nothing. 2> /dev/null; }
$ f
$ type f
f is a function
f () 
{ 
    This function does nothing. 2> /dev/null
}
2
07.02.2017, 18:28
1 ответ

Ну, как обычно, когда мне задают каверзный вопрос, я могу ответить на него сам после целого дня работы.

Для сервера/шлюза

Предположим, что мой сервер по умолчанию (интерфейс и общедоступный IP-адрес) равен d.d.d.d для остальной части моего примера.

1) Получите IP-адрес аварийного переключения (дополнительный IP-адрес), для этого примера скажем, ffff
2) После получения добавьте этот IP-адрес в /etc/network/interfaces

auto eth0:0
iface eth0:0 inet static
address f.f.f.f
netmask 255.255.255.255
broadcast f.f.f.f

Затем примените изменения: /etc/init.d/networking restart

3) Настройте сервер openvpn. Существует множество руководств... Большинство из них по большей части ужасны. Единственный совет, который я могу дать, это начать с конфигураций по умолчанию, которые вы можете найти в справочных каталогах после установки openvpn. Итак, важные части конфигурации, необходимые для получения надлежащего сервера для нашей цели.
С моей стороны, файл конфигурации /etc/openvpn/servervpn.conf

# IP and protocols
local d.d.d.d # Listen to your default server IP
port 1194 # Default port, perfectly fine to me
proto udp # Heard there were issues with tcp
dev tap # Can use tun as well
# Certificates and encryption
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-auth ta.key 0
cipher AES-256-CBC
# Tunnel network
server 10.8.0.0 255.255.255.0 # I'm sticking to default range which is fine
comp-lzo
# DNS servers provided by opendns.com.
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
# Keepalive
keepalive 10 120
# Safety
user nobody
group nogroup
persist-key
persist-tun
# Logging
status openvpn-status.log
log-append /var/log/openvpn.log
verb 5
mute 20

Затем перезапустите службу с перезапуском systemctl (скрытый)
Если конфигурация не идеальна, то нет ошибок и нет ведения журнала предоставляются, так что удачи в поиске того, что не так.

4) Iptables Вам необходимо перенаправить трафик, поступающий в аварийное переключение, в VPN-туннель, а также ретранслировать пакеты VPN-клиента в сеть. Это та часть, которую было труднее всего найти... Так что надеюсь, вам понравится.
Замените ffff на ваш резервный IP-адрес, а 10.8.0.0/24 — это VPN-сеть по умолчанию, поэтому измените соответствующим образом, если не используете сеть по умолчанию.
Осторожно, последний IP-адрес — это IP-адрес моего VPN-клиента, он может измениться, но для меня это 10.8.0.4

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source f.f.f.f
iptables -t nat -A PREROUTING -d f.f.f.f -j DNAT --to-destination 10.8.0.4

Для стороны VPN-клиента (домашнего сервера)

1) Назначьте фиксированный IP-адрес вашему домашнему серверу с помощью назначения MAC-адреса, поэтому IP-адрес локального домашнего сервера для меня 192.168.1.2, но это не имеет большого значения. 2) Перенаправить порт 1194 udp (порт по умолчанию для OpenVPN, но вы можете использовать любой другой) на IP вашего локального сервера, в моем случае 192.168.1.2 3) Установите openvpn и подключитесь к вашему VPN-серверу. Много туториалов по этому поводу, но снова важные настройки в /etc/openvpn/client.conf для моего случая:

client
remote d.d.d.d 1194 # your server main/default IP
dev tap # can use tun as well
proto udp # tcp seems to have issues
remote my-server-1 1194
resolv-retry infinite
user nobody
group nogroup
# Try to preserve some state across restarts.
persist-key
persist-tun
# Certs
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
tls-auth ta.key 1
cipher AES-256-CBC # Might vary depending on how you set it
# Compression
comp-lzo
# Log verbosity
verb 3

Затем перезапустите клиент: systemctl restart (hidden)

Убедитесь, что ваш Политика брандмауэра настроена на прием всех (если только вы не знаете, что делаете), и вы должны быть готовы к работе.

Теперь он должен действовать так, как если бы ваш аварийный IP-адрес был IP-адресом вашего домашнего сервера, за исключением того, что вашим службам необходимо прослушивать IP-адрес VPN или 0.0.0.0.

Надеюсь, этот пост будет полезен другим.

Подсчитал необходимые iptables благодаря этой французской статье, так что спасибо им: http://www.guiguishow.info/2013/06/14/vpn-unipersonnel-avec-une-ip-failover-en -sortie-sur-un-dedie-ovh/

2
27.01.2020, 22:10

Теги

Похожие вопросы