Направление трафика в подсети VPC через OpenVPN позволяет подключаться к частному IP OpenVPN, но не к другим серверам.

Вопрос или проблема

Желаемый Результат

Здравствуйте, Server Fault.

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

Я использую диапазон 10.21.0.0/16 для VPC с четырьмя подсетями. Эти подсети используют

10.21.0.0/20, публичная, в us-west-2a
10.21.160.0/20, приватная, в us-west-2a
10.21.16.0/20, публичная, в us-west-2b
10.21.176.0/20, приватная, в us-west-2b

Я хотел бы, чтобы мой OpenVPN маршрутизировал трафик только в диапазон 10.21.0.0/16 (мы, вероятно, добавим больше подсетей позже) и не затрагивал трафик по другим маршрутам. Я также хотел бы, чтобы трафик исходил из VPN-ящика, чтобы мне нужно было открыть порты только для внутреннего трафика в VPC, а не для общего интернета. До сих пор я смог маршрутизировать трафик к приватному IP на VPN-ящике, но не к приватной тестовой машине.

Я думал, что использование опции push "route 10.21.0.0 255.255.0.0" в конфигурации сервера заставит клиентскую машину перенаправить все соединения через сервер OpenVPN, но, очевидно, это не работает, так что мне не хватает чего-то важного в моих шагах конфигурации или общих знаниях о сетях.

Я просто отмечу, что я довольно нов в настройке своих собственных VPN.

Схема VPC

Схема VPC

/etc/openvpn/server.conf

kamanda         10081/tcp                       # службы резервного копирования amanda (Kerberos)
port 1194
proto udp
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 10.21.0.2"
push "dhcp-option DNS 10.21.0.2"
push "route 10.21.0.0 255.255.0.0"
dh none
ecdh-curve prime256v1
tls-crypt tls-crypt.key
crl-verify crl.pem
ca ca.crt
cert server_QGf4vWpLakttzNwZ.crt
key server_QGf4vWpLakttzNwZ.key
auth SHA256
cipher AES-128-GCM
ncp-ciphers AES-128-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
client-config-dir /etc/openvpn/ccd
status /var/log/openvpn/status.log
verb 3

.ovpn файл

client
proto udp
explicit-exit-notify
remote {{ public ip }} 1194
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server_QGf4vWpLakttzNwZ name
auth SHA256
auth-nocache
cipher AES-128-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
ignore-unknown-option block-outside-dns
setenv opt block-outside-dns # Предотвращение утечки DNS в Windows 10
verb 3
<ca>
-----BEGIN CERTIFICATE-----
{{ cert }}
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
{{ cert }}
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN ENCRYPTED PRIVATE KEY-----
{{ cert }}
-----END ENCRYPTED PRIVATE KEY-----
</key>
<tls-crypt>
#
# 2048 битный статический ключ OpenVPN
#
-----BEGIN OpenVPN Static key V1-----
{{ cert }}
-----END OpenVPN Static key V1-----
</tls-crypt>

Доступ к приватному IP через VPN

% ssh  [email protected]
Добро пожаловать в Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-1016-aws aarch64)

 * Документация:  https://help.ubuntu.com
 * Управление:     https://landscape.canonical.com
 * Поддержка:        https://ubuntu.com/pro

Эта система была минимизирована путем удаления пакетов и контента, которые не требуются на системе, в которую пользователи не входят.

Чтобы восстановить этот контент, вы можете выполнить команду 'unminimize'.
Последний вход: Сб Окт  5 00:08:14 2024 с 10.8.0.2

Ответ или решение

Чтобы настроить маршрутизацию трафика в VPC через OpenVPN и обеспечить доступ к другим EC2-инстансам в вашей VPC, вам необходимо внести несколько изменений в конфигурацию OpenVPN и в настройки сети вашей VPC. Давайте рассмотрим шаги, которые помогут вам решить вашу проблему.

Шаг 1: Корректировка конфигурации OpenVPN

В вашем конфиге OpenVPN вы уже используете команду push "route 10.21.0.0 255.255.0.0". Это правильно, но кроме этого, необходимо удостовериться, что ваши клиенты правильно получают маршруты. Вы можете добавить следующие строки в конфигурационный файл сервера:

# Убедитесь, что маршрут также заносится в таблицу маршрутизации клиента
push "route 10.21.0.0 255.255.0.0"
# Установите удаленный хост на сервере OpenVPN
route 10.21.0.0 255.255.0.0

Шаг 2: Настройка таблицы маршрутов

Убедитесь, что ваш инстанс OpenVPN может маршрутизировать пакеты через другие подсети VPC. Вы можете выполнить следующие команды для настройки iptables:

# Разрешить перенаправление пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# Разрешить NAT для VPN-клиентов
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 10.21.0.0/16 -j MASQUERADE

Эти команды настраивают перенаправление и NAT для трафика, проходящего через интерфейс tun0.

Шаг 3: Настройки безопасности

Проверьте настройки групп безопасности (Security Groups) вашего EC2-инстанса с OpenVPN и другого EC2-инстанса, к которому вы хотите получить доступ:

  1. Группа безопасности OpenVPN:

    • Убедитесь, что открыты порт UDP 1194 для входящих соединений.
    • Добавьте правило, разрешающее входящие соединения от IP-адресов из диапазона VPN (например, 10.8.0.0/24) к частным IP-адресам на ваших других EC2-инстансах.
  2. Группа безопасности для второго инстанса:

    • Разрешите входящие соединения с диапазона VPN (например, 10.8.0.0/24) для необходимых портов, таких как SSH (22), если вы хотите подключаться через SSH.

Шаг 4: Проверка конфигурации клиента

Убедитесь, что ваш клиентский конфигурационный файл (.ovpn) настроен правильно и содержит следующие параметры:

# Убедитесь в наличии записи push для маршрута
push "route 10.21.0.0 255.255.0.0"
# Убедитесь, что указаны необходимые сертификаты и ключи
<ca>
...
</ca>
<cert>
...
</cert>
<key>
...
</key>

Шаг 5: Перезапуск OpenVPN и тестирование

После внесения всех изменений перезапустите OpenVPN на сервере:

sudo systemctl restart openvpn@server

Затем попробуйте подключиться снова через клиента VPN и проверьте возможность доступа к другим инстансам в вашей VPC с использованием команды:

ssh [email protected]<private-ip>

Заключение

Эти шаги должны помочь вам правильно настроить маршрутизацию трафика через OpenVPN к другим инстансам в вашей VPC. Если проблема остается, проверьте журналы OpenVPN для выявления дополнительных ошибок и уточните настройки маршрутизации и групп безопасности.

Оцените материал
Добавить комментарий

Капча загружается...