有没有一种路由器可以读取外网ip
如题目,市面上有没有可以通过网络读取外网IP地址的路由器?对于路由器,外网和任何其他设备没有什么不同,外网设备应答成功,就可以完全识别出外网IP啊。
倒是内网设备,会产生IP隔离,解决这个问题,这就是我们好多软件,说的内网穿透功能什么的,其实也很好理解,外网设备请求路由器IP,路由器如果不知道往哪个局域网主机转发,这时候,就产生IP定向错误,通信失败,对于那些挂内网的广域网应用设备,就需要我们在路由器里面,进行特定端口,特定协议的定向转发设置。 我的主要目的是想减少物联网设备与服务器间的数据通信量,比如如果内网内的设备(传感器)能够获得外网IP,那么就把它上传给服务器,终端再从服务器获取IP后直接连接到内网设备,路由器上的外网IP虽然是动态的但在某一段时间内是不变的,内网设备如果获取到外网IP后比对如果发生变化就重新更新服务器上的记录。 本帖最后由 tianxj01 于 2018-12-23 11:05 编辑
BitFu 发表于 2018-12-22 09:32
我的主要目的是想减少物联网设备与服务器间的数据通信量,比如如果内网内的设备(传感器)能够获得外网IP ...
总算明白你的问题了,是需要获取路由器本身的动态公网IP。
在windows 控制台 输入 ping -n 1 -r 9 www.163.com也可以是别的网址,比如你地区用的公网网络DNS,这样返回信息最简洁。
在应答信息里面,你可以获取到路由器外网IP了。
你可以自己在控制台里面输入,测试一下看看控制台信息。
至于程序里面怎么实现,你自己去动脑筋了。
本帖最后由 BitFu 于 2018-12-23 13:38 编辑
还是搞不明白,加上 -r 9 就ping不上了
ping -r 9 www.163.com >d:\a.txt命令结果:
正在 Ping www.163.com.lxdns.com 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
222.44.151.69 的 Ping 统计信息:
数据包: 已发送 = 3,已接收 = 0,丢失 = 3 (100% 丢失),
Control-C
ping -r 9 211.138.91.1 >d:\b.txt 命令结果:
正在 Ping 211.138.91.1 具有 32 字节的数据:
请求超时。
请求超时。
211.138.91.1 的 Ping 统计信息:
数据包: 已发送 = 2,已接收 = 0,丢失 = 2 (100% 丢失),
Control-C tianxj01 发表于 2018-12-23 10:49
总算明白你的问题了,是需要获取路由器本身的动态公网IP。
在windows 控制台 输入 ping -n 1 -r 9 www.163 ...
这个动态地址获取有没有用,是不是外网是无法通过这个ping过来?
因为外网要映射好几次(过运营商服务器时候) li_mu 发表于 2018-12-23 14:54
这个动态地址获取有没有用,是不是外网是无法通过这个ping过来?
因为外网要映射好几次(过运营商服务器 ...
完全可以啊:
ping -n 1 -r 9 www.163.com > c:\list.txt
linst.txt
正在 Ping www.163.com.lxdns.com 具有 32 字节的数据:
来自 120.209.142.15 的回复: 字节=32 时间=95ms TTL=57
路由: 112.26.10.32 ->
111.39.98.138 ->
120.210.228.58 ->
120.210.192.245 ->
120.210.192.165 ->
120.210.192.117 ->
120.209.142.1 ->
120.209.142.15 ->
120.209.142.15
120.209.142.15 的 Ping 统计信息:
数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 95ms,最长 = 95ms,平均 = 95ms
tianxj01 发表于 2018-12-23 16:02
完全可以啊:
ping -n 1 -r 9 www.163.com > c:\list.txt
linst.txt
我发现用这个ping百度(www.baidu.com)好像不好使 本帖最后由 BitFu 于 2018-12-23 22:42 编辑
这和网络提供商有关系,移动的网(至少我这里)根本用不了这个命令
tracert可以用,但是第二个IP地址根本不是我的路由器的外网IP
tracert 163.com >d:\a.txt 命令结果如下:
通过最多 30 个跃点跟踪
到 163.com 的路由:
1 2 ms 3 ms 1 ms192.168.1.1 //只显示了路由器内网IP
2 6 ms 3 ms 9 ms122.76.228.1 //路由器IP实际上是122.76.229.17,和这个接近啊
3 33 ms 13 ms 9 ms222.39.162.101
4 5 ms 3 ms 3 ms222.39.162.201
5 7 ms 5 ms 3 ms222.39.164.70
6 4 ms 5 ms 4 ms111.56.100.33
7 * * * 请求超时。
8 4 ms 4 ms 3 ms221.183.13.105
9 12 ms 14 ms 13 ms221.183.9.117
10 39 ms 36 ms 72 ms 本帖最后由 tianxj01 于 2018-12-24 08:55 编辑
BitFu 发表于 2018-12-23 22:36
这和网络提供商有关系,移动的网(至少我这里)根本用不了这个命令
tracert可以用,但是第二个IP地址根 ...
路由追踪,出现的第2个,应该是你的网关,还真不一定是你的外网地址。
如果 ping -n 1 -r 9 在你的供应商哪里不好用,应该还有别的办法,我看看哈。
你可以这样做:
用HTTP协议,在程序中,请求www.ip138.com/地址,解析返回的html,
其中返回的字符串有这样的关键词:您的IP是:,从返回的字符串中用正则表达式提取外网ip地址即可。
这个应该是任何供应商都绝对必须完全支持的。
tianxj01 发表于 2018-12-24 08:53
路由追踪,出现的第2个,应该是你的网关,还真不一定是你的外网地址。
如果 ping -n 1 -r 9 在你的供应商 ...
这个办法很早就试过了,一般来说应该可以,但是移动的网络比较复杂
现在我的路由器IP是:“IP 地址: 122.76.239.96 PPPoE ”,这是个原铁通的IP地址,从外网可访问的。
但在ip138上显示的是 211.138.88.101,这是个移动的IP,也就是说服务器端得到的也不是我的路由器WAN口IP.
所以目前能想到的唯一办法就是从路由器网页上获取外网IP,如果路由器支持某种接口直接读取WAN口IP那最好不过了。 本帖最后由 tianxj01 于 2018-12-24 15:11 编辑
BitFu 发表于 2018-12-24 12:51
这个办法很早就试过了,一般来说应该可以,但是移动的网络比较复杂
现在我的路由器IP是:“IP 地址: 122 ...
那就用.net爬虫。
C#模拟web请求,把返回的response解析下,对于路由器需要登陆信息稍微复杂一点,抓取的时候还要带上登录信息,爬虫代码、资料满天飞的吧,抄抄改改就应该可以用了。
对于那些动态页面的路由器,可以用Python,具体的可以参考这个:
https://blog.csdn.net/lyffly2011/article/details/50485398
BitFu 发表于 2018-12-24 12:51
这个办法很早就试过了,一般来说应该可以,但是移动的网络比较复杂
现在我的路由器IP是:“IP 地址: 122 ...
有可能是铁通的IP又转发给了移动的那个IP,所以对IP138来说,你还是从移动那个IP出来的? z_no1 发表于 2018-12-26 17:05
有可能是铁通的IP又转发给了移动的那个IP,所以对IP138来说,你还是从移动那个IP出来的? ...
是的,铁通和移动现在是一家,所以他们内部怎么转的就搞不清楚了,可以确定的是我的路由器IP是到不了服务器的,数据包只能从移动的IP向外发。所以获取外网IP只能从路由器上想办法。 tianxj01 发表于 2018-12-24 14:59
那就用.net爬虫。
C#模拟web请求,把返回的response解析下,对于路由器需要登陆信息稍微复杂一点,抓取的 ...
谢谢这位兄弟!
页:
[1]