破解房东网络

前言:

最近搬到一个新地方,没有网,对于一个程序员没有网络是多么痛苦的一件事情呀. 还好房东留下了一个RJ-45的网络接口.哈哈哈哈,这不是给我机会了么? 好,立马插入网线来看看有没什么可以好玩的东西.

开始干活:

插入DHCP发现就获取到了IP

$ ifconfig
	eth0    Link encap:Ethernet  HWaddr C6:D6:06:33:xx:xx  
          inet addr:192.169.31.23  Bcast:192.169.30.255  Mask:255.255.255.0
          inet6 addr: fe80::c4d6:6ff:fe33:933b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25961173 errors:0 dropped:17 overruns:0 frame:0
          TX packets:18604131 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:27916381007 (25.9 GiB)  TX bytes:1554819614 (1.4 GiB)

看看路由信息

$ route -n
	Kernel IP routing table
	Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
	0.0.0.0         192.169.30.1    0.0.0.0         UG    0      0        0 eth0
	192.169.30.1    0.0.0.0         255.255.255.255 UH    0      0        0 eth0
	192.169.31.0    0.0.0.0         255.255.255.0   U     1      0        0 eth0

哟呵,网关地址 192.169.30.1 Metric 0

但是我实际的获取到的IP却是 192.169.31.23 Metric 1

这里说实话我是不太理解的,相当于我实际的地址到网关还还隔了一个路由器,咦?

那我就是ping一下:

$   ping 192.169.30.1
	PING 192.169.30.1 (192.169.30.1): 56 data bytes
	64 bytes from 192.169.30.1: seq=0 ttl=64 time=0.462 ms
	64 bytes from 192.169.30.1: seq=1 ttl=64 time=0.523 ms
	64 bytes from 192.169.30.1: seq=2 ttl=64 time=0.532 ms
	64 bytes from 192.169.30.1: seq=3 ttl=64 time=0.402 ms

额,ttl=64就是直连的嘛.

好吧,能ping通,那看看开了什么端口.

	Discovered open port 80/tcp on 192.169.30.1
	Discovered open port 22/tcp on 192.169.30.1
	Discovered open port 53/tcp on 192.169.30.1

80应该是什么后台管理

22这个可能和这个后台管理密码一样.

至于这个53端口DNS解析,大家都知道.

我试了下一些常用的初始化帐号密码和弱口令,没有成功.有些少许的失落.

最后还剩一个53端口,记得以前电信还是移动没有封DNS解析,可以通过这个端口免费上网呢,那都还是2.5G年代了.

好吧,那用网络有没有连接的域名来试试

$ nslookup www.baidu.com

哈哈哈,居然能通,能解析呢. (udp 53)

$ telnet 4.4.2.2 53

yes,也能连接. (tcp 53)

tcp/udp 53端口全开放,看来上网问题解决了.

大神们估计已经知道怎么办了.那么你如果不知道怎么办那么小弟现在就把这个方法告诉你(大神别见笑).

	  1                      2                3
 你的房间(RJ-45)  ----->  房东路由器  ---->  DNS服务器

房东的路由器会对所有接入的设备(电脑,路由器)分发一个IP,于是在内网其实你的电脑和房东的路由器其实已经可以通信了.

上不了网的原因是,房东在路由器上做一些规则(也可以叫防火墙),只针对拥有PPPOE帐号拨号的人,才允许他们上网.

但是我们传统上网都是需要做DNS解析的吧?

但是呢房东没有对这个进行白名单处理.任何人都可以做DNS解析.

好吧此处的重点就是,假设我在外网有一个服务器开放了53端口,然后我所有的数据包,都通过这53的端口发送,我是不是有可以上网了呢??

好吧,这些都成立了,那么下面就开始干活了:

  • 外网的一个服务器并可以使用的53端口(SS服务端使用).
  • 接入客户端可以连接53端口.

我们姑且把这种连接叫做建立一种管道吧(叫虚拟专用网/隧道也可以).

外网服务器我用的是xx云的服务器,上面搭建一个shadowsocks服务 我的接入端我选择一个支持openwrt的路由器,上面搭一个shadowsocks透明代理. 下面就是一些具体的配置惹:

服务端:

$ wget  https://raw.githubusercontent.com/wildcoder-me/stackscript/master/stackscript.sh
    chmod a+x stackscript.sh
    ./stackscript.sh
    cat /etc/shadowsocks.json

你没看错,服务器就这么容易搭建.

ps:这个脚本是我fork clowwindy的一个仓库

/etc/shadowsocks.json 这里就是你的ss服务器的相关信息啦.客户端配置需要这些的. 好,下面给你们看看(当然这个不是我真实服务器信息).

   {
   "server":"0.0.0.0",
   "server_port":2462,
   "local_port":8108,
   "password":"11111111111111",
   "timeout":300,
   "method":"aes-256-cfb"
   }

openwrt:

需要安装这个包shadowsocks-libev,可以自己去下对应版本的包,也可以自己编译啦. 然后就配置一个透明代理.

$  vi /etc/init.d/shadowsocks

主要是配置ss-redir这个透明代理,使用的

   CONFIG_JP=/etc/shadowsocks-jp.json     
   start() {                           
       service_start /usr/bin/ss-redir -c $CONFIG -b 192.168.71.1 
   }                                                                                                                                                                               
   stop() {
       service_stop /usr/bin/ss-redir 
   } 
   iptables -t nat -N REDSOCKS2
   iptables -t nat -A PREROUTING -i br-lan -p tcp -j REDSOCKS2
   iptables -t nat -A PREROUTING -i br-lan -p udp -j REDSOCKS2

   #这个ip网段的地址不进行转发
   iptables -t nat -A REDSOCKS2 -d 127.0.0.0/8 -j RETURN
   iptables -t nat -A REDSOCKS2 -d 192.168.0.0/16 -j RETURN
   iptables -t nat -A REDSOCKS2 -d 10.8.0.0/16 -j RETURN
   iptables -t nat -A REDSOCKS2 -d 224.0.0.0/4 -j RETURN
   iptables -t nat -A REDSOCKS2 -d 240.0.0.0/4 -j RETURN
   
   #转发对应的透明代理的客户端的端口
   #--to-ports 这个地方是你上面shadowsocks.json的local_port
   iptables -t nat -A REDSOCKS2 -p tcp -j REDIRECT --to-ports 8107
   iptables -t nat -A REDSOCKS2 -p udp -j REDIRECT --to-ports 8107

好吧,这些基本上都搞定了.你可以愉快的上网了.

对于用了我上面说的方法,而引发的纠纷,小弟可是承担不起哦.

姿势补充: 其实还有以来ICMP包来穿透防火墙啦,其原理也差不多,只是用的协议不一样,当然你也需要有支持这些协议的服务,就像上面的shadowsocks

以上仅供学习,别拿去干坏事哦。