Работая над вещами типа 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), но это, вероятно, было бы плохим решением, если бы у вас было много клиентов.