SOHO和BYOD网络实践记录
元旦假期挤了点时间,终于将构思已久的家中网络优化调整了一下,以满足自己工作学习的需求,特此记录一下,供大家参考交流。
我的需求是这样的:
随着智能家居和移动设备的增加,连入家庭网络的设备接近20个,尤其是智能家居设备,随便放一个不那么可信的东西在自己的网络里,还真不***全,智能家居设备如果有漏洞或后门变成入侵跳板不是没有可能的事情,所以第一个需求就是这部分网络的隔离。
我希望我的所有终端不需要繁琐的配置,都可以连入到公司网络进行工作。
我希望我的所有终端不需要繁琐的配置,都可以有可靠的方式轻松使用google,上github,googlecode找找代码,上各类技术博客找找资料之类的。
我可以对各类的流量进行精细控制,不互相影响。
我还希望能随时随地连入家中的网络存取NAS上的资料,对各种设备进行控制等。
于是有了下面的解决方案:
这个方案的核心是基于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系统,可以建立各种类型的VPN连接,于是我在AWS公有云上放置了一台pptp server作为国际网络跳板,使用skeddly进行自动化运维以节省AWS计算使用的费用,在dd-wrt端使用autoddvpn的方案来进行VPN分流,节省AWS流量使用的费用和网络加速。
为了满足连入公司网络的需要,在dd-wrt端使用脚本维护vpnc到公司的IPSec VPN的连接,并通过iptables进行NAT转发。
然后通过Dnsmasq进行DNS分流和缓存加速,再根据需要对dd-wrt中的路由表进行微调控制分配WAN,PPTP VPN和IPSec VPN三条链路的流量,满足特定需求。
最后,再开启dd-wrt上的pptp server,满足连回家庭网络的需求。
目前基本功能需求都已完成,无论在哪里,用任何设备,想访问哪里就访问哪里,不需要任何配置。
虽然只是在家里小打小闹,但也学到了不少东西,比如AWS配置, skeddly自动化运维, linux shell脚本编程, pptpd, dnsmasq, iptables, vpnc
后续的一些调整计划:
autoddvpn的算法还有不完美的地方,可能会进行一些优化调整。
dd-wrt的路由表调整还比较麻烦,后期可能写一些维护脚本工具。
网上找来的vpnc的自动管理脚本目前是使用ping特定ip的方式来检测vpn连通性,这个算法不太合理,打算换掉。
对了,还有个支持802.1q的网管交换没用,一来不是所有的接入交换都支持VLAN,二来我觉得在家里划VLAN未免有点太夸张了:P
总结,随着接入网络的设备数量和类型越来越多,即便是家庭网络也变得复杂了,还好有Linux、开源还有云,让我们能满足一些稍微复杂点的SOHO和BYOD基础架构需求。
本文出自 “要为人类做贡献” 博客,转载请与作者联系!
原文地址:http://1970s.blog.51cto.com/302679/1599029