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