Есть 2 сетевые карты, к которым подключены Сеть1 и Сеть2 с компьютерами имеющими одинаковые адреса. Такие компьютеры не могут быть одновременно доступны для обмена информацией, поэтому приходится делать выбор какие адреса оставить для обмена, добавляя соответствующие маршруты. Но попытаемся обойти это ограничение и на Интерфейсе1 между Сеть1 и нашим компьютером поставим роутер под Linux. Когда ему приходит пакет, например с диапазона 10.10.x.x (конфликтующий), он заменяет в поле адреса пакета 10.10.x.x, допустим, на 10.20.x.x (свободный не конфликтующий). Наш компьютер в результате думает, что ему пришел пакет из Сети1 с адресом отправителя 10.20.x.x. Он его обрабатывает и отсылает назад, а мы прописали в роутинг, что шлюз для 10.20.x.x - Интерфейс1 (Сеть1). Роутер на выходе ловит пакет и проводит над ним обратную операцию - заменяет 10.20.x.x на 10.10.x.x и шлет дальше в Сеть1. Т.е. мы делаем SNAT на роутере под linux, исключая конфликт адресов. Однако при заходе в Сети1 на DC++ хаб последний передает список всех присутствующих и их реальные IP адреса. И наш DC++ клиент будет пытаться соединиться именно с теми адресами, которые дал ему хаб, не производя замену. Для нормальной работы клиента требуется указать в свойствах хаба заменять IP адреса, которые он передает, на свои по определенному правилу: в данном примере 10.10.x.x на 10.20.x.x. Т.е. в свойствах хаба в разделе "Connection settings" в поле "VPN and networks config" добавить возможность указывать строки вида "conv1=10.10.0.0/16~10.20.0.0/16", "conv2=192.168.0.0/20~192.168.100.0/20" и т.д. для каждого конфликтующего диапазона. |