DNS 配置

GFW真是太不要脸了,现在给google来了个中间人攻击,把他的证书替换了,真是吊的飞起。现在就算用dnscrypt也没有用了。因为GFW没有阻止ip,直接就是攻击。CTMD。不过我偶然发现只要DNS不是解析到中国的就不会遭受中间人攻击。因为CDN的关系,DNS可以根据客户端ip来解析对应的服务器ip。我如果解析到美国的google ip就不会被中间人攻击。当然,全局的转发也是可以的,比如socks,但速度还是有区别的。

注意:这里说的都是在教育网,没有在其他网络尝试。

unbound + dnscrypt + opendns

opendns的ip是208.67.222.222,208.67.220.220 {443, 53, 5353},支持加密传输。这在之前dnscryptunbound已经讨论过。但这种方法已经不适合。因为他会解析到google对应东南亚的ip。

ssh tunnel + nc

这个是比较蛋疼,也比较复杂。我也没有试过,总体来说,先建立ssh本地转发tunnel,然后用nc将udp转为tcp,经ssh tunnel转发。那么解析的ip就不一样了。具体看链接

ssh tunnel + unbound

我认为这是最合适的方法。先要启用unbound tcp-upstream,并设置forward-zone。我的unbound.conf文件见文末。然后启用ssh tunnel:  ssh -L 9053:8.8.8.8:53 server-ip  。最后是修改resolv.conf文件。只要改为 nameserver 127.0.0.1 ,一切ok,测试结果见文末。

ssh reverse tunnel + unbound

这个也行,原理跟上面类似,但这里用的是ssh reverse tunnel。比如  ssh -R 9053:8.8.8.8:53 user@china-host 。这个命令要在国外主机运行,他的意思是连接到china-host,并将通过china-host:9053的流量,经过国外主机(本主机)转发到8.8.8.8:53。有点小复杂。原理是一样的,也是能跑起来的。

测试结果

链接

  1. unbound conf
  2. udp to tcp
  3. ssh port forwarding

 

SDN初探

      因为网络大作业,要使用SDN,而且SDN能让我更加深入理解网络原理。比如ARP协议在SDN中的实现(l2_learning)。但是SDN感觉比较复杂,光看官网就头大了。我就参加了coursera上的SDN课程。有人带,入门还是很快的。
      关于SDN的历史也很丰富,可以看N Feamster的介绍,直接跳过,进入学习环节。

实验环境:

      SDN说简单了就是Data plane和Controller的分离,进一步说就是switch和控制算法的分离。底层的switch厂商可以不同,但是遵守统一协议,比如openflow。这个目的就是为了控制算法能够不受厂商限制。但是我们没有真实的网络设备和拓扑,这对我们学习和研究有很大阻碍。还好有虚拟技术。Mininet让实验成为现实。SDN的相关内容太多,软件也不少,因此我担心自己的电脑吃不消,就装了个专门的虚拟机。在SDNHUB上下载,是ALL-in-one的,包含各种controller和必要工具。所以实验环境就运行虚拟机就ok了。

网络拓扑:

      最新创建的是网络拓扑,就是switch和host的连接结构。真实环境的话是手动连接电缆。这里使用Mininet创建。可以根据Mininet官网教程一步步实验。比如创建一个树形拓扑。

      完成后就是一个mininet的CLI界面,可以输入help看看支持哪些。重要的有py,link等等。除了mn内置的几个拓扑结构外,还可以使用Python API,这就大大增加了Mininet的可扩展性。最核心的就是加加链路,设置属性。

      这还支持可视化,比如poxdeskminiEdit。不过都还比较粗糙。我试了一下poxdesk,感觉够用。

poxdesk
树形结构(未显示主机)

控制模块:

      SDN Controller就有很多了,比如POX,OpenDaylight等等。比较详见此文这个博客。我选的是POX,容易上手,课程用的也是这个,Python语言。比如上文的l2 learning,可以非常清楚的理解原理。

      我觉得SDN Controller才是核心,将来网络的运行全靠这了。POX细节部分我还没有深入。可以参考其wiki。我要实现的就是Fattree的路由算法。还有两天时间,刚八类!

链接:

  1. openflow tutorial

Domain 说说域名

       Domain Name是互联网的重要一环,没有搜索引擎的话,Domain就是进入网站的第一步。Domain就是一个网站的标识,也体现一个网站的内容。比如slinuxer.com。前面也说过了光有域名是不行的,要经DNS转换为IP才能访问。人记不住IP,就使用域名了。

      域名大法好,每个人都用ok.com,不是混乱了吗。这时候ICANN(Internet Corporation for Assigned Names and Numbers),由他管理域名。然后由Domain name registrar提供给广大人民群众注册域名。国内有名的像万网新网等等,但这都不是事。。注册域名还是去国外好,比如GoDaddy(全球最大),为什么呢?因为国内有点不愉快,比如威峰这事。当晚我就把域名转出了,实在不敢了。而且国内域名注册商比较坑。。。谁用谁知道。

     域名各种各样,我觉得还是注册顶级域名好。比如com,org,net。cn的绝对不要,但如果是为了增值不是为了用,当然可以试试。投资域名有可能一不小心就发了。看这贵的吓尿的域名。开个玩笑。

      然后是域名的常识。注册了域名后,会发现各种术语,像ACTIVE,REGISTRAR-LOCK,PENDINGDELETE等等(全部列表),这相当于域名的生命周期。可以参考ICANN的gtld的生命周期图来理解。但是这里没有clientHold这样的,这个是跟EPP有关,跟域名注册商有关的协议。clientHold是指域名被注册商从DNS中移除了,再也解析不了了。这个就等于网站废了,但注册商也只能做到这点,不能删除域名。还有很多相关代码,就随便看看。

       域名还有一个蛋疼的地方是whois,谁都可以查相关域名的所有权和联系人信息,以及子域名。所以有了whois保护,但是要付钱。。有一个跟域名有关的一个纷争(我如何失去价值$50000的twitter帐号),所以保护自己的信息还是很重要的。

      有了域名,就要搞DNS,这里就不谈了。

链接:

  1. 域名生命周期
  2. IANA, IANA WHOIS,WHOIS