Назад | Перейти на главную страницу

Как подключиться к клиентам OpenVPN от "участников" локальной сети

Работая над вещами типа IoT, я хочу подключить некоторые устройства «в дикой природе» к серверам в AWS через OpenVPN на экземпляре EC2.

Пока мне удалось настроить экземпляр EC2, настроенный как сервер OpenVPN, и у меня есть клиентские устройства, успешно подключающиеся к VPN. Все это было настроено с помощью этого руководства - https://www.digitalocean.com/community/tutorials/how-to-setup-and-configure-an-openvpn-server-on-centos-6

Клиенты OpenVPN получают IP-адреса 10.8.0.x и могут общаться друг с другом через эти IP-адреса. Я также могу разговаривать с этими IP-адресами с самого сервера OpenVPN. Все идет нормально.

У меня также есть другие экземпляры EC2 на AWS в том же VPC и подсети, что и сервер OpenVPN. Эти экземпляры в настоящее время не могут связаться с клиентами OpenVPN через их IP-адрес 10.8.0.x. Клиенты OpenVPN могут подключаться к экземплярам по IP-адресам своей частной подсети (10.101.x.x), но они представляют себя только с IP-адресом сервера OpenVPN.

Как мне это сделать, чтобы:

A. Включите экземпляры EC2 для отправки сообщений на отдельные клиентские устройства OpenVPN (возможно, через их адреса OpenVPN, но другие варианты приветствуются).

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

редактировать

Устройства находятся в разных географических точках, а не в одной локальной сети, каждое из которых подключается через 3G / 4G. Каждое устройство должно отправлять сообщения всем экземплярам EC2, а каждому экземпляру EC2 необходимо отправлять сообщения на некоторые из устройств.

            /- AWS VPC & public subnet ----------------\
            |                                          |
deviceA ----+-\                       /-- ec2_A        |
10.8.0.a    | |                       |   10.101.0.a   |
_______     | >- OpenVPN server ------<                |
            | |  10.8.0.1 / 10.101.0.x |               |
deviceB ----+-/                       \-- ec2_B        |
10.8.0.b    |                             10.101.0.b   |
            \------------------------------------------/

A. Включите экземпляры EC2 для отправки сообщений на отдельные клиентские устройства OpenVPN (возможно, через их адреса OpenVPN, но другие варианты приветствуются).

Я не совсем понимаю, в чем заключается ваша идея. Прежде всего, вам необходимо разрешить обмен данными внутри вашей сети в AWS. Если 10.101.x. IP-адреса частных подсетей экземпляров, что такое 10.10.0.x?

Кроме того, какие маршруты настроены в ваших экземплярах EC2? ip route скажу тебе. Им необходимо знать, к кому обращаться (в данном случае к вашему серверу OpenVPN), чтобы связаться с клиентами (10.8.0.x): ip route add 10.8.0.0/24 via $vpn_ip (с $ vpn_ip «известный» IP-адрес сервера OpenVPN для экземпляров EC2, 10.10.0.?).

Если экземпляры EC2 должны иметь возможность положить начало соединения с конкретными пользователями, они должны знать об этих пользователях (например, у кого какой IP), в противном случае пользователи должны начать соединение.

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

Экземпляры EC2 будут видеть внутренние IP-адреса ваших пользователей (10.8.0.x) и связывать их с пользователями (сертификатами) с ipp.txt (файлом состояния) на сервере openVPN или зная статические IP-адреса.

Вы могли бы использовать client-config-dir в конфигурации сервера OpenVPN, чтобы указать специфические для пользователя директивы (например, статические IP-адреса, которые известны вашим экземплярам EC2), но это, вероятно, было бы плохим решением, если бы у вас было много клиентов.