Подключение к серверу только для IPv6 с помощью WinSCP

1417
kasperd

Некоторые члены семьи попросили меня помочь с настройкой WinSCP. Они должны подключаться к нескольким серверам, некоторые из которых являются двойным стеком, а некоторые - только для IPv6.

Мы до сих пор сделали следующее:

  • Установите WinSCP с https://winscp.net/
  • Создана пара ключей
  • Сохранены разные комбинации имени хоста и имени пользователя в Loginокне.

Это прекрасно работает для подключения к хостам с двумя стеками. Но попытка подключиться к любому хосту, поддерживающему только IPv6, приводит к сообщению об ошибке:

Host "hostname.example.net" does not exist. 

Но имя хоста, которое я использую, является правильным. Для дальнейшего исследования я подключил компьютер с Ubuntu 14.04 к той же локальной сети. И на машине Ubuntu я печатаю:

ssh hostname.example.net 

Машина Ubuntu без проблем подключается к одному и тому же имени хоста.

Я посмотрел на конфигурацию сети, и на обеих машинах я наблюдаю то же самое:

  • Беспроводной интерфейс имеет адрес IPv4
  • Беспроводной интерфейс не имеет адреса IPv6
  • Существует интерфейс Teredo, который успешно получил правильный адрес IPv6

Серверы только для IPv6, к которым нам нужно подключиться, находятся в локальной сети с выделенным ретранслятором Teredo, поэтому должно быть возможно надежное соединение, и оно действительно работает от клиента Ubuntu.

Что нам нужно изменить в конфигурации Windows и / или WinSCP, чтобы успешно подключиться к хосту, поддерживающему только IPv6?

(Teredo не является обязательным требованием, если есть лучшие альтернативы. По умолчанию это единственный IPv6-адрес, настроенный на компьютере Windows по умолчанию.)

2
Можете ли вы хотя бы "пинговать" хост через Teredo? _ (Обратите внимание, что Microsoft очень близка к закрытию своих служб Teredo, и многие провайдеры уже отключили свои реле.) _ grawity 8 лет назад 0
@grawity `ping -6 hostname.example.net` на машине с Windows также утверждает, что` не может найти хост`. `ping -6 2600 ::` говорит `Время запроса истекло. Из адреса IPv6 я вижу, что используемый сервер Teredo - `157.56.106.189`. Если я настрою машину Ubuntu для использования `157.56.106.189`, так как подключение к серверу Teredo все еще работает с машины Ubuntu. Таким образом, Ubuntu и Windows в одной локальной сети, использующие один и тот же сервер Teredo, пытающийся пропинговать один и тот же IPv6-адрес, работают в Ubuntu и не работают в Windows. kasperd 8 лет назад 0
@grawity Если бы я знал, как переключать сервер Teredo в Windows, я бы попробовал другой сервер Teredo. В конечном счете, Teredo не является обязательным требованием, это просто единственный протокол, который я знаю, позволяющий клиенту за NAT только для IPv4 обмениваться данными с сервером только для IPv6 без туннелирования через сторонние устройства. kasperd 8 лет назад 0
Но ... Teredo * делает * туннелирование через сторонних разработчиков ... («Управляющий» сервер можно изменить с помощью «netsh interface ipv6 teredo set»), предполагая, что вы можете найти работающий сервер. Я думаю, что Remlab все еще работает. Я думаю, фактические реле данных выбираются одним и тем же сервером.) grawity 8 лет назад 0
@grawity Teredo только туннелирует через третьих лиц, если у вас нет собственного реле. Вот почему я специально упомянул, что серверы только для IPv6 находятся в локальной сети с выделенным ретранслятором Teredo. Таким образом, в моем случае нет туннеля через третье лицо. И сервер Remlab все еще существует. Это то, что Ubuntu использует по умолчанию. Однако выбор сервера Teredo не должен иметь значения. Это не сервер Teredo, который выбирает реле. Это собственный хост IPv6, который выбирает, какое реле Teredo использовать. kasperd 8 лет назад 0
@grawity При доступе к `test-ipv6.com` с компьютеров под управлением Windows удается отобразить IPv6-адрес, назначенный интерфейсу Teredo. И, глядя на результаты отдельных тестов, я вижу, что использование DNS не удается, но доступ к IPv6-адресам без использования DNS успешен. Так что, возможно, это возможный обходной путь. kasperd 8 лет назад 0

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

1
kasperd

Проблема заключалась в том, что Windows не предпринимала попыток поиска AAAA, возможно потому, что не считается целесообразным выполнять поиск AAAA, когда единственным адресом IPv6 является адрес Teredo.

Подключение IPv6 работает до тех пор, пока указан явный адрес.

Поэтому мне удалось получить подключение, заменив имя в поле имени хоста фактическим IPv6-адресом сервера. После этого WinSCP смог подключиться.

В моем случае серверы имеют статические адреса IPv6 (по крайней мере, до тех пор, пока они остаются у текущего поставщика). Поэтому наличие статического IPv6-адреса в сохраненных логинах WinSCP не является большой проблемой.

Это решение работало, когда я изначально его настраивал. Однако с тех пор он перестал работать. Я подозреваю, что Microsoft сломала его, либо установив обновление для Windows, либо изменив конфигурацию серверов Teredo, используемых клиентом в Windows. kasperd 6 лет назад 0
1
Bob

Как описано в технической заметке Microsoft ( http://technet.microsoft.com/en-us/library/bb727035.aspx ), клиент Windows Vista или Windows 7 не будет запрашивать у DNS адрес IPv6 (запрашивать имя DNS для записи AAAA), если единственными локальными интерфейсами IPv6 являются локальные каналы и интерфейсы Teredo . Другими словами, хотя Teredo может быть включен в большом количестве конечных систем, которые подключены к Интернету и расположены за NAT, такие системы не будут вызывать Teredo для доступа к URL-адресу только для IPv6 при обычном ходе событий, поскольку они не будут запросите DNS для использования IPv6-адреса.

Джефф Хьюстон, Тестирование Тередо

Однако, по-видимому, возможно изменить это поведение. В вашем любимом редакторе реестра перейдите к ключу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Dnscache\Parametersи добавьте значение DWORD, AddrConfigControlустановленное в 0.

К сожалению, официальная документация по этому параметру отсутствует .

Я могу решить попробовать это позже. Но сейчас я бы предпочел не выполнять общесистемные изменения. В частности, меня беспокоит любое приложение, которое, возможно, предпочло бы Teredo, а не IPv4, если бы я применил предложенное вами изменение. Если бы я мог включить его только для WinSCP и оставить его отключенным для остальной системы, я бы сделал это. Было бы еще лучше, если бы я мог настроить его так, чтобы он использовал запись AAAA только тогда, когда запрос A дает ответ, указывающий, что домен существует, но не имеет записи A. kasperd 7 лет назад 0