Как туннелировать сетевой ресурс напрямую на хост хоста?

385
user41010

Я уже туннелировал смешанные клиенты linux и windows к «клиенту внутри брандмауэра» (который мог получить доступ к хосту общего ресурса), поэтому я знаю, что это, по крайней мере, возможно.

Но как насчет туннелирования напрямую от клиента к хосту сетевого ресурса?

Могу ли я заставить samba прослушивать порт, скажем, 5559 (просто пример), и принимать соединения только от localhost и туннелировать клиент 5559 на этот хост - так, чтобы клиент, казалось, подключался с localhost хоста? Я не могу понять, как это настроить. Пока что я настроил самбу:

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 с этого порта, если запускается первым.

Любой совет будет принят во внимание.

0
Могу ли я что-нибудь сделать, чтобы получить ответ? user41010 7 лет назад 0

1 ответ на вопрос

0
user41010

Кажется, что это невозможно, из-за туннелей SSH, представляющих «не вещательный интерфейс», который Samba по своей конструкции не будет слушать.

Я смог обойти это, используя OpenVPN вместо туннеля SSH. Хотя устройство «tun» также является не вещательным интерфейсом, форма «tap» является широковещательным интерфейсом; Самба действительно будет слушать такой интерфейс.

Если бы только NFS был таким же способным, как Samba. Мне бы хотелось иметь и выбор интерфейса, и реальные разрешения Unix, но NFS слишком перегружена и плохо спроектирована, чтобы ограничиваться одним интерфейсом.