使用raspberry pi 通过ssh来建立socks5连接并解决dns的问题

使用raspberry pi 来为家里的电脑,手机,平板做网关来上网。 使用ssh的方式连接服务器做socks5转发流量。 但是由于DNS污染,本地解析的IP可能是错误的,所以一并解决dns污染的问题。

2014-07-10 08:52:26

socks服务用redsocks 下载地址:http://darkk.net.ru/redsocks/

192.168.0.100 是树莓派的ip

1.建立ssh连接
ssh -fN -D 192.168.0.100:7009 用户名@服务器ip
用netstat -antp看看是不是有7009端口的监听,如果有就成功了
这个时候用firefox的代理上网就ok了

2.安装redsocks
下载后解压,直接在目录中运行make就可以
把生成的redsocks 运行 cp redsocks /sbin/redsocks
这样方便使用

3.配置redsocks


将下面的内容写入到redsocks.conf,注意修改ip地址信息:
base{
log_debug = on;
log_info = on;
// 日志文件地址
log = "file:/var/log/redsocks.log";
daemon = on;
redirector = iptables;
user = nobody;
group = nobody;

}

redsocks {
//本地redsocks要监听的地址和端口
local_ip = 192.168.0.100;
local_port = 7008;
//socks地址和端口
ip = 192.168.0.100;
port = 7009;
type = socks5;
}

用此命令启动
/sbin/redsocks -c /etc/redsocks/redsocks.conf
用netstat -antp看看是不是有7008端口的监听,如果有就成功了。

这时候,redsocks已经连接上了7009这个socks5
现在只需要把通过respberry pi的流量转向7008端口就行了

iptables -t nat -N REDSOCKS
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-port 7008
iptables -t nat -I PREROUTING -p tcp -s 192.168.0.200 -j REDSOCKS

第三个iptables的意思是,只让192.168.0.200的流量去7008,所以需要根据自己的情况修改


这个时候已经ok了,只需要把192.168.0.200的网关改成192.168.0.100就行了

================================================

使用socks5后,还会有一些问题,这是因为dns问题
firefox 可以使用远程dns (但是有问题)

提供一个办法,在树莓派上使用dnscrypt
官网地址:http://dnscrypt.org/

下载后,安装,这个需要libsodium包(Sodium is a new, easy-to-use software library for encryption, decryption, signatures, password hashing and more.)

./configure
make
make install 之后

启动
dnscrypt-proxy --resolver-name=dnscrypt.eu-dk --logfile=/var/log/dns --local-address=192.168.0.100 --daemonize

dnscrypt.eu-dk是可以换的,在一个csv文件中,第一列就是这个地址
用netstat -anup看看是不是有53端口的监听,如果有就成功了

把树莓派的dns改成192.168.0.100 ,平板电脑的dns也改成这个192.168.0.100,就行了

这时候dns就会去192.168.0.100使用加密的方式去查询了。

徜徉于这片废土的我们.....应当去哪里追寻更好的自己?