Итак, вот настройка сети:
+
+--------+ +--------+ +--------+ | +--------+ +--------+ +--------+
| Client | | Client | | Client | | | Client | | Client | | Client |
+--------+ +--------+ +--------+ | +--------+ +--------+ +--------+
| | | | | | |
| | | | | | |
| v | | | v |
+----------->+------------+<--+ | +----------->+------------+<--+
|VPS Instance| | |VPS Instance|
+------------+------------+ | +------------+
| ^ | ^
| | | |
| | +----------> |
| | +----------> |
| | +----------> Now a persistant two way connection
| Initial Conn. | |
| | | for tunneling client connections back
| | | |
| For setting up a|tunnel/reverse proxy.| to the home server.
| | | |
| | | |
HS Inaccessibible | | |
| | | |
| | | |
v ISP Firewall/NAT | | ISP Firewall/NAT |
+----------------------------|------+ | +----------------------------|------+
| | | | | | |
| +-------------+---+ | | | +-------------+<--+ |
| | Home Server | | | | | Home Server | |
| +-------------+ | | | +-------------+ |
+-----------------------------------+ + +-----------------------------------+
Это также, в основном, объясняет, чего я хочу достичь. У меня есть недоступный сервер, который я хочу сделать доступным путем туннелирования трафика на доступный сервер. Поскольку один из серверов недоступен, туннель не может быть пассивным; это должно быть активное соединение, инициированное недоступным.
Как это может быть сделано? Есть ли способ сделать это с помощью iptables
и некоторой комбинации туннельных интерфейсов?
Некоторый основной поиск приводит меня к обратным SSH-туннелям, туннельным интерфейсам (по общему признанию, я не мог найти доступную документацию по более высокоуровневому обзору, который был слишком высокого уровня) и программному обеспечению VPN.
Обратный SSH-туннель кажется ненужным, поскольку его не нужно защищать, и процесс, выполняющийся на сервере, уже будет достаточно ресурсоемким, и я не хочу обременять его шифрованием и сжатием.
Туннельные интерфейсы: я действительно не мог найти достаточно доступную и низкоуровневую документацию, которая имела бы ту форму, которую я хотел, находясь в точке, я бы это понял.
Программное обеспечение VPN раскрывает всю сеть (верно?), В то время как я действительно хочу только перенаправить выбранные порты. И, честно говоря, это кажется сложным большую часть времени.
Теперь я нашел программу для этого (PortFusion), но у меня просто не было возможности проверить ее производительность. Кроме того, я чувствую, что должен быть собственный способ сделать это в Linux, я просто не могу найти результаты для этого.