Вот базовая схема того, что я пытаюсь сделать:
Клиент (любая машина) ---> VPN-клиент (Raspberry Pi) ---> OpenVPN-сервер ---> Интернет
VPN-клиент (Rpi) может использовать ненадежную сеть, но в этом случае я хотел бы перенаправить весь трафик из Интернета на порт 4443 обратно клиенту, чтобы клиент ответил.
У меня все остальное работает нормально — клиент подключается к Pi и успешно становится частью VPN, которую я создал, но я никак не могу понять обратный путь.
Спасибо!
решение1
Мне не хватает некоторой информации, чтобы конкретно ответить на ваш вопрос, но я постараюсь разобраться в некоторых вещах, чтобы помочь вам в дальнейшем.
[...] Я хотел бы перенаправить весь трафик из Интернета через порт 4443 обратно клиенту, чтобы клиент ответил.
Вы не можете пересылать другие данные на порт, на котором нет подходящего сервиса для этих данных.
VPN работает, создавая виртуальную сеть, которая включает виртуальные сетевые интерфейсы. Для работы виртуального сетевого интерфейса должно быть запущено программное обеспечение VPN (клиент или сервер). Когда программное обеспечение VPN получает данные/пакеты от виртуального сетевого интерфейса, данные переупаковываются и традиционно шифруются, а затем передаются физической сетью, и наоборот, когда данные принимаются.
Physical Ethernet
это WAN-интерфейсы.
Благодаря характеристикам VPN вы получили две сети. Физическую и виртуальную, каждая со своим IP-адресом. С этими сетями вы можете делать все обычные вещи, которые вы можете делать с сетью.
Клиент (любая машина) ---> VPN-клиент (Raspberry Pi) ---> OpenVPN-сервер ---> Интернет
И Physical Ethernet
— Physical Ethernet 0
это интерфейс wan. Это Physical Ethernet 1
для подключения к Client (machine)
.
Я предполагаю, что вы используете кабель Ethernet для подключения Client (machine)
к VPN Client (Raspberry Pi)
, и у вас есть iptables на Raspberry Pi...
Чтобы настроить переадресацию NAT между двумя сетями Physical Ethernet 1
, Virtuel Ethernet
я предполагаю, что Physical Ethernet 1
имеет имя eth0, а Virtuel Ethernet
имеет имя tun0.
# Set default policies
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# NAT
iptables -A POSTROUTING -o tun0 -j MASQUERADE # Enable NAT
# Forwarding
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT # Allow forwarding from client to vpn
iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT # Allow forwarding from client to client
iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT # Allow forwarding from vpn to client, for already established connections
Смотрите такжеКак настроить простой маршрутизатор с iptables в Ubuntu
Я не знаю, какую ОС вы используете на машине с VPN-сервером. Поэтому я не могу вдаваться в подробности о том, как перенаправить NAT...
решение2
Я действительно это понял!
Я написал целый пост о том, как это сделать -https://virtualprivatepi.com/diy/