Я хочу перенаправить порт с моего Raspberry Pi на сервер, доступный через VPN. Я также хочу видеть IP-адрес клиента с сервера.
Настройка выглядит примерно так:
LAN VPN
Real Client | <----> | Raspberry Pi | <----> |Server |
192.168.1.7 | |192.168.1.8 / 10.8.0.2 | | 10.8.0.1 |
______________| |_________________________| |____________|
Таким образом, клиент должен иметь возможность, например, подключиться через HTTP через порт 80 к raspberry pi на 192.168.1.8. Там пакет должен быть направлен через VPN на сервер (10.8.0.1). Сервер должен увидеть, что соединение исходит с 192.168.1.7.
Как я могу сделать что-то подобное? Я уже пробовал DNAT:
iptables -A PREROUTING -t nat -i eth0 -d 192.168.1.8 -p tcp --dport 80 -j DNAT --to-destination 10.8.0.1:80
iptables -A FORWARD -p tcp -d 192.168.1.8 --dport 80 -j ACCEPT
Но это не работает. Я только получаю Failed to connect to 192.168.1.8 port 80: Connection refused
Вам нужно использовать обычную IP-маршрутизацию на Raspberry Pi вместо любого NAT.
Для этого необходимо настроить правильные таблицы маршрутизации на шлюзовых устройствах, чтобы они знали, куда должны быть отправлены пакеты в другую сеть.
Например, вам нужно добавить маршрут к серверу, где вы говорите, что сеть 192.168.1.0/24 должна быть маршрутизирована через 10.8.0.2.
На стороне клиента такие дополнения могут не понадобиться, если Raspberry Pi является шлюзом по умолчанию для Real Client. Если шлюз по умолчанию другой, то вам нужно добавить маршрут к 10.8.0.0/24 через 192.168.1.8.