"Если вдруг открылся люк, не пугайся, это глюк!" (с) Если что-то работает не так, вы нашли ошибку или опечатку в программе — вам в этот раздел
ЕвгенийГуков
Здравствуйте.

Проблема проявляется при передачи файлов и работе с общими и личными папками на FTP-сервере MyChat. Проблему удалось локализовать.
У нас есть несколько удаленных клиентов, которые подключаются посредством программных VPN-клиентов к сети предприятия. Т.е. эти компьютеры имеют два сетевых интерфейса: реальный и VPN. Соответственно у них два IP адреса. MyChat на таких компьютерах подключается нормально, и переписка идет без проблем. Везде (на сервере MyChat и в клиентах MyChat) адрес этих компьютеров отображается правильно - адрес VPN-клиента. Но как только такому клиенту пытаются передать файл, то соединение не происходит, т.к. FTP пытается соединится по реальному IP сетевой карты, а он естественно недоступен. Тоже самое происходит и при подключении таких клиентов к общим папкам на FTP-сервере MyChat. Передача файлов в обратном направлении идет.

Мой компьютер
LAN IP: 192.168.0.50
(4.24 КБ) Скачиваний: 41


Проблемный компьютер
LAN IP: 192.168.1.53
VPN IP: 192.168.12.10
(2.94 КБ) Скачиваний: 42
Аватара пользователя
Алексей Пикуров
Добрый день, Евгений.

Я не понял, как устроена ваша сеть, можете пояснить подробнее, с примерами адресов?
MyChat на таких компьютерах подключается нормально, и переписка идет без проблем.

На какой IP соединяется MyChat клиент? Какие IP у вашего сервера MyChat?
ЕвгенийГуков
Главный офис сеть: 192.168.0.0/24
IP сервера MyChat: 192.168.0.8

Филиалы находятся в различных подсетях: 192.168.5.0/24, 192.168.6.0/24 и т.д.

Несколько магазинов подключены к центральному офису посредством программных VPN-клиентов. Это значит, что только конкретный компьютер имеет доступ в сеть главного офиса, и именно его мы "видим", а не всю подсеть магазина. Пример: локальная сеть магазина 192.168.1.0/24. Адрес сетевого интерфейса компьютера 192.168.1.53. В момент установления VPN-канала на компьютере появляется дополнительный виртуальный интерфейс с адресом 192.168.12.10. Вся связь идет через виртуальный интерфейс. Все работает: 1С, myChat-клиент (в режиме сообщений)... Только передача файлов не идет в направлении такого компьютера, т.к. FTP соединение пытается установиться с интерфейсом 192.168.1.53, вместо правильного 192.168.12.10
Аватара пользователя
Алексей Пикуров
Добрый день, Евгений. Первый день из отпуска, обязательно посмотрю и отвечу.
Аватара пользователя
Алексей Пикуров
Евгений, покажите пожалуйста список IP адресов клиента с помощью нашей утилиты GetLocalIP. Или ipconfig/all, что вам удобнее.

Также дайте лог клиента сразу после запуска (mcserv.log).
ЕвгенийГуков
Здравствуйте.

Утилита GetLocalIP дает результат:
192.168.1.53
192.168.12.10

Протокол mcserv.log:
[18.07.2017 09:45:45] [INFO] Application started. Version 6.1.0 / 09.06.2017, database version: 89
[18.07.2017 09:45:45] [INFO] OS version: Windows 7
[18.07.2017 09:45:46] [INFO] Local IP/MAC: 192.168.1.53; 00-00-00-00-00-00-00-00,00-00-00-00-00-00-00-E0,02-50-F2-5F-32-00,02-50-F2-A3-62-00,1C-6F-65-CC-4F-DC,20-41-53-59-4E-FF,60-E3-27-7E-87-A7,CC-4B-20-52-41-53
[18.07.2017 09:45:46] [INFO] Command line: "C:\Program Files\MyChat Client\mcclient.exe"
[18.07.2017 09:45:47] [INFO] Встроенный FTP запущен, заняты порты 10000 и 10001
[18.07.2017 09:45:47] [INFO] Загружен плагин "AntiCAPS", версия 1.4 от 29.07.2013, API 5.0
[18.07.2017 09:45:47] [INFO] Загружен плагин "Beeper", версия 1.6 от 29.07.2013, API 5.0
[18.07.2017 09:45:47] [INFO] Загружен плагин "VNCServer", версия 1.7 от 14.06.2017, API 5.0
[18.07.2017 09:45:47] [INFO] Поиск сервера MyChat...
[18.07.2017 09:45:47] [INFO] Подключение к серверу (IP mychat.nelva.local, порт 2004)...
[18.07.2017 09:45:51] [INFO] Cryptographic library version: OpenSSL 1.0.2a 19 Mar 2015
[18.07.2017 09:45:51] [INFO] SSL/TLS version: TLSv1.2
Welcome to -=MyChat=- Server
Copyright (c) 2004-2014 by Alexey Pikurov / Network Software Solutions
WWW: https://nsoft-s.com
E-Mail: [email protected]
Support https://nsoft-s.com/forum
Blog: http://blog.nsoft-s.com
[18.07.2017 09:45:51/09:45:52] [INFO] Авторизация...
[18.07.2017 09:45:51/09:45:52] [OK] Авторизация прошла успешно, UIN 120
Вложения
(1.55 КБ) Скачиваний: 38
GetLoalIP.png
GetLoalIP.png (71.15 КБ) Просмотров: 1113
ЕвгенийГуков
Здравствуйте.

Прошло 2,5 месяца, а воз и ныне там [smilie=cray.gif]
Перевел компанию на версию клиента MyChat 6.3.0 в надежде, что проблему пофиксили. Но увы - попытка исправить проблему передачи фалов была, но неудачная. А теперь по-порядку.

Еще раз напоминаю вам ситуацию. У нас есть удаленные подразделения, которые работают через программный VPN клиент. У этих компьютеров два IP адреса:
1. Адрес реальной сетевой карты.
2. Адрес виртуального адаптера VPN-канала.

Теперь передать файл такие клиенты уже могут, спасибо. Соединение происходит между правильными IP. А передать файл им по прежнему невозможно. Почему FTP-клиент пытается соединится на оба доступных IP? Это не правильно!

Удаленный компьютер:
LAN IP: 192.168.9.10
VPN IP: 192.168.4.10

Мой компьютер:
LAN IP: 192.168.0.50

При попытке передать файл с 192.168.0.50 на 192.168.4.10 соединение пытается установиться на оба IP.
[08.09.2017 09:53:40] Trying connect to IP 192.168.4.10, port 10000
[08.09.2017 09:53:40] Trying connect to IP 192.168.9.10, port 10000
[08.09.2017 09:53:40] Connect to IP 192.168.4.10, port 10000 OK
[08.09.2017 09:53:40] Connect to IP 192.168.9.10, port 10000 OK

Но почему вы считаете, что адрес 192.168.9.10 не будет отвечать? И клиент выберет тот адрес, который ответит. Этот адрес тоже существует, и принадлежит другой подсети, где также запущен клиент MyChat!!!

P.S. Самое интересное, что передача файла методом Drag&Drop происходит. Используется другой механизм передачи?


Screen.png
Screen.png (37.37 КБ) Просмотров: 1053
Вложения
(2.45 КБ) Скачиваний: 42
(1.03 КБ) Скачиваний: 40
Аватара пользователя
Андрей Раков
Добрый день.

1) Удачная передача файлов — в данном случае файлы были залиты на сервер (http/https) и опубликованы в чат как ссылка для скачивания файла.

2) Неудачная передача — возникла при попытке отправить файл напрямую между двумя пользователями, но ничего не получится, так как они находятся в разных подсетях. Встроенный в клиент FTP не подходит для такой передачи, так как на шлюзе или компьютере, где объединяются подсети нет проброски портов для передачи файлов. Дополнительно для такой передачи еще нужно в клиенте указывать ip шлюза или компьютера, где объединяются подсети, так как ftp работает в пассивном режиме.
ЕвгенийГуков
Здравствуйте.

Интересно. Значит при передаче файла напрямую между двумя компьютерами в одном направлении проблем с маршрутизацией не возникает, а в другом направлении уже мешает пассивный протокол FTP!

Проброс портов нужен только когда используется технология NAT. У нас маршрутизация полноценная, как в оборудовании интернет-провайдеров. Там даже понятие "проброс" отсутствует. У вас же не возникает проблем с пассивным протоколом FTP, при подключении к хостеру?!

Заметьте передача файла идет в направлении от компьютера с двумя интерфейсами к компьютеру с одним интерфейсом. А в обратном направлении - нет! При установке FTP соединения между компьютерами вам надо "сообщить" (или клиент должен сам "взять") адрес удаленного компьютера от сервера MyChat. Сервер сообщает правильный адрес:

Сервер.png
Сервер.png (29.89 КБ) Просмотров: 1029


Prop.png
Prop.png (41.69 КБ) Просмотров: 1029


А если пытаться установить соединение на адрес локального интерфейса (даже "на всякий случай"), то ничего из этого путного не получиться. Так как этот адрес существует в другой подсети. На этом адресе работает другой клиент MyChat, и он не ожидает соединения!
Аватара пользователя
Алексей Пикуров
Евгений, 192.168.4.10 — это локальный адрес сетевого интерфейса пользователя? Судя по вашим сообщениям — нет. Соответственно, FTP сервер MyChat Client его использовать не может.

Позвоните мне чатом или скайпом, я вижу недопонимание принципов работы FTP. Могу пояснить голосом. Мы не можем сделать магию и заставить работать FTP между двумя разными подсетями в автоматическом режиме. FTP протокол для этого не предназначен.

Ваш пример с FTP сервером хостера, работающим в пассивном режиме — некорректен. Он всегда знает свой внешний IP и уже статично настроен, как нужно. В MyChat соединение всегда динамическое. Сервер не знает своего внешнего IP шлюза, никто маршрутизацию на шлюзах настраивать не будет, потому что она меняется и слишком сложна. Почитайте про принципы работы FTP в пассивном режиме, думаю, вопросы отпадут.
У нас маршрутизация полноценная, как в оборудовании интернет-провайдеров.

Непонятно. Что такое полноценная маршрутизация?

Вставляйте файлы через сервер, для этого уже есть инструмент. Работает по http/https, быстро и надёжно.
ЕвгенийГуков
Евгений, 192.168.4.10 — это локальный адрес сетевого интерфейса пользователя?

Да. Это один из адресов локальных интерфейсов компьютера. Для любого ПО - это 2-я сетевая плата на компьютере!

Я не беспокоил людей на реальном компьютере, но у меня стоит тоже самое VPN-образующее ПО. Вот скриншот.
cmd.png
cmd.png (49.75 КБ) Просмотров: 1024

, где
1. Реальный адаптер
Ethernet adapter Подключение по локальной сети:
IPv4-адрес. . . . . . . . . . . . : 192.168.0.50

2. Виртуальный адаптер
Ethernet adapter Подключение по локальной сети 2:
IPv4-адрес. . . . . . . . . . . . : 192.168.11.1
Аватара пользователя
Алексей Пикуров
После нашего с вами разговора появилась идея. Можно расширить протокол FTP специальной командой для проверки соединения. Это custom-команда, нестандартная, но нам в данной ситуации и не требуется поддержка сторонних FTP клиентов.

Отпишу в этой теме, чуть позже, что из этого получилось.
Аватара пользователя
Алексей Пикуров
Сделали доработку, попробуйте заменить mclient.exe на двух компьютерах, где у вас возникает проблема (версия 6.3).

Отпишите, что получилось.
ЕвгенийГуков
Здравствуйте.

Извините, что не сразу ответил. После телефонной беседы перестал отслеживать переписку.
Ваше решение помогло. Все стало работать. Спасибо.
Аватара пользователя
Алексей Пикуров
Отличная новость! Ожидайте релиза.
ЕвгенийГуков
Здравствуйте.

Извиняюсь еще раз, но я провел не "чистый" эксперимент. Я установил новую версию клиента только к себе на адрес 192.168.0.50, а на компьютере с двумя интерфейсами осталась старая версия. Передача файлов стала работать с адреса 192.168.0.50 на 192.168.4.10

Сегодня до меня дошло, и я установил на оба компьютера новую версию myChat 6.3.0.24. Проверил. Как и раньше файлы нормально передаются в направлении 192.168.4.10 -> 192.168.0.50, а в обратном направлении нет. Но поведение клиента изменилось. Ранее появлялось сообщение пропущено файлов: 1. А сейчас просто сообщение "Отправлен запрос на передачу файлов", а затем "*** Пользователь прервал передачу файлов" по тайм-ауту.
Аватара пользователя
Алексей Пикуров
Здравствуйте :)

Позвоните мне чатом, покажете.