文档介绍:ISP限制NAT的方法
一、ISP绑定了网卡MAC地址接入破解方法:破解这个太简单了,常见的宽带路由器都有一种叫做“MAC地址克隆”的功能。只要把能上网的网卡MAC地址“克隆”到路由器的WAN口就行了。此方法网上流传太广,不多说。
二、ISP限制了IP数据包的TTL值。
封锁原理:懂网络原理的朋友应该知道,IP数据包在传输过程中每经过一跳TTL值就会减1,所以如果有人在下面私开NAT的话,ip包经过NAT服务器或者代理服务器出去之后的TTL值一定为:31、63、127或者254。所以ISP只需要在局端抓取拥有这些TTL值的数据,直接drop掉,就可以禁止大部份用户自架NAT服务器上网了
破解方法:既然我们明白了封锁原理,即数据包每经过一跳路由出去后ttl值就会减1,那么我们只要人为的在操作系统中将TTL默认值增大一跳,譬如在winxp系统中通过修改注册表,将TTL值改为129,减1出之后正好是128,就可以逃避检查了。注意某些地方ISP可能只允许有限的几个默认的TTL出去。
三、ISP修改了DNS查询应答包的TTL值
封锁原理:ISP也有可能会将UDP 53端口(也就是DNS请求)(iptables -t mangle -A PREROUTING -i eth1 -d -p udp --sport 53 -j TTL --ttl-set 1),DNS应答的包只能到达下一级主机。如果使用了代理或者NAT,再下一级的TTL值将为0,这个包就丢掉了。从而实现无法解析DNS,大部份用户也就没法上网。是可以的。
破解方法:最好的办法是使用DNS代理,这个DNS代理服务也只能在NAT服务器(路由器)上跑,让DNS代理帮内网用户传递DNS请求。还有一种办法就是把TTL给它值改回来!我们可以在路由器上抓取回来的DNS应答包,然后人为的增加TTL值,DNS就可以继续传递给内网了,这个方法也适用于前面那个限制TTL值出去的案例。只要对出去的所有数据包统一修改TTL值即可,但此方法对破解者的技术要求颇高。
四、ISP检查同一IP地址的数据包中是否有不同的MAC地址。
封锁原理:据说“网络尖兵”软件在用此方法,但我怀疑这种方法根本没用,因为经过NAT转换之后的IP包文中MAC地址应该也只有一个而非多个,应此不能通过此方法查到用户是否开启NAT服务。
破解方法:网上流传的方法是把“LAN内所有网卡的MAC改成一致”,貌似也不是一个好的解决办法,改成一致后LAN内的PC间怎么通讯?还是应该想办法让NAT/代理出去的数据包中含有的MAC地址始终如一才是王道。
五、ISP通过检查HTTP包头来封锁代理服务器(不是NAT)
封锁原理:一般代理服务软件都是伪造http包头来代理内网PC上网,ISP就通过设备检查http包头中是否含有某些代理的特征字符串
破解方法:因为是从应用层来分析特征,要破解比较难了,建议还是换成NAT的方式出去。
六、其它一些手段如:限制TCP连接数、限制P2P、强迫用户安装星空极速、通过SNMP协议检查ADSL猫是否开启路由等手段并不是真正从局端来封锁NAT和代理,在此不复述了。
自己限制
方法1:
如果有人在下面私开nat的话,它那个ip出来的包的ttl值一定为:31或者 63 ,就可以禁止它上网了。丢弃ttl值为127,31,63的包
iptables -A FORWARD -s -m ttl --ttl 127 -j DROP
iptables -A FORWARD -s -m ttl --ttl 31 -j DROP
iptables -A FORWARD -s -m ttl --ttl 63 -j DROP
方法2:
,dns查询的包只能到达下一级主机。如果它用了代理或者nat,再下一级的ttl将将为0,这个包就丢掉了。从而实现无法解析dns限制非法nat。
iptables -t mangle -A PREROUTING -i eth1 -d -p udp --sport 53 -j TTL --ttl-set 1。
操作系统默认ttl值
操作系统 TCP传输 UDP传输
设置dns返回包为1
AIX 60 30
DEC Patchworks V5 30 30
FreeBSD 64 64
HP/