Как настроить проброс портов через сеть NAT в системе?

Как настроить подключение к удаленному хосту через порт SSH, учитывая два хоста за серыми IP-адресами в NAT-сети (один на Archlinux для подключения и другой на Android/Archlinux для доступа), а также наличие VPS с белым IP-адресом на Ubuntu 20.04 и Keenetic с KeenDNS. Требуется минимизировать потребление трафика из-за использования мобильных операторов у обоих хостов, при условии, что невозможно использовать нативный IPv6.
  • 4 февраля 2024 г. 4:58
Ответы на вопрос 2
Для решения вашей задачи можно использовать несколько подходов. Рассмотрим наиболее распространённые.

### Использование VPS как SSH Jump Server

1. **Настройка SSH на VPS**
   - Убедитесь, что на VPS, который будет использоваться как промежуточный сервер, установлен и настроен SSH сервер.
   - Откройте SSH порт (по умолчанию 22, который можно изменить для увеличения безопасности) в firewall.

2. **SSH-туннелирование**
   - Используйте reverse SSH tunneling для проброса порта с хоста за NAT на VPS. Зайдите на хост, который у вас находится за NAT (допустим, это хост на Archlinux), и пробросьте его SSH порт на локальный порт VPS:
     ```sh
     ssh -R [VPS_LOCAL_PORT]:localhost:22 [VPS_USER]@[VPS_IP]
     ```
     Здесь `[VPS_LOCAL_PORT]` - локальный порт на VPS, который будет прослушивать подключения; `[VPS_USER]` - имя пользователя на VPS; `[VPS_IP]` - внешний IP адресс VPS.

3. **Подключение к удаленному хосту**
   - Теперь, когда туннель установлен, вы можете подключиться через VPS к вашему хосту, выполнив следующую команду с хоста Archlinux или любого другого места:
     ```sh
     ssh -p [VPS_LOCAL_PORT] [VPS_USER]@[VPS_IP]
     ```
     SSH клиент подключится к VPS, а VPS перенаправит этот запрос на ваш внутренний хост посредством установленного туннеля.

### Использование Keenetic с KeenDNS для проброса портов

тический способ настройки роутера Keenetic с KeenDNS для проброса портов зависит от модели роутера и прошивки.

1. **Настройка Keenetic для доступа к устройству за NAT**
   - Войдите в панель управления Keenetic и настройте проброс порта (Port Forwarding) с внешнего порта на IP-адрес и порт устройства внутри вашей сети.

2. **Подключение через KeenDNS**
   - Если у вас есть активный KeenDNS сервис, вы разрешаете доступ извне к вашему домашнему сетевому устройству, используя DNS имя, предоставленное Keenetic.

Этот способ обычно требует, чтобы устройство, к которому вы пытаетесь получить доступ, было подключено напрямую к Keenetic роутеру или находилось в его сети, и что Keenetic имел доступ к интернету через белый IP-адрес.

### Минимизация потребления трафика

1. **Сжатие данных**
   - Включите сжатие данных при туннелировании SSH для экономии трафика. Используйте флаг `-C` в команде SSH:
     ```sh
     ssh -C -R [VPS_LOCAL_PORT]:localhost:22 [VPS_USER]@[VPS_IP]
     ```

2. **Keep-alive сообщения**
   - Настройте keep-alive сообщения в файле `/etc/ssh/ssh_config` на клиенте и `/etc/ssh/sshd_config` на сервере, чтобы поддерживать соединение активным, минимизируя необходимость периодического пересоздания туннелей (что тратит дополнительный трафик).

3. **Выключение неиспользованных
И в чём сложность настроить впн-туннель через VPS, выдать хосту статический адрес и пробросить нужный порт на него? Кинетик вообще необязательно использовать, если есть возможность поднять впн прямо с хоста.
Похожие вопросы