- Вопрос или проблема
- Желаемый Результат
- Схема VPC
- /etc/openvpn/server.conf
- .ovpn файл
- Доступ к приватному IP через VPN
- Ответ или решение
- Шаг 1: Корректировка конфигурации OpenVPN
- Шаг 2: Настройка таблицы маршрутов
- Шаг 3: Настройки безопасности
- Шаг 4: Проверка конфигурации клиента
- Шаг 5: Перезапуск 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
/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-инстанса, к которому вы хотите получить доступ:
-
Группа безопасности OpenVPN:
- Убедитесь, что открыты порт UDP 1194 для входящих соединений.
- Добавьте правило, разрешающее входящие соединения от IP-адресов из диапазона VPN (например, 10.8.0.0/24) к частным IP-адресам на ваших других EC2-инстансах.
-
Группа безопасности для второго инстанса:
- Разрешите входящие соединения с диапазона 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 для выявления дополнительных ошибок и уточните настройки маршрутизации и групп безопасности.