Я пытаюсь подключиться к удаленному серверу с использованием определенного локального интерфейса. Мои журналы говорят мне, что все работает по назначению, но при проверке с помощью netstat каждое соединение использует интерфейс по умолчанию.Mono Socket. Перед подключением к конкретному интерфейсу
Я использую следующий код для привязки TcpClient к конкретной локальной конечной точке
Console.WriteLine("Binding to {0}", connectionArgs.LocalBindingInterface.ToString());
client = new TcpClient(connectionArgs.LocalBindingInterface);
Console.WriteLine("Bound to {0}", client.Client.LocalEndPoint.ToString());
Где connectionArgs.LocalBindingInterface приведен IPEndPoint определяется как такие
IPEndPoint[] localEndPoints = new IPEndPoint[2];
localEndPoints[0] = new IPEndPoint(IPAddress.Parse("192.168.0.99"), 0);
localEndPoints[1] = new IPEndPoint(IPAddress.Parse("192.168.0.100"), 0);
IP-адрес, перечисленный здесь а не фактические адреса.
Когда я просматриваю журналы, это информация я
Binding to 192.168.0.99:0
Bound to 192.168.0.99:59252
Binding to 192.168.0.100:0
Bound to 192.168.0.100:53527
Но когда я netstat -n -p --tcp -a
я получаю
tcp 0 0 192.168.0.98:39948 remote_addr_here:443 ESTABLISHED 17857/mono
tcp 0 0 192.168.0.98:60009 remote_addr_here:443 ESTABLISHED 17857/mono
Очевидно что-то здесь не так. Ни один из портов, ни интерфейсы не совпадают. Netstat запускается как sudo, поэтому я не могу предположить, что это неправильно. Я также попытался вручную создать сокет, вызвать его метод привязки и установить свойство TcpClient Client
связанного вручную сокета, но я получаю тот же результат.
Есть ли что-то, что я делаю неправильно здесь? Есть ли другой способ заставить Socket использовать определенный локальный конечный пункт в моно?
Я бег этого приложения, как не суперпользователь, моно --version является Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-4ubuntu1.1)
, убунт версия сервера является Ubuntu 14.04.3 LTS
Edit 1:
Добавлена дополнительным протоколирование вызовов после вызова TcpClient.Connect()
Binding to 192.168.0.100:59000
Bound to 192.168.0.100:59000
After connect bound to 192.168.0.98:55484
Ну, это не то, что я надеялся услышать. К счастью, похоже, что на удаленном сервере имеется несколько IP-адресов, поэтому я могу просто использовать таблицу маршрутизации. Я буду ждать один-два дня (надеюсь), однако, ответы. – logisticalerror