От сайта к сайту Azure VPN с основанным на Linux маршрутизатором для образования моста портов VPN к серверу RRAS при хранении NAT для другого трафика

Я пытаюсь получить Azure От сайта к сайту VPN и работающий использующий RRAS, но потребовать, чтобы справка, настраивающая iptables моего маршрутизатора, соединила мостом порты VPN и протоколы к серверу RRAS, не используя NAT, все еще позволяя NAT использоваться для всего другого трафика.

Я смог настроить Azure и VM правильно, и я могу разбудить соединение и работающий с данными, текущими через ссылку (и показанный на портале Azure, как соединено с данными, идущими обоими путями). Однако соединение, которое настраивается, не применимо, я не могу проверить с помощью ping-запросов или, казаться, делаю любую форму соединения между Azure VM's и моими локальными машинами.

Я полагаю, что это происходит из-за От сайта к сайту Azure VPN, требующая, чтобы локальный шлюз VPN был подключен непосредственно к Интернету, не проходя брандмауэр NAT (который я должен использовать, поскольку это - моя домашняя широкополосная связь поэтому, только имеют один IP), поэтому, в то время как соединение может быть установлено, NAT на моем маршрутизаторе изменяет пакеты способом, который означает, что они неспособны быть направленными правильно однажды достижение сервера RRAS.

Я попробовал альтернативный От сайта к сайту решения VPN (OpenVPN, SoftEther, сам RRAS), но ни один не работает правильно весь показ той же проблемы, посредством чего два VM's, размещающие соединение VPN, могут соединиться со всем, и мои серверы домашней сети могут быть правильно направлены для соединения со стороной Azure, но я верю любому из-за ограничений на Azure VM's (только адаптер единой сети и никакая способность включить неразборчивый режим) или сама виртуальная сеть Azure, это не означает никакую другую Azure, которую VM может подключить к моей домашней сети несмотря на добавление в статических маршрутах для движения через сервер VPN или добавление его как дополнительный шлюз.

Я использую маршрутизатор RT-AC68U Asus, выполняющий последнюю сборку Merlin, таким образом, я надеюсь, что могу использовать Azure От сайта к сайту VPN путем изменения, это - правила iptables и конфигурация сети следующим образом:

  • При оставлении существующей iptables конфигурации в основном нетронутой, таким образом, NAT может продолжить использоваться, чтобы позволить моим другим локальным серверам и рабочим станциям продолжать соединяться с Интернетом или передавать порты им.
  • RRAS VM в моей домашней сети имеет два сетевых адаптера, один с частным IP, в настоящее время другой имеет частный IP, но это было бы изменено, чтобы быть моим общедоступным IP согласно рекомендациям Microsoft.
  • Наконец, и первая часть не знает, как выполнить, для определенных портов VPN, и протоколы (UDP 500, UDP 4500, UDP 1701 и ESP (протокол № 50)), чтобы быть исключенными из NAT и быть соединенными мостом непосредственно к сетевому адаптеру на VM, настроенном теперь, устанавливают с общедоступным IP моей домашней сети.

Сеть в настоящее время похожа на это:

VM's Azure - 192.168.1.0/25, шлюз VPN с помощью динамической маршрутизации с общедоступным IP.

Домашняя сеть 192.168.0.0/24:

Модем VDSL <-мост PPPOE так Маршрутизатор имеет общедоступный IP-> Маршрутизатор Asus <-NAT-> 192.168.0.0.24

Таким образом, это - то, что я пытаюсь получить к так RRAS, имеет общедоступный IP в целях VPN только:

  • Модем VDSL <-мост PPPOE так Маршрутизатор имеет общедоступный IP-> Маршрутизатор Asus
    • <-Мост для портов VPN и протокола-> MAC-адрес общедоступного адаптера VM RRAS
    • <-NAT для всего остального-> 192.168.0.0/24

Я открыт для других предложений для получения От сайта к сайту работа VPN, если существует простое решение.

[обновите 1]

Я в настоящее время думаю о следующем, я дал RRAS Hyper-V VM дополнительный сетевой адаптер и присвоил его VLAN 635, неразборчивый режим включен, если по некоторым причинам он хочет измениться, это - MAC-адрес. Я затем отключил все объекты соединения кроме двух объектов Обнаружения топологии Канального уровня и IPv4.

Я присвоил настройкам IPv4 общедоступный IP-адрес, маску подсети 255.255.255.255 и шлюз, который является тем же шлюзом ppp0 адаптера в маршрутизаторе.

Я выполнил следование маршрутизатора, чтобы попытаться направить любой трафик, пытающийся связываться со шлюзом VPN Azure через к VLAN, и таким образом надо надеяться, позволяющий это быть направленным, не используя NAT:

/usr/sbin/ip link add link br0 name br0.635 type vlan id 635
/usr/sbin/ip link set dev br0.635 up

/usr/sbin/iptables -I INPUT -i br0.635 -j ACCEPT
/usr/sbin/iptables -I FORWARD -i ppp0 -o br0.635 -s <azure gateway IP> -j ACCEPT
/usr/sbin/iptables -I FORWARD -i br0.635 -o ppp0 -d <azure gateway IP> -j ACCEPT
/usr/sbin/iptables -I FORWARD -i ppp0 -o br0.635 -s <ppp0's gateway> -j ACCEPT
/usr/sbin/iptables -I FORWARD -i br0.635 -o ppp0 -d <ppp0's gateway> -j ACCEPT

К сожалению, это не работает и при попытке соединиться в RRAS, он говорит мне, что удаленный сервер не отвечает.

3
задан 12 September 2014 в 21:38
1 ответ

Итак, мне удалось выяснить это после долгих поисков, я могу использовать встроенную функциональность Azure Site-to-Site VPN с OpenSwan, которая работает на компьютере с Linux ( Raspberry Pi / Arch Linux) за NAT-маршрутизатором моей домашней сети.

Топология сети:

  • 192.168.0.0/24 - Домашняя сеть
  • 192.168.1.0/24 - Сеть Azure
  • 192.168.0.1 - Домашний маршрутизатор частный IP
  • 192.168.0.2 - Linux-сервер, действующий как VPN-сервер и шлюз домашней сети

Сначала я настроил Azure с:

  • Это обычная удаленная сеть
  • Моя локальная сеть с VPN-адресом в качестве моего общедоступный IP-адрес
  • Включил флажок Site-to-Site в сети Azure, связывающей его с моей локальной сетью
  • Создан статический шлюз, поэтому используется IKEv1

На маршрутизаторе моей домашней сети я перенаправил следующее к моему шлюзу Linux, на котором запущен Openswan (192.168.0.2):

  • UDP 500
  • UDP 4500
  • Протокол 50 (GRE)

Мой ipsec.conf выглядит так:

version 2.0

config setup
    nat_traversal=yes
    virtual_private=%4:192.168.0.0/24
    protostack=auto
    interfaces="ipsec0=eth0"

conn azure
    authby=secret
    auto=start
    type=tunnel
    left=192.168.0.2
    leftsubnet=192.168.0.0/24
    leftnexthop=192.168.0.1
    right=<azure's VPN gateway IP>
    rightsubnet=192.168.1.0/24
    ike=3des-sha1-modp1024,aes128-sha1-modp1024
    esp=3des-sha1,aes128-sha1
    pfs=no

ipsec.secrets:

192.168.0.2 <azure vpn gateway> : PSK "Azure's PSK"

Это привело к подключению nd запущен, чтобы разрешить маршрутизацию между сайтами (в обе стороны после большого разочарования):

/etc/sysctl.conf:

net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1

Сценарий bash, который запускается при загрузке, чтобы «ipsec verify» был доволен:

#!/bin/bash

for vpn in /proc/sys/net/ipv4/conf/*; do
    echo 0 > $vpn/accept_redirects;
    echo 0 > $vpn/send_redirects;
done

sysctl -p

Наконец мои правила iptables, которые потребовали наибольшего количества возни:

таблица фильтров, это позволяет домашней сети подключаться к Azure и позволяет установить соединение, но виртуальные машины Azure по-прежнему не могут подключиться к серверам домашней сети:

-A FORWARD -s 192.168.1.0/24 -m policy --dir in --pol ipsec -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -m policy --dir out --pol ipsec -j ACCEPT
-A INPUT -p udp -m udp --dport 500 -j ACCEPT
-A INPUT -p udp -m udp --dport 4500 -j ACCEPT
-A INPUT -m policy --dir in --pol ipsec -j ACCEPT
-A INPUT -p esp -j ACCEPT

nat table, это позволяет виртуальным машинам Azure подключаться к любой машине в моей домашней сети:

-A PREROUTING -i eth0 -p udp -m udp --dport 4500 -j DNAT --to-destination <azure public vpn ip>:4500
-A PREROUTING -i eth0 -p udp -m udp --dport 500 -j DNAT --to-destination <azure public vpn ip>:500
-A POSTROUTING -o eth0 -j MASQUERADE

При этом я могу пинговать и общаться в обоих направлениях, все виртуальные машины Azure могут видеть мою домашнюю сеть, все машины домашней сети могут см. мою виртуальную машину Azure.

Сторона Azure маршрутизирует правильно сама по себе, для моей домашней сети я настроил статический маршрут в моем маршрутизаторе для отправки 192.168.1.0/24 на 192.168.0.2, но для тестирования на своей машине я только что создал статический маршрут:

route -p ADD 192.168.1.0 MASK 255.255.255.0 192.168.0.2 METRIC 100

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

5
ответ дан 3 December 2019 в 05:42

Теги

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