Это кажется невозможным.
SSH .NET всегда выполняет DNS-локальное разрешение :
var ip = DnsAbstraction.GetHostAddresses(ConnectionInfo.Host)[0];
// Send address type and address
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
SocketWriteByte(0x01);
var address = ip.GetAddressBytes();
SocketAbstraction.Send(_socket, address);
}
else if (ip.AddressFamily == AddressFamily.InterNetworkV6)
{
SocketWriteByte(0x04);
var address = ip.GetAddressBytes();
SocketAbstraction.Send(_socket, address);
}
else
{
throw new ProxyException(string.Format("SOCKS5: IP address '{0}' is not supported.", ip));
}
Если вы хотите изменить SSH.NET код, вам нужно заменить код на что-то вроде (не проверено):
// Send address type and address
SocketWriteByte(0x03); // Resolve by proxy
var host = SshData.Ascii.GetBytes(ConnectionInfo.Host);
SocketWriteByte((byte)host.Length);
SocketAbstraction.Send(_socket, host);
Что должно быть эквивалентно этот код PuTTY / WinSCP :
assert(type == ADDRTYPE_NAME);
command[3] = 3;
sk_getaddr(p->remote_addr, command+5, 256);
command[4] = strlen(command+5);
len = 7 + command[4]; /* 4 hdr, 1 len, N addr, 2 trailer */