构建适合程序员的私有云

前言 如今网络上有很多关于如何自建NAS、搭建家庭私有云的教程,但基本都止步于文件共享和多媒体服务。 作为一个半吊子的码农,这显然不能满足我的需求。 所以,结合着自己需求搞了一套自己的私有云方案,在各种大坑小坑中坚持了近大半年后,发现该方案极大的提高了自己的工作效率。 以下的方案不一定完全适合你,你可能需要根据自己的实际需求进行适当更改。 ...

April 9, 2017 · 1 分钟 · keepwn

Openwrt上实现透明代理

背景 前一段时间,在ESXI上部署了一台Plex服务器。解决了一些恼人的问题后,用得还算满意,但是TMDb搜刮器在匹配电影信息时,总会丢失一些Poster海报信息。 最终发现,The Movie Database (TMDb) 这个地址被和谐社会了。 由于Plex不支持设置代理,且手动设置HTTP_PROXY后还是无效,所以决定把Plex这台服务器加入透明代理网络中。 参考以前的文章《Openwrt上使用dnsmasq和ipset实现域名分流》,将网关、DNS设置为192.168.0.254 因为之前重新部署了ESXI环境,所以Openwrt这台虚拟机不幸丢失,所以只能大侠请重新来过。 由于之前的方案在实际使用中还有一些不足,在综合了网络上现有的一些方案后,设计出一份改进版的方案。 网络上原始的方案 安装软件 shadowsocks-libev和luci-app-shadowsocks(提供ss-rules) 依赖iptables-mod-tproxy和ip chinadns和luci-app-chinadns 配置 使用luci-app配置shadowsocks 开启端口转发,设置本地端口为5300,用于DNS查询 被忽略IP列表选择ChinaDNS路由表(/etc/chinadns_chnroute.txt) 使用luci-app配置ChinaDNS 设置本地端口为5353 设置上游服务器为114.114.114.114,127.0.0.1:5300 使用luci-app配置DHCP/DNS 设置DNS转发为127.0.0.1#5353 勾选忽略解析文件 这样一来,你拥有了: 一个无污染的DNS服务器,端口为53 国内DNS解析出国内IP,国外DNS解析出国外IP 一个透明代理的网关 如果请求IP在ChinaDNS路由表中,则走正常流量 如果请求IP不在ChinaDNS路由表中,则走代理流量 改进版方案 尽管上面的方案已经能够实现透明代理,但是还有以下问题(附上解决方案): 在某些ISP下使用ss-tunnel(即端口转发)不稳定, 导致DNS查询时间过长或超时 解决方案: 使用dnscrypt-proxy提供的DNS查询服务 ChinaDNS有时会出现误判,导致访问国内站点时走代理 解决方案: 在dnsmasq中配置chinalist,指定国内域名使用国内DNS进行解析 不在列表中的站点交由ChinaDNS判断 只能定义强制走代理的IP,而不能是域名,维护起来比较麻烦 解决方案: 归功于ss-rules的实现,ipset集合ss_spec_dst_fw中存放强制走代理的IP 在dnsmasq中配置my-list(自定义域名)列表,将my-list的查询结果保存到ss_spec_dst_fw中 额外安装以下软件: 安装dnsmasq-full 需要先卸载自带的dnsmasq 安装dnscrypt-proxy 提供安全不受污染的DNS服务器 更新配置 使用luci-app配置shadowsocks 关闭端口转发 配置dnscrypt-proxy 修改监听端口为127....

December 28, 2016 · 1 分钟 · keepwn

富士通D2607-A11刷IT模式

准备工具 一张富士通D2607-A11阵列卡 一个U盘 一台PC机(支持UEFI启动) 准备工作 制作DOS启动盘 将U盘格式化成FAT32,刷入dos系统 下载刷机工具包点击下载 拷贝刷机所需工具 megarec软件 sas2flash软件 9211-8i固件 拷贝efi shell支持文件 在U盘根目录下,创建\efi\boot目录 复制shell_v1.efi到\efi\boot目录,重命名为bootx64.efi 开始刷固件 插上D2607-A11阵列卡 启动PC,选择U盘引导,进入DOS命令行 备份阵列卡信息 >dir >megarec -readsbr 0 sbrbak.bin 使用xdd查看sbrbak.bin的数据,在000000d0行500X XXXX XXXX XXXX为阵列卡的地址 强烈建议进行这个操作,尽管我当时忘了 刷入sbr 刷入fj版sbr >megarec -writesbr 0 sbrfj.bin 清空flash >megarec -cleanflash 0 重启PC,选择UEFI版U盘引导,进入efi shell 刷固件 刷入9211 8i固件...

December 2, 2016 · 1 分钟 · keepwn

从Hyper-V迁移到ESXI的血泪史

背景 怎么说呢,在买Gen8之前就已经仔细比较过Hyper-V和ESXI的优劣,最终选择了Hyper-V的方案。 当时决定选择Hyper-V平台有以下几个理由: Hyper-V提供的存储池使用方便,用起来简单 Hyper-V相对于ESXI而言比较轻量,没有ESXI那么多臃肿的功能 Hyper-V下可以实现硬盘休眠 其实最主要的原因是,觉得自己的需求不大,哪个简单用哪个 现在想来真是too young啊,我的需求怎么可能不大呢,Hyper-V自身的限制成了严重的短板。总之,在权衡未来需求和迁移成本之后,决定使用ESXI平台了。 于是,我从一条不归路Server2012 With Hyper-V走向了另一条不归路ESXI6.0。 第一坑:安装ESXI之不识别SSD 之前使用Hyper-V平台时,没有采用Gen8提供的硬件RAID功能,使用的Server2012提供的存储池功能,所以切换到ESXI平台时,重新对本地硬盘进行了硬件RAID设置。 安装ESXI到SD卡的过程略过,按正常操作来,没什么问题。在对ESXI进行配置的时候遇到了问题,系统只能识别到设置了RAID的硬盘,无法识别到SSD。 网上查了些资料,RAID模式下识别不到普通硬盘,要想识别到SSD,必须对SSD设置RAID,只有一块SSD怎么办?设置为RAID0。 第二坑:安装虚拟机之freenas 在我的规划中,所有的资料(非虚拟机文件)由freenas进行统一管理,freenas开放smb、nfs服务给其他虚拟机,一方面解决了资料分散,不易管理的问题,另一方面只要保证freenas的可用性,就算其他虚拟机崩溃甚至损坏,都不会对资料有任何影响。 创建freenas的时候,直接分配全部的磁盘空间(>2T)给freenas的一块虚拟磁盘,然而启动freenas时,一直卡在启动界面,显示磁盘分配错误。 虽然猜测是分配磁盘过大导致了这个问题,然而在网上并没有查阅到明确的说法。 在本地做了几个测试后发现,一旦分配磁盘大于2T,freenas就会卡死在启动界面。(真的只是个例?具体原因有待进一步分析) 当然,临时解决办法也很简单,把磁盘分拆为多个1T大小的虚拟磁盘,挂载给freenas。 第三坑:安装虚拟机之openwrt 正常方式安装openwrt,启动openwrt时,会大概率的出现卡死现象。(在《Openwrt上使用dnsmasq和ipset实现域名分流》中已经详细说明具体的原因,这里不再重复) 第四坑:安装虚拟机之dsm 首先,DSM的版本是XPEnology DSM5.2。 在Hyper-V上安装dsm非常简单,然而在ESXI上安装完成以后无法进入系统。 在正常的安装流程中,虚拟机都是由XPEnologyBoot.iso进行引导启动。简单判断以后,觉得可能由于虚拟机重启以后,未能从cd启动导致的。 进入虚拟机bios修改第一启动项为cd,保存,重新启动,WTF,怎么还是引导不了。 重新进入bios查看启动项信息,发现上次的修改并没有被保存。(在win10的vmware workstation中进行了相同操作,对vmware的修改是生效的。) 看来只能放大招了么,手动修改vmx! 修改虚拟机的.vmx文件,强制第一启动项为cdrom: bios.bootOrder = "cdrom,hdd,floppy" 搞定。 后记 虽然说从Hyper-V切换到ESXI的过程中,遇到了很多不可描述性的问题,但好在都解决了。问我现在用着ESXI的感觉么?感觉还不错:)

June 3, 2016 · 1 分钟 · keepwn

Pi2版OMV的Monit连接错误的问题

背景 之前买了个树莓派2,闲置了很久,最近正好有NAS需求,就打算拿它装个OpenMediaVault玩玩。 安装过程不表。 事实上是在使用过程中,遇到的某个问题比较奇葩,就拿来分享了。 林尽水源 在网页端对OMV进行配置时,经常会遇到一个弹窗monit: Cannot connect to the monit daemon. Did you start it with http support?。 详细错误代码如下: exception 'OMVException' with message 'Failed to execute command 'export LANG=C; monit restart collectd 2>&1': monit: Cannot connect to the monit daemon. Did you start it with http support?' in /usr/share/php/openmediavault/monit.inc:113 Stack trace: #0 /usr/share/php/openmediavault/monit.inc(70): OMVMonit->action('restart', 'collectd', false) #1 /usr/share/openmediavault/engined/module/collectd.inc(53): OMVMonit->restart('collectd') #2 /usr/share/openmediavault/engined/rpc/config.inc(206): OMVModuleCollectd->startService() #3 [internal function]: OMVRpcServiceConfig->applyChanges(Array, Array) #4 /usr/share/php/openmediavault/rpcservice.inc(125): call_user_func_array(Array, Array) #5 /usr/share/php/openmediavault/rpcservice....

December 17, 2015 · 3 分钟 · keepwn
0%