Как смонтировать общий ресурс 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, а эта функция доступна в бесплатной версии этого инструмента.