去年从公司拿了个被市场淘汰滴EZ Station玩,虽然配置很低,不过装个linux还是跑得动当开发机滴。
配好webserver,指定好WAN到LAN的转发规则之后,发现不知道为啥有些线路能访问到有些线路访问不到,当时也就木有去太去管他了。

今年将网络从山寨滴长城宽带换到电信10M光纤之后,电信送滴那个华为HG8240居然不支持WAN到LAN的转发了。前天将PPPoE换成自己的路由拨号之后就可以用了(具体方案我在文尾提出来),因为是动态ip滴,用ip访问终归不方便,虽然有花生壳等服务支持动态DNS解析,但是我又不想暴漏自己的ip,所以就用了使用nginx反向代理滴方式。
而由于ip是变动滴,所以更新起来也就麻烦点,于是用了一套简单的自动上报ip的方案,nginx机器收到ip变更通知再更新配置reload。具体就是如下几步:

  1. 先在路由做好内网ip的mac地址绑定,防止路由重启导致web机获取不同的内网ip
  2. 将需要启用外网服务的端口映射转发到web机。ps.很多运营商是禁止了80端口开放,所以可能需要使用其他端口
  3. 配置个自动上报的脚本(我这里有写一个简单的http://www.box.com/s/2138odhqa58qcjcad20s,前面的配置自己修改下)。可以使用定时任务来跑或者hack了路由器的可以直接在路由器上来实现该功能,重启触发就是。
  4. 在其他外网机器上配置ngxin(或其他可用作反向代理的服务),加上类似如下配置(具体规则根据自己需要修改):
    server{
            listen 80;
            #开放给外部访问的域名
            server_name xxx.ivershuo.com;
            location / {
                    #web机器的webserver地址
                    proxy_pass http://111.222.222.111:8964;
                    proxy_redirect off;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    }
  5. 将域名A记录到上面的nginx机器
  6. 跑个http服务来接受前面web机上报的ip,用脚本自动更新nginx配置ip部分,reload nginx配置使生效

该方案主要可以实现动态ip的域名绑定,并且可以实时生效,又避免了实际ip的暴漏,还可以绕过运营商对80端口的禁止。不过缺点就是流量要走两份,但是一般这个情况对我没太大影响,自己家里网络是包月的,vps流量也用不完

如果你也是用的坑爹的电信送的华为HG8240,接下来说下如何使用自己的路由代替HG8240做DHCP服务器。
首先我们要拿到telcomadmin账号,因为给的那个useradmin账号除开可以重启路由外啥功能都木有,真是坑爹。
先用root:admin(对滴,root密码就是这么sb)telnet到192.168.1.1,然后输入shell进入shell,在/mnt/jffs2/hw_ctree.xml这个文件中查找到“ telecomadmin”这串,应该看到密码了吧,然后用这个账号和密码登陆路由
接下来在“网络”页面拿到自己的上网账号和密码(此处需要用到firebug等工具),将internet服务用PPPoE桥接方式桥接到自己的路由器,然后取消HG8240的DHCP服务器功能,如此就将HG8240阉割到基本只有光纤转普通那啥网线的功能了。

用不同段的ip如192.168.2.1做为自己路由的ip,启用DHCP服务,用PPPoE拨号上网。刷新其他机器ip和dns,done!