SOHO和BYOD网络实践记录 


元旦假期挤了点时间,终于将构思已久的家中网络优化调整了一下,以满足自己工作学习的需求,特此记录一下,供大家参考交流。


我的需求是这样的:


  1. 随着智能家居和移动设备的增加,连入家庭网络的设备接近20个,尤其是智能家居设备,随便放一个不那么可信的东西在自己的网络里,还真不***全,智能家居设备如果有漏洞或后门变成***跳板不是没有可能的事情,所以第一个需求就是这部分网络的隔离。 

  2. 我希望我的所有终端不需要繁琐的配置,都可以连入到公司网络进行工作。 

  3. 我希望我的所有终端不需要繁琐的配置,都可以有可靠的方式轻松使用google,上github,googlecode找找代码,上各类技术博客找找资料之类的。 

  4. 我可以对各类的流量进行精细控制,不互相影响。 

  5. 我还希望能随时随地连入家中的网络存取NAS上的资料,对各种设备进行控制等。

于是有了下面的解决方案:


wKiom1So_Cjys9BiAAJRKzPkd4g782.jpg


这个方案的核心是基于dd-wrt的路由,下面是维基上的介绍。


DD-WRT是一个基于Linux的无线路由固件,以GNU通用公共许可证(GPL)V2授权发布。

DD-WRT的系统源代码起源于Linksys WRT54G的系统,由于在2002年有人发现Linksys WRT54G的系统是基于Linux开发,而Linux又是使用GPL授权,所以要求Linksys依照GPL授权要求公开Linksys WRT54G的系统源代码,最终在2003年3月思科迫于压力按照授权释放系统源代码,然后该套代码被适用于基于Linksys WRT54G/GS/GL 或其他基于Broadcom参考设计的802.11g无线路由器,其中一个分支为OpenWrt,而OpenWrt又派生出DD-WRT。


dd-wrt可以建立多个虚拟的WLAN接口,很容易解决了接入设备隔离的问题。


dd-wrt基于linux系统,可以建立各种类型的×××连接,于是我在AWS公有云上放置了一台pptp server作为国际网络跳板,使用skeddly进行自动化运维以节省AWS计算使用的费用,在dd-wrt端使用autodd***的方案来进行×××分流,节省AWS流量使用的费用和网络加速。


为了满足连入公司网络的需要,在dd-wrt端使用脚本维护***c到公司的IPSec ×××的连接,并通过iptables进行NAT转发。


然后通过Dnsmasq进行DNS分流和缓存加速,再根据需要对dd-wrt中的路由表进行微调控制分配WAN,PPTP ×××和IPSec ×××三条链路的流量,满足特定需求。


最后,再开启dd-wrt上的pptp server,满足连回家庭网络的需求。


目前基本功能需求都已完成,无论在哪里,用任何设备,想访问哪里就访问哪里,不需要任何配置。


虽然只是在家里小打小闹,但也学到了不少东西,比如AWS配置, skeddly自动化运维, linux shell脚本编程, pptpd, dnsmasq, iptables, ***c


后续的一些调整计划:


  1. autodd***的算法还有不完美的地方,可能会进行一些优化调整。 

  2. dd-wrt的路由表调整还比较麻烦,后期可能写一些维护脚本工具。 

  3. 网上找来的***c的自动管理脚本目前是使用ping特定ip的方式来检测***连通性,这个算法不太合理,打算换掉。


对了,还有个支持802.1q的网管交换没用,一来不是所有的接入交换都支持VLAN,二来我觉得在家里划VLAN未免有点太夸张了:P


总结,随着接入网络的设备数量和类型越来越多,即便是家庭网络也变得复杂了,还好有Linux、开源还有云,让我们能满足一些稍微复杂点的SOHO和BYOD基础架构需求。