0%

Raspberry Pi利用openwrt搭建翻墙路由器

环境

  1. Raspberry Pi 3B

  2. 固件下载地址:openwrt,根据硬件平台选择合适的固件;
    树莓派对应固件目录:brcm2708/bcm2710 (2710 对应 rpi 3)
    本次使用固件版本(rpi-3-ext4-factory.img.gz):openwrt-18.06.5

  3. 使用 Win32DiskImager 刷入openwrt固件,最新版本地址:latest

  4. 插入SD卡,启动树莓派

接入网络

  1. 启动树莓派之后,网线直连电脑,浏览器输入 192.168.1.1 进入 openwrt web界面管理;
  2. 设置root密码进入
  3. 选择 Network -> Interfaces,选择 add interfaces,添加新接口 wan,如下图所示:

哎呀,图片加载失败···
哎呀,图片加载失败···

选择 Submit 之后,选在 Save

  1. 编辑 LAN 口,选择 Physical Settings,设置 Interface,如下图所示:

哎呀,图片加载失败···

Save 即可

可以再进入 General Setup 修改下 IPV4 地址,和上级路由器不同网段即可,此处我设置为了 10.0.0.1,修改之后点击 Save

  1. 选择 Network -> Wireless,开启无线AP功能,后边可通过连接树莓派wifi,进行openwrt的相关配置;
    如果没有设置 firewall,无法通过wan口的ip访问ssh和web服务

  2. 上述修改完成后,点击右上侧 UNSAVED CHANGES,然后 Save & Apply
    如果失败,请强制保存

哎呀,图片加载失败···

  1. 将树莓派接入已联网的路由器的Lan口,树莓派即可上网。

安装软件

  1. 连接树莓派的wifi,默认无线名称是 OpenWrt

  2. ssh 登录后台,ip为树莓派LAN口设置的静态ip,用户名 root,没有密码

  3. passwd 设置密码

  4. 安装中文包

    1
    2
    3
    # opkg update
    # opkg install luci-i18n-base-zh-cn
    # opkg install luci-i18n-firewall-zh-cn
  5. 安装 sftp 服务

    1
    2
    3
    # opkg install vsftpd openssh-sftp-server
    # /etc/init.d/vsftpd enable
    # /etc/init.d/vsftpd start

    openwrt 自带 scp,也可用scp

  6. 安装shadowsocks和dns-forwarder

    1
    2
    # wget http://openwrt-dist.sourceforge.net/packages/openwrt-dist.pub -O /tmp/openwrt-dist.pub
    # opkg-key add /tmp/openwrt-dist.pub

    自定义feeds

    1
    2
    src/gz openwrt_dist http://openwrt-dist.sourceforge.net/packages/base/mipsel_24kc
    src/gz openwrt_dist_luci http://openwrt-dist.sourceforge.net/packages/luci

    更新并安装

    1
    2
    3
    4
    5
    # opkg update
    # opkg install dns-forwarder
    # opkg install luci-app-dns-forwarder
    # opkg install shadowsocks-libev
    # opkg install luci-app-shadowsocks

    PS:上述自定义源方式没试过。
    shadowsocks和dns-forwarder也可下载之后手动安装:
    shadowsocks-libev
    luci-app-shadowsocks
    dns-forwarder
    luci-app-dns-forwarder

  7. 安装dnsmasq-full
    openwrt自带dnsmasq,但是不支持ipset,所以要安装dnsmasq-full

    1
    # opkg install dnsmasq-full

    由于openwrt自带dnsmasq,可能会导致安装失败,但是不能先卸载dnsmasq再安装dnsmasq-full,卸载dnsmasq之后就无法联网了。
    opkg install dnsmasq-full 完成之后,可以看到dnsmasq-full的ipk包的路径,手动下载安装即可;
    dnsmasq和dnsmasq-full所用配置文件一样,更新配置文件为安装dnsmasq-full时产生的文件。
    最后删除自带dnsmasq

    1
    # opkg remove dnsmasq

配置

  1. 配置shadowsocks
    选择 服务 -> 影梭
    哎呀,图片加载失败···
    添加服务器,然后打开透明代理,第一次配置之后需要重启树莓派才会生效;
    哎呀,图片加载失败···
    重启之后,查看透明代理状态

  2. 配置dns-forwarder
    选择 服务 -> DNS 转发,监听端口设置为 5353
    哎呀,图片加载失败···

  3. 配置firewall
    选择 网络 -> 防火墙 -> 自定义规则
    添加如下规则:

    1
    2
    3
    4
    ipset -N gfwlist iphash
    iptables -t nat -A PREROUTING -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 1234
    iptables -t nat -A OUTPUT -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 1234
    ipset add gfwlist 8.8.8.8

    重启防火墙

  4. 添加gfwlist
    新建并进入目录 /etc/dnsmasq.d,下载文件 dnsmasq_gfwlist_ipset.conf
    这个文件中的域名解析将走 127.0.0.1:5353 ,DNS转发已配置,上游DNS 8.8.8.8

    1
    2
    3
    # wget https://cokebar.github.io/gfwlist2dnsmasq/dnsmasq_gfwlist_ipset.conf
    # echo "conf-dir=/etc/dnsmasq.d" >> /etc/dnsmasq.conf
    # /etc/init.d/dnsmasq restart
  5. 自定义 DNS
    对 WAN 口进行如图配置,自定义DNS服务器为 127.0.0.1,DNS解析交给dnsmasq-full
    哎呀,图片加载失败···
    选择 网络 -> DHCP/DNS,设置DNS转发,将ISP的DNS填入(或者使用公共DNS 如:114.114.114.114),国内域名走国内解析
    哎呀,图片加载失败···

测试

全方位IP地址查询

配置参考:Openwrt折腾记录03