使用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使用加密的方式去查询了。