2

В настоящее время у меня дома есть модем DSL со статическим IP-адресом (скажем, 77.77.77.77).
Этот модем подключен к беспроводному маршрутизатору, к которому подключено несколько машин.

Для простоты, теперь я называю сеть за 77.77.77.77 home-net

Моя цель - иметь возможность ssh к любой машине за home-net не прибегая к уродливой port-forwarding и сопоставлениям портов.

Для реализации этого мой план:

  • Добавить запись 77.77.77.77 home-net в hosts на любой машине, с которой я хочу ssh
  • Настройка port-forwarding на маршрутизаторе home-net для DNS-запросов
  • Компьютер (в той же сети), на котором запущено bind получает эти DNS-запросы и разрешает их по IP-адресам локальной сети.

Я не совсем понимаю, как это реализовать ..Я надеюсь, что DNS-запрос будет отправлен в home-net запросом рассматриваемой системы (пример pc1), которая будет перенаправлена на машину, на которой запущен bind , которая разрешит это для некоторого IP- адреса локальной сети.Я не уверен, что этого достаточно, чтобы решить проблему, хотя ..

Я еще не смог реализовать или протестировать это ..К сожалению, настройка DNS-сервера с использованием bind кажется гораздо более сложной, чем я предполагал.

Мои вопросы:

  • Можно ли использовать этот один статический IP-адрес для ssh на любой машине в home-net без port-forwarding?
    • Пример ssh usr1@pc1.home-net и ssh usr2@pc2.home-net (оба порта по умолчанию 22)?
  • Будет ли эта установка даже работать?
  • Есть ли более простой способ сделать это?

4 ответа4

7

Все в вашем вопросе совершенно неправильно.

Моя цель - иметь возможность подключиться к любой машине за домашней сетью, не прибегая к уродливой переадресации портов и сопоставлениям портов.

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

Но есть еще один способ, который я опишу ниже.

Для реализации этого мой план:

  • Добавить запись 77.77.77.77 home-net в хосты на любой машине, с которой я хочу ssh
  • Настройка переадресации портов на маршрутизаторе home-net для DNS-запросов
  • Машина (в той же сети), на которой запущен bind, получает эти DNS-запросы и разрешает их по IP-адресу локальной сети, если вы

Вот все, что не так с вышесказанным.

  • Ваш файл /etc/hosts используется для разрешения DNS только в этой локальной системе. Это не имеет ничего общего с любой другой системой. Другие системы не могут добраться до этого файла.
  • Вы можете перенести пересылку 53 на работающую bind в вашей сети. Он может даже вернуть IP-адреса локальной сети, как вы описываете. Проблема в том, что эти IP-адреса локальной сети не принесут вам пользы за пределами вашей сети, если только они не назначены Интернет-провайдером. Вы не можете подключиться к ним извне. Упрощение много - в основном, IP-адреса в 192.168.Диапазон XX является частным диапазоном и не может быть направлен в общедоступный Интернет.

Теперь еще не все потеряно. Если вы хотите создать путь в свою сеть извне, это возможно, и способ сделать это - через VPN. OpenVPN может сделать это, и это стоит посмотреть.

Краткий обзор, чтобы вы начали исследования:

  • Вы можете настроить сервер OpenVPN в системе вашей сети и открыть для него порт. Настройте это как "мостовой" VPN на Linux-блоке в той же подсети, в которой находится ваша домашняя сеть (обычно 192.168.1.0/24, проверьте ваш маршрутизатор.) Вам нужно будет найти динамического DNS-провайдера, такого как DynDNS или EasyDNS, а также настроить ddclient .
  • Затем вам нужно будет настроить клиент OpenVPN на ноутбуке или другой системе, к которой вы будете подключаться извне.
  • Когда вы запускаете клиент OpenVPN, вы будете подключены к домашней сети через VPN. Вы даже получите IP с вашего домашнего роутера.
5

Если я правильно понимаю предложенное вами решение, ответ - нет, это не сработает, если вы не перенесете ssh. Даже если у вас есть IP-адреса домашней сети, они будут недоступны с точки зрения внешнего клиента, потому что они не являются публично маршрутизируемыми адресами. Ваш клиент может отформатировать пакет с IP-адресом домашней сети в качестве пункта назначения, но первый маршрутизатор, к которому он подключен, отбросит его.

DNS на самом деле не имеет ничего общего с проблемой или ее решением, но учтите, что вы не можете установить DNS-серверы для конкретного домена в большинстве клиентских ОС, поэтому клиент должен быть настроен на использование экземпляра привязки home-nets для всех запросы, а не только для адресов домашней сети.

В конце концов, вам все еще нужно переадресовать порты для каждой машины, к которой вы хотите подключиться по ssh, иначе вы не сможете подключиться.

Если вы можете получить DNS-регистрацию, вы можете создать субдомены и указать им разные правила переадресации портов на вашем маршрутизаторе (каждый из которых ведет вас на другой хост), но для этого все равно потребуется одно правило переадресации портов для каждого хоста, который вы планируете присоединиться.

Рассмотрите возможность создания одного сервера, на котором вы используете ssh, а затем оттуда ssh на другие внутренние серверы. Этого нельзя достичь без пересылки tcp22 на этот сервер через маршрутизатор или установки его в качестве хоста DMZ, куда будет направляться весь незапрошенный трафик, который не соответствует правилу пересылки. Обязательно заприте его, если вы воспользуетесь этим подходом.

1

Скрыть уродство в конфигурации ssh на клиенте с помощью ProxyCommand .

Для этого требуется, чтобы один ssh, перенаправленный через порт, действовал как "прокси". Пример конфигурации клиента ssh для одного из ваших домашних серверов:

$ cat ~/.ssh/config
Host friendlyname1 friendlyname2  # optional
Hostname 10.10.10.10              # ip of home server
# works best if you configure ssh keys authentication to user@77.77.77.77
ProxyCommand ssh -W %h:%p user@77.77.77.77

Теперь ssh root@friendlyname1 или ssh root@10.10.10.10 будут работать. За кулисами ssh клиент сначала подключится к user@77.77.77.77 и оттуда к 10.10.10.10

0

Не могли бы вы просто настроить домашний DNS-сервер и затем сделать несколько записей SRV:

$ORIGIN home-pc.net.
@           SOA etc... etc...
...
_ssh._tcp   SRV 1 0 22 server1.home-pc.net.
            SRV 2 0 22 server2.home-pc.net.
            SRV 3 0 22 server3.home-pc.net.
            SRV 4 0 22 server4.home-pc.net.

или я до сих пор не понимаю, как работают записи SRV? :П

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .