树莓派做透明代理

2016-11-30 fishedee 后端

1 概述

为了让手机和电脑能透明使用socks代理,购入了一个树莓派,释放wifi热点,然后电脑或手机连接wifi热点后自动转代理即可

2 安装系统

2.1 环境

MacOS+树莓派3B

2.1 下载系统

先下载最新官方系统,解压后得到img文件

2.2 烧录系统

Screen Shot 2016-11-30 at 9.29.09 P

将minisdcard插入读卡器,最好放到usb3接口上

  1. df -h查看sdcard卡挂载
  2. umount取消挂载
  3. dd直接将映像文件写入到sdcard上即可,注意目标是rdisk2,不是disk2,不然会很慢
  4. 想中途查看dd进度的话,可以用kill -INFO $PID

2.3 连接系统

Screen Shot 2016-11-30 at 9.22.55 P

将sdcard插入到系统上,网口连接路由器,树莓派默认会自动获取ip地址,并且开启ssh端口。然后,我们在路由器的dhcp客户端列表中就可以到树莓派的ip地址了

Screen Shot 2016-11-30 at 9.41.10 P

然后使用默认的ssh就能登录了,账号是pi,密码是raspberry

2.4 基础配置

Screen Shot 2016-12-01 at 7.14.59 P

输入sudo raspi-config进行基础配置,更改密码,以及默认启动command-line

Screen Shot 2016-11-30 at 9.44.19 P
deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib

更新apt的源为阿里镜像,然后apt-get update更新一下

sudo apt-get install vim

安装基础软件vim

3 网络配置

3.1 有线配置

# 指定接口 eth0
interface eth0
# 指定静态IP,/24表示子网掩码为 255.255.255.0
static ip_address=192.168.1.31/24
# 路由器/网关IP地址
static routers=192.168.1.1
# 手动自定义DNS服务器
static domain_name_servers=114.114.114.114

将有线网络设置为静态ip,修改/etc/dhcpcd.conf文件即可,完成后reboot

3.2 无线配置

sudo apt-get install hostapd dnsmasq

安装hostapd(无线热点工具),dnsmasq(DHCP和dns工具)

interface=wlan0
dhcp-range=10.0.0.2,10.0.0.255,255.255.255.0,12h

配置/etc/dnsmasq.conf

interface=wlan0
hw_mode=g
channel=10
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
wpa_passphrase=wifi密码
ssid=wifi名字

配置/etc/hostapd/hostapd.conf

net.ipv4.ip_forward=1

配置内核的路由转发/etc/sysctl.conf

sudo ifconfig wlan0 down
sudo ifconfig wlan0 10.0.0.1 netmask 255.255.255.0 up
sudo rm -rf /dev/random
sudo ln -s /dev/urandom /dev/random
sudo service dnsmasq restart
sudo hostapd -B /etc/hostapd/hostapd.conf & > /dev/null 2>&1
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

在/etc/rc.local的exit前面配置这些启动项

然后用手机连接wifi热点就可以了

4 代理配置

4.1 shadowsocks

git clone git@github.com:shadowsocks/shadowsocks-libev.git
sudo apt-get install --no-install-recommends build-essential autoconf libtool libssl-dev libpcre3-dev asciidoc xmlto
cd shadowsocks-libev
./configure
make

下载shadowsocks的客户端版本,并安装依赖包libevent,然后configure,最后make开始编译

cd src
sudo ln -s ss-local /bin/ss-local
sudo mkdir /etc/shadowsocks
sudo touch /etc/shadowsocks/shadowsocks.json

编译成功后src会出现ss-local可执行文件,把它放到bin目录下,并创建shadowsocks.json配置文件

{
    "server":"服务器ip",
    "server_port":"服务器端口",
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"服务器密码",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

在shadowsocks.json填写以上配置

4.2 redsocks

git clone git@github.com:darkk/redsocks.git
sudo apt-get install libevent-dev
cd redsocks
make

下载redsocks,并安装依赖包libevent,然后make开始编译

sudo ln -s redsocks /bin/redsocks
sudo mkdir /etc/redsocks
sudo touch /etc/redsocks/redsocks.conf

编译成功后会出现redsocks可执行文件,把它放到bin目录下,并创建redsocks.conf配置文件

base{
    log_debug = on;
    log_info = on;
    log = "file:/var/log/redsocks.log";
    daemon = on;
    redirector = iptables;
    user = nobody;
    group = nobody;
}

redsocks {
    local_ip = 127.0.0.1;
    local_port = 31338;
    ip = 127.0.0.1;
    port = 1080;
    type = socks5;
}

在redsocks.conf填写以上配置

4.3 iptables

sudo ss-local -c /etc/shadowsocks/shadowsocks.json & > /dev/null 2>&1
sudo redsocks -c /etc/redsocks/redsocks.conf & > /dev/null 2>&1

sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -d 0.0.0.0 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 服务器IP -j RETURN
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 31338

sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp  -j REDSOCKS

将以上配置写入到/etc/rc.local自启动项,启动后打开ss-local与redsocks,并让本地的tcp通信和无线的tcp通信都指向到redsocks中去。最后重启一下就ok了

5 总结

让树莓派做了透明代理后,非常好用。手机,和电脑都不需要装任何的代理软件以及做任何的配置,直接连上pi的wifi就能翻墙了,兼容性好,速度也还不错。

唯一有点忧伤的是,树莓派说到底还是学习平台,wifi和网卡性能都比较弱。

相关文章