Я пытаюсь создать шлюз OpenVPN.отмойВПК->в the офиссеть. Я успешно настроил VPN-клиент на одном из моих экземпляров EC2 (назовем его «шлюз»), и теперь у него есть виртуальный VPN-интерфейс «tun0».
Теперь я хочу направить весь трафик, связанный с офисом (dst 172.20.0.0/16), с остальных экземпляров EC2 в VPC на сетевой интерфейс «шлюза» (10.0.0.100).
Я попробовал 2 разных подхода:
- добавить новое правило в соответствующую таблицу маршрутов AWS: 172.20.0.0/16 -> eni-XXX (где eni-XXX — идентификатор интерфейса «шлюза»);
- обновить таблицу маршрутизации EC2: route add -net 172.20.0.0 netmask 255.255.0.0 gw 10.0.0.100
Оба варианта, похоже, не увенчались успехом, поскольку запуск «tcpdump -i eth0 'src port not 22 and dst port not 22'» на шлюзе и curling/ping внутренних офисных IP-адресов ничего не показывают :(
Есть ли у кого-нибудь идеи, в чем дело? Или, может быть, есть готовое решение моей проблемы?
И второй вопрос. Как только я получу свой трафик на eth0 шлюза, я планирую перенаправить его в VPN-подключение с помощью следующих команд IpTables:
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i eth0 -s 10.0.0.0/16 -o tun0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Стоит ли ожидать каких-либо проблем здесь (кроме включения IP-переадресации)?
решение1
Ваш подход неоптимален. Вам следует использовать AWSВиртуальный частный шлюздля подключения вашего офиса к VPN, а не для подключения к VPN на одном экземпляре EC и попытки маршрутизации оттуда.
Попробуйте, документация хорошая, и если у вас возникнут проблемы, вам, вероятно, следует начать новый вопрос. Если вы не можете использовать это решение, вам следует отредактировать свой вопрос, включив больше подробностей о вашем варианте использования.
решение2
Итак, моя главная проблема была в AWS - он не позволяет маршрутизировать трафик между экземплярами EC2 по умолчанию. Чтобы исправить этот момент, нужно отключитьПроверка источника/адресадля вашего экземпляра "шлюза". После этого добавление маршрута в таблицу маршрутизации AWS, которая перенаправляет весь ваш офисный трафик на ваш экземпляр ec2 "шлюза" (например, 172.20.0.0/16 -> eni-XXX - где eni-XXX - это идентификатор интерфейса шлюза), работает нормально.
Что касается переадресации трафика с публичного сетевого интерфейса (eth0) на виртуальный сетевой интерфейс OpenVpn, iptables решает эту проблему очень просто:
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING --out-interface tun0 -j MASQUERADE
iptables -A FORWARD -i eth0 -s 10.0.0.0/16 -d 172.20.0.0/16 -o tun0 -j ACCEPT
где "10.0.0.0/16" — это подсеть VPC, а "172.20.0.0/16" — это офисная сеть. Плюс, конечно, включение IP-пересылки:
echo 1 > /proc/sys/net/ipv4/ip_forward
vim /etc/sysctl.conf <- net.ipv4.ip_forward = 1
Спасибо всем за ваши ответы.