挂了vpn后,更改自己路由(国内线路强制走国内)。
www.ip138.com和www.ip.cn测试ip,前者变为国内ip(电信运营商分配的),后者依然是国外(vpn商自己的ip)。
然后就忽然思考着检测网站的运作原理了,是什么原理?
v2ex检测我的ip是电信运营商提供的ip。
1
extreme 2015-04-04 14:09:07 +08:00 1
目标服务器所获取到的IP是直接与目标HTTP服务器进行TCP通讯的IP。
太抽象? A寄信给B,说想了解一些东西,于是在信封的发件人处写上了自己的地址,收件人处写上了B的地址。 B收到信后,写好了回复的内容,在信封收件人处写上A的地址,发件人处写上自己的地址。 最后A收到了B的回信,得到了自己想要的东西。 A寄信给C,但怕C知道自己的地址,可是又想收到回复,于是找了一个负责转发信件的D,在信件上写了说想了解一些东西,附带C的地址和自己的地址,把信件发送给D,D在信封的发件人处写上了D的地址,收件人处写上了C的地址。 C收到信后,写好了回复的内容,在信封收件人处写上了D的地址,发件人处写上自己的地址。 D收到了C的回信,然后把信寄到了A的地址,最后A得到了自己想要的东西。 |
2
surftheair 2015-04-04 14:23:57 +08:00
你路由的问题吧,可能这个网站的IP你正好设到国内的路由了
|
3
lirau OP @extreme 就是自己发送的http请求的数据包里有自己的IP地址吗。那通过VPN后这个地址有被更改吗?2个网站的测试结果不同说明有一个是用了更科学的检测方法吗
|
4
lirau OP @surftheair 就是您认为2个网站的测试方法应该是一样的了。不是很懂路由。是通过我的http请求里写的IP测试的吗,那为什么路由能影响检测结果?请求不应该是浏览器包装然后发送的,为什么还跟以后要走的线路有关?
|
5
surftheair 2015-04-04 14:29:57 +08:00
@lirau 都是一样的。我的意思是,你不是设置了不同的IP走不同的路由么?可能是你这两个IP走的路由不一样。你看一下route print,或者tracert一下检测服务器的IP,看看走的哪条路由。
|
6
NeoAtlantis 2015-04-04 14:39:13 +08:00
有个东西叫TCP协议吧。。。
v2ex难道是这样的社区了么…… |
7
fems 2015-04-04 15:04:29 +08:00 1
@lirau 走国内还是国外路由,要看你的DNS返回对应网站的IP地址是国内还是国外IP,前者貌似都是国内IP,后者我这里是日本linode的IP23.239.1.72 li679-72.members.linode.com
|
8
jerryjhou 2015-04-04 15:16:08 +08:00 via iPad 1
没一个说到点上的
IP.cn在新加坡OAH有一台服务器,你的DNS成了国外的,所以解析出的IP是新加坡的。 根据路由表,新加坡IP还是会走VPN,所以你就只能看到VPN的IP |
11
omi4399 2015-04-04 15:55:21 +08:00
IP.cn在国外有服务器啊,路由表里把他判定为国外线路了,于是你就翻墙啦
|
12
bobopu 2015-04-04 18:01:04 +08:00 via iPhone
|
13
Showfom 2015-04-04 18:30:46 +08:00 via iPhone 1
|
14
KexyBiscuit 2015-04-04 19:06:50 +08:00 via Android
|
15
xieyudi1990 2015-04-04 21:19:04 +08:00 via iPhone
不是在TCP里, 而是在IP头里有一个源IP的字段. 是靠那个检测的.
写过协议栈的路过. |
17
Showfom 2015-04-04 21:50:43 +08:00
|
18
ryd994 2015-04-04 23:59:27 +08:00 via Android 1
书读得太少,想得太多。
好好学个网络入门,就全懂了 |
19
geeti 2015-04-05 01:41:10 +08:00
你路由设置有问题。
把你的路由表发上来看看 |
21
geeti 2015-04-05 10:40:15 +08:00
|
23
sNullp 2015-04-05 10:41:45 +08:00
|
25
sNullp 2015-04-05 10:43:07 +08:00
@geeti 这只能说明 ip138 没有对 curl 的 UA 做特殊处理。。。当然他数据库是很烂,但是刚才还以为他的意思是靠 curl 就能得到数据库的大小。
|
26
sNullp 2015-04-05 10:44:38 +08:00
@geeti 追求速度的话我用 ip.appspot.com
|
29
wdlth 2015-04-05 11:41:43 +08:00
http://whatismyip.akamai.com/
我用的是这个…… |
30
bdnet 2015-04-05 11:55:33 +08:00
Web服务器会获取Request的IP,至于线路经过了几层,线路不同,都会影响web服务器拿的的ip。
|
31
cnbeining 2015-04-05 12:39:52 +08:00
|
32
schezuk 2015-04-05 13:28:43 +08:00 1
discuz的办法https://github.com/Discuz-X/DiscuzX/blob/Common/uc_client/model/base.php
··· function init_var() { $this->time = time(); $cip = getenv('HTTP_CLIENT_IP'); $xip = getenv('HTTP_X_FORWARDED_FOR'); $rip = getenv('REMOTE_ADDR'); $srip = $_SERVER['REMOTE_ADDR']; if($cip && strcasecmp($cip, 'unknown')) { $this->onlineip = $cip; } elseif($xip && strcasecmp($xip, 'unknown')) { $this->onlineip = $xip; } elseif($rip && strcasecmp($rip, 'unknown')) { $this->onlineip = $rip; } elseif($srip && strcasecmp($srip, 'unknown')) { $this->onlineip = $srip; } preg_match("/[\d\.]{7,15}/", $this->onlineip, $match); $this->onlineip = $match[0] ? $match[0] : 'unknown'; $this->app['appid'] = UC_APPID; } ··· |
34
loveminds 2015-04-05 14:43:41 +08:00
|
36
paulgao 2015-04-05 20:18:29 +08:00
以 PHP 为例,IPIP.NET 的客户端 IP 目前以 REMOTE_ADDR 为准了。HTTP_X_FORWARDED_FOR 实在是不敢信任了,尤其在中国这种小运营商乱搞的情况下。
|
41
loveminds 2015-04-07 14:14:12 +08:00
|