Как смонтировать общий ресурс samba на нестандартный порт?

Брандмауэр в моей сети отбрасывает все пакеты через TCP-порты 139 и 445. Поэтому все общие папки samba не работают вне локальной сети.

Я попытался позволить демону samba прослушивать нестандартный порт. Этот метод хорошо работает для Linux, потому что оба smbclient а также smbmount имеет возможность установить порт сервера. Но на окнах я не могу найти подобный вариант.

Поддерживает ли Windows монтирование общих ресурсов smb на нестандартные порты? Сторонние программы также приемлемы.


Редактировать:

\\hostname:port\share в проводнике Windows не работает. Странно, я вижу, что соединение установлено на сервере. Но Windows постоянно говорит мне, что сервер не может быть достигнут. Он не работает даже в локальной сети со стандартным портом 445, и в этом случае путь без номера порта будет проходить.

4 ответа

Это возможно! Прошло несколько лет, но, объединив найденное мной руководство по интерфейсу обратной связи с частями ответа @Mike [..link-only] (многохостовая версия), я создал сценарий, который может сделать это за вас.

Вы можете использовать это после запускаInstall-Module -Name LoopbackAdapter -MinimumVersion 1.2.0.0в терминале администратора (не забудьте указать источник сценария, чтобы вы могли его вызвать).

      Create-Host -Name bob -Ip 10.254.0.1 -Dest ipOfHostname -Port port

который [после перезагрузки] позволит вам перейти на (поддельный IP-адрес 10.254.0.1), который привязан к вашему «имени хоста: порту» из вашего вопроса.
Это будет сохраняться во время загрузки, и вам не нужно будет повторно запускать его, если исходный сервер отключается или отключается; демонтаж - это так же просто, какRetire-Host -Name bob.

Это просто, одна команда, программная, без диалоговых окон настроек графического интерфейса и Windows ; но не стесняйтесь следовать инструкциям ниже вручную.


Объяснение:

Используйте для связи поддельного IP-адреса с вашим SMB-сервером. Это сделает нестандартный порт доступным для одного из проводников.

      #it's important IP's are used here, not hostnames
netsh `
    interface portproxy `
    add       v4tov4 `
    listenaddress=<#fakeIP#> `
    listenport=445 `
    connectaddress=<#serverIP#> `
    connectport=<#serverPort#>

При желании добавьте IP в свой%windir%\System32\drivers\etc\hostsфайл, поэтому вам не нужно запоминать этот IP-адрес (например, взаимодействовать с\\bobвместо\\10.254.0.1).

Используйте DevCon для создания сетевого адаптера с обратной связью. В этой «сети» будет размещаться IP-адрес.

      $interface = New-LoopbackAdapter -Name <#NAME#>

Отключите конфликтующие/неиспользуемые службы, которые ломают разные вещи.

      $interface `
| Disable-NetAdapterBinding `
    -ComponentID ms_msclient,ms_pacer,ms_server,ms_lltdio,ms_rspndr

$interface `
| Set-DnsClient `
    -RegisterThisConnectionsAddress $False `
    -PassThru `
| Set-NetIPInterface `
    -InterfaceMetric '254' `
    -WeakHostSend    Enabled `
    -WeakHostReceive Enabled `
    -Dhcp Disabled

Установите IP-адрес, по которому ваша машина будет доступна в этой «сети».

      $interface `
| New-NetIPAddress `
    -IPAddress     <#fakeIP#> `
    -PrefixLength  32 `
    -AddressFamily IPv4

Сделанный! После перезагрузки переадресация будет подключена, и вы сможете получить к ней доступ, пока ваш компьютер имеет доступ к удаленному порту. Настройка не исчезнет, ​​пока вы не снесете ее вручную.


Стоит отметить, что я пересылаю только на 445 (а на самом деле с 445, используяssh -Lтуннелирование к машине в сети, которую мой компьютер не видит напрямую), но это будет просто изменение/дополнениеnetsh portproxyпри необходимости поменять/добавить эквивалент 139.

Для устранения неполадок вы можете проверить, что Windows пытается переслать, используя

      netsh interface portproxy show v4tov4

успешно ли это прослушивается на устройстве обратной связи

      netstat -an | sls ':445'

и если сервер вашего удаленного компьютера принимает соединения

      Test-NetConnection -ComputerName <#serverIP#> -Port <#serverPort#>

наконец-то все собралось воедино (и, возможно, это какая-то проблема с учетными данными)

      Test-NetConnection -ComputerName <#fakeIP#> -Port 445

К сожалению, это невозможно, поскольку Windows поддерживает только порты 445 и 139.

Вы можете использовать туннелирование по ssh. Вот ссылка с использованием Windows и Linux: https://www.ocf.berkeley.edu/~xuanluo/sshproxywin.html

Для тех, кто все еще ищет способ смонтировать SMB-ресурсы на нестандартный порт, вот отличная статья о том, как это сделать. я лично ставилstunnelдля обертывания трафика SMB с помощью SSL, поскольку я получаю доступ к своим общим ресурсам SMB удаленно через Интернет. Работает как шарм.

Если сторонние инструменты подходят и вам нужно только получить доступ к общему ресурсу SMB, а не смонтировать его к букве диска, инструмент Owlfiles выполнит эту работу. Здесь вы можете ввести другой номер порта для доступа к общим ресурсам SMB.

Я начал использовать его при туннелировании SMB через SSH, поэтому мне не нужно настраивать адаптер обратной связи.

Инструмент доступен в магазине MS Store, а эта функция доступна в бесплатной версии этого инструмента.

Другие вопросы по тегам