Таким образом, цель этой службы состоит в том, чтобы определить, находится ли аппарат в известной сети, например, в разных офисах, или не основан на общедоступном c IP. Я создал несколько списков известных IP-адресов для сравнения. Если IP-адрес publi c неизвестен, я запускаю процесс для запуска соединения OpenVPN с моим сервером.
Я использовал http://ipv4.icanhazip.com
для получения IP-адреса publi c.
Текущее поведение: в течение первого интервала таймера веб-запрос возвращает правильный опубликованный c IP. Затем VPN-соединение вызывается и вскоре устанавливается. В CMD
я могу запустить curl http://ipv4.icanhazip.com
и подтвердить IP-адрес VPN-сервера, а таблица маршрутизации IPv4 фактически обновлена. Весь трафик моего веб-браузера c маршрутизируется правильно.
Однако запросы на обслуживание никогда не возвращают новый IP-адрес в течение 15-секундных интервалов.
Вот моя функция WebRequest
public static string ReturnPublicIP()
{
string url = "http://ipv4.icanhazip.com";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.AutomaticDecompression = DecompressionMethods.GZip;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
return reader.ReadToEnd().Trim((char)0x0a, (char)0x0d);
}
}
Есть идеи, что я могу сделать, чтобы исправить это? Я предположил бы, что сетевой поток \ процесс будет знать об обновленной таблице маршрутов и отправлять трафик c соответственно ..
Заранее благодарен за любую помощь!