Как туннелировать сетевой ресурс напрямую к хосту общего ресурса?
Я уже туннелировал смешанные клиенты linux и windows к "клиенту внутри брандмауэра" (который мог бы получить доступ к хосту общего ресурса), поэтому я знаю, что это, по крайней мере, возможно.
Но как насчет туннелирования напрямую от клиента к хосту сетевого ресурса?
Могу ли я заставить samba прослушивать порт, скажем, 5559 (просто пример), и принимать соединения только с локального хоста и туннелировать клиент 5559 на этот хост - так, чтобы клиент, кажется, подключался с локального хоста хоста? Я не могу понять, как это настроить. Пока что я настроил самбу:
hosts allow = 127.0.0.1 ::1 lo
interfaces = lo 127.0.0.1
bind interfaces only = yes
А я туннель от хозяина
ssh -R 5559:localhost:5559 shrusr@shrhost -Nf
Однако, если samba уже запущена, переадресация TCP завершится неудачно. Если туннель уже запущен, samba не может запуститься. Возможно ли то, что я пытаюсь достичь? Есть ли другой способ сделать это?
Кажется, что это должно работать - я могу даже netcat сам файлы через этот туннель SSH. Таким образом, у netcat нет проблем с прослушиванием того же порта, что и с ssh. Отказывается только smbd, а также блокирует ssh с этого порта, если запускается первым.
Любой совет будет принят во внимание.
1 ответ
Кажется, что это невозможно из-за туннелей SSH, представляющих "не широковещательный интерфейс", который Samba по своей конструкции не будет слушать.
Я смог обойти это, используя OpenVPN вместо туннеля SSH. Хотя устройство "tun" также является не вещательным интерфейсом, форма "tap" является широковещательным интерфейсом; Samba действительно будет слушать такой интерфейс.
Если бы только NFS был таким же способным, как Samba. Я хотел бы иметь и выбор интерфейса, и реальные разрешения Unix, но NFS слишком перегружен и плохо спроектирован, чтобы ограничиваться одним интерфейсом.