c# - 在 OpenVPN 后面运行的 .NET C# 服务未返回正确的公共 IP
问题描述
所以这项服务的目标是根据公共 IP 确定机器是否在已知网络上,例如不同的办公地点。我创建了一些已知 IP 地址列表来进行比较。如果公共 IP 未知,我会触发一个进程来启动与我的服务器的 OpenVPN 连接。
我一直在利用它http://ipv4.icanhazip.com
来检索公共 IP。
当前行为是,在第一个 Timer 间隔期间,Web 请求返回正确的公共 IP。然后调用 VPN 连接并很快建立。在CMD
我能够运行curl http://ipv4.icanhazip.com
并确认 VPN 服务器 IP 以及 IPv4 路由表实际上已更新。我所有的网络浏览器流量都被正确路由。
但是,服务请求在 15 秒间隔内永远不会返回新 IP。
这是我的 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);
}
}
有什么想法可以解决这个问题吗?我想网络\进程线程会知道更新的路由表并相应地流动流量..
提前感谢您的帮助!
解决方案
推荐阅读
- css - CSS Bootstrap 自动对焦 CSS
- node.js - 如何在 azure blob 服务方法上调用 await?
- pytorch - PyTorch 中 BatchNorm2d 的导数
- swift - ScrollViewReader 的 proxy.scrollTo 不滚动
- c# - 使用 EmguCV 在 Ubuntu 20.04 上的 System.DllNotFoundException
- python - 更正数据框中的错误值
- python - Plotly:在 hoverlabel 中以指定格式显示日期(customdata 将日期读取为字符串)
- c# - C# 表达式树:对象数组到 Expression.New() 参数
- excel - 用于检查 COG 是否在边界框中的 PowerQuery 公式
- javascript - 使用 Javascript/CSS 切换两个 HTML 元素的位置