Підключення до сервера лише для IPv6 за допомогою WinSCP


2

Деякі члени сім'ї попросили мене допомогти налаштувати 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 за замовчуванням.)


Ви можете хоч pingхозяїна через Тередо? (Зауважте, що Microsoft дуже близький до відключення своїх послуг Teredo, і багато провайдерів вже відключили свої реле.)
grawity

@grawity ping -6 hostname.example.netна машині Windows також стверджує could not find host. ping -6 2600::каже Request timed out.. З адреси IPv6 я бачу, що використовується сервер Teredo 157.56.106.189. Якщо я налаштую машину Ubuntu на використання 157.56.106.189підключення до сервера Teredo, він все ще працює з машини Ubuntu. Тож Ubuntu та Windows в одній локальній мережі, використовуючи один і той же сервер Teredo, намагаючись пінг одного і того ж IPv6-адреси, працює на Ubuntu і не працює в Windows.
kasperd

@grawity Якби я знав, як переключити сервер Teredo на Windows, я б спробував інший сервер Teredo. Зрештою, Тередо не є вимогою, він, як відомо, є єдиним протоколом, який я знаю, що дозволяє клієнтові, що стоїть на NAT-єдиному IPv4, спілкуватися з сервером, призначеним лише для IPv6, без тунелювання через третю сторону.
kasperd

Але ... Тередо робить тунель через третю сторону ... (Сервер "управління" може змінюватися через netsh interface ipv6 teredo set …припущення, що ви можете знайти робочий сервер. Я думаю, що Remlab все ще працює на одному. Я думаю, що фактичні реле даних вибирає той самий сервер .)
grawity

@grawity Teredo проходить лише через сторонніх тунелів, якщо у вас немає власного реле. Ось чому я спеціально зазначив, що сервери, призначені лише для IPv6, знаходяться в локальній мережі з виділеним реле Teredo. Таким чином, у моєму випадку немає тунелю через сторону. І сервер Remlab все ще існує. Це той, який Ubuntu використовує за замовчуванням. Однак вибір сервера Teredo не повинен змінити значення. Реле не вибирає сервер Teredo. Це реальний хост IPv6, який обирає тереле-реле для використання.
kasperd

Відповіді:


1

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

Підключення IPv6 працює до тих пір, поки не вказана чітка адреса.

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

У моєму випадку сервери мають статичні адреси IPv6 (принаймні на той час, поки вони залишаються у поточного провайдера). Тому статична IPv6-адреса в збережених логінах WinSCP не є основною проблемою.


Це рішення спрацювало, коли я його спочатку налаштував. Однак відтоді вона перестала працювати. Я підозрюю, що Microsoft зламала це, натиснувши оновлення на Windows або змінивши конфігурацію серверів Teredo, якими користується клієнт у Windows.
kasperd

1

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

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

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

На жаль, не існує офіційної документації для цього налаштування .


Я можу вирішити спробувати це пізніше. Але поки що я вважаю за краще не проводити загальносистемних змін. Зокрема, я стурбований будь-яким додатком, який, можливо, віддасть перевагу Teredo над IPv4, якби я застосував запропоновані вами зміни. Якби я міг увімкнути його лише для WinSCP і залишити його відключеним для решти системи, я б хотів. Було б ще краще, якби я зміг налаштувати його таким чином, що він використовує запис AAAA лише тоді, коли запит A дає відповідь, що вказує, що домен існує, але не має запису A.
kasperd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.