Browsed by
Tag: raspberry

xrdp的小问题

xrdp的小问题

目标系统是 Debian, 采用 xrdp 远程登录窗体界面,总是在显示登录时黑屏。查了很久一直没有结论,后来就干脆用 vnc 算了。

今天在查其他问题时,无意间翻查到文件 “/usr/share/doc/xrdp/README.Debian”, 里面提示需要修改“/etc/X11/Xwrapper.config”文件,将

allowed_users=console

修改为

allowed_users=anybody

重启后,果然可以通过xrdp正常登录了! 只是比较奇怪,为什么 Debian 系统不将默认值修改为 anybody?是没人维护的原因吗? 那为啥又在 readme 文件中单独说明呢?

另外,由于 Raspberry Pi 也是基于 Debian 系统,因此 Pi 中做同样的修改,也可以通过 xrdp 正常登录。

xrdp 读取 “/etc/ssl/private/ssl-cert-snakeoil.key” 进行加密,但是这个文件默认只有 “ssl-cert” 组的成员才可以读取,因此还需要将 xrdp 用户加入该组:

sudo adduser xrdp ssl-cert
解决DNS污染

解决DNS污染

DNS污染可能是一个比较普遍的问题,主要表现在:(1)DNS查询返回的IP地址根本是错误的。“错误”意思是IP地址要么根本不存在,要么就是个和域名完全无关系的地址。(2)IP地址虽然可能是对的,但是其他参数被莫名修改,例如TTL参数等。

测试了各类DNS服务器,例如阿里DNS、DNSPod(鹅厂)、Google DNS等。无一例外,最终的结果都或多或少被一些看不见的手给修改、甚至屏蔽了。从技术角度上讲,DNS协议本身非常随意、非常粗糙,是典型的互联网蛮荒时代的产物,比如面向UDP、无加密、无鉴权等,因此网络上任何一只手都有可能修改DNS的查询结果。网络进化到IPv6阶段,当然能解决这个问题,不过既然目前绝大部分设备还只支持IPv4协议栈,因此我们还是不得不修修补补来解决这个污染问题。

最根本的解决方法就是加密DNS查询。目前有些DNS服务商提供了私有的加密DNS方式,不过不太通用,需要私有的客户端程序配合。实际上可以不用搞这么复杂,自己建立加密通道,传递DNS消息即可。例如,参考下图的拓扑逻辑:

实现简单DNS透传的逻辑单元
实现简单DNS透传的逻辑单元

在这个网络中,有两个关键程序:dnsProxy和dnsAgent。

dnsProxy顾名思义就是个Proxy,本身并不负责DNS协议的解析,也不保存DNS的查询结果等信息,只是单纯地将DNS消息传递给真正的DNS服务器,并返回相应的结果即可。dnsProxy另一个功能是对外提供加密的数据连接,例如TLS、SSL加密等,甚至可以只是简单地对数据包进行自定义的异或运算即可。另外就是对外提供非标准连接接口,这点非常重要。DNS采用标准UDP53接口作为DNS服务器接口,网络上那些看不见的手,往往就是扫描并篡改53接口的数据包。这个小程序跑在境外(大家都懂的)的一台VPS设备上,推荐采用DigitalOcean,专业的云计算服务商,采用SSD硬盘,价格公道,我们一直用TA,如果你有兴趣的话,请点击这里自行了解细节。

dnsAgent是另一个小程序,主要负责建立与dnsProxy的加密连接,接收普通设备的DNS请求并将其传递给dnsProxy,同时返回DNS结果给普通计算设备。对于网内设备而言,dnsAgent就是个伪装的DNS服务器。同样,dnsAgent其实也不需要关心、也不需要解析DNS协议细节。在我的网络中,dnsAgent跑在一台常年吃灰的树莓派上(还是第一代的)。

实现这些仅仅需要一点UDP、TCP的网络知识,甚至不需要了解DNS协议的细节,无需对DNS数据包做修改。完成后可以愉快地打开很多以前打不开的网站。当然,有些网站始终是打不开的,这是另一个与DNS无关的话题了。

Pi3开卖了

Pi3开卖了

第三代树莓派正式开卖,感觉改进很大,值得入手。最吸引人的除了CPU升级为64位ARM外,还有就是内置WiFi!想当初为了支持USB接口的WiFi,那是一顿折腾啊,Pi3就省事多了。

话说现在手头上还是Pi一代(model B),用起来一直很稳定,相当具有可玩性。

新闻链接:https://www.raspberrypi.org/blog/raspberry-pi-3-on-sale/

 

 

简单安装树莓派

简单安装树莓派

步骤比较简单,采用官方最新的raspbian安装很顺利,简要记录几点:

(1)从官网上下载推荐的win32diskimager软件,将raspbian的镜像写入SD卡。

(2)在路由器上找到raspberry pi的地址,通过ssh直接登录即可。缺省用户名为pi,密码为raspberry。

(3)登录进去后,首先运行sudo raspi-config,将系统扩展至整个SD卡,否则有很多空间无法使用。

(4)安装中文字体:

sudo apt-get install ttf-wqy-zenhei ttf-wqy-microhei

(5)安装xrdp,这样就可以使用windows系统自带的“远程桌面连接”登录raspberry了:

sudo apt-get install xrdp