Tse-Yao的部落格

DAZN, DNSmasq, Geo Block, raspberrypi, raspberrypi_router, Router, Shadowsocks, VPN, vpnrouter, vpn路由器, 樹莓派, 無線網路路由器, 路由器

Shadowsocks-利用樹莓派(Raspberry Pi)做具有Shadowsocks功能的Gateway

admin
Spread the love
相簿封面

Shadowsocks-DAZN日文版是我最近愛用的線上體育播放平台,他幾乎囊括了所有知名的足球聯賽的比賽,例如英超、西甲、意甲、土超還有日本的J League,都在這個平台。加上還有NFL、F1、網球台維斯杯等賽事,以及比賽回看的功能,真的是物超所值!但是DAZN這個平台也是出了名的難搞,DAZN非常挑VPN,幾乎國外的大廠都中箭落馬,後來我就選了日本國內的Interlink這家VPN廠商的服務,之前也用的非常好。

直到最近,DAZN開始擋Interlink的IP,所以我就換了另一家日本國內的VPN廠商-良之助。可是良之助只有提供Shadowsocks功能的VPN,沒有提供一般連線速度最快的PPTP協定,這就產生了一個困擾。原先我可以利用我的Raspberry Pi製作一個具有PPTP功能的wifi router,然後在連線到這個router,再把DAZN的影像投影至電視上。但是換成Shadowsocks協定,就比較不能用這樣的方式建立wifi router,將DAZN的影像投影。

後來,我在網路上看到有人利用Shadowsocks的Redirect功能,製作一個Gateway,讓在同一個網域的機器,可以藉由設定Gateway的方式,讓網路流量流到這個Gateway,達到VPN或翻牆的目的。他的概念如下:

於是我就想到我有一台Raspberry Pi 剛好空著,可以拿來做Shadowsocks的Gateway,所以以下就是我的步驟。

1.先用一片16G或32G的Micro SD,把抓取Raspberry Pi 的Buster版本的映像檔,用Etcher燒到Micro SD上。用Buster版本的好處是可以利用Repository的方式來更新、安裝,不用再自己自行製作deb包,來安裝Shadowsocks-libev。

2.先更新Repository並進行更新作業

Sudo apt update
Sudo apt upgrade

然後安裝Shadowsocks-libev

Sudo apt-get install shadowsocks-libev

3.在目錄下創建/etc/redir.json並將以下內容貼上。local_address必須使用0.0.0.0,使用127.0.0.1會出問題。另外,服務器地址要用IP的方式(例如60.138.248.203),而不是用像tw.yahoo.com的方式填寫。

Sudo nano /etc/redir.json

將以下內容貼上

{  
“server”:”服务器地址”,  
“server_port”:服务器开放的端口,  
“local_address”:”0.0.0.0″,  
“local_port”:1080,  
“password”:”密码”,  
“timeout”:600,  
“method”:”aes-256-cfb”,  
“fast_open”:false  
}

4.改寫/etc/sysctl.conf

Sudo nano /etc/sysctl.conf

#net.ipv4.ip_forward=1

改為

net.ipv4.ip_forward=1

然後製作兩個腳本

Sudo nano iptables.sh

將以下內容貼上

#!/bin/bash 
# Create new chain 
iptables -t nat -N SHADOWSOCKS  
iptables -t nat -A PREROUTING -p tcp -j SHADOWSOCKS  
# Ignore your shadowsocks server’s addresses 
# It’s very IMPORTANT, just be careful. 
iptables -t nat -A SHADOWSOCKS -d 服务器ip地址 -j RETURN  
# 这一步非常重要!到服务端的出口数据不要再进行重定向,否则进入死循环 
#去除内网地址 
iptables -t nat -A SHADOWSOCKS -d 0.0.0.0 -j RETURN  
iptables -t nat -A SHADOWSOCKS -d 127.0.0.1 -j RETURN  
iptables -t nat -A SHADOWSOCKS -d 192.168.0.0/16 -j RETURN

iptables -t nat -A SHADOWSOCKS -d 8.8.0.0/16 -j RETURN  
iptables -t nat -A SHADOWSOCKS -d 0.0.0.0/8 -j RETURN  
iptables -t nat -A SHADOWSOCKS -d 10.0.0.0/8 -j RETURN  
iptables -t nat -A SHADOWSOCKS -d 127.0.0.0/8 -j RETURN  
iptables -t nat -A SHADOWSOCKS -d 169.254.0.0/16 -j RETURN  
iptables -t nat -A SHADOWSOCKS -d 172.16.0.0/12 -j RETURN  
iptables -t nat -A SHADOWSOCKS -d 192.168.0.0/16 -j RETURN  
iptables -t nat -A SHADOWSOCKS -d 224.0.0.0/4 -j RETURN  
iptables -t nat -A SHADOWSOCKS -d 240.0.0.0/4 -j RETURN  
iptables -t nat -A SHADOWSOCKS -d 0.0.0.0/254.0.0.0 -j RETURN

#还可以加如国内ip段参见 https://gist.github.com/wen-long/8644507 
# Anything else should be redirected to shadowsocks’s local port 
iptables -t nat -A SHADOWSOCKS -p tcp -j REDIRECT –to-ports 1080

# Apply the rules 
#iptables -t nat -A OUTPUT -p tcp -j SHADOWSOCKS 
# 对于本机全局代理必须是加入到OUTPUT链中,上面这句可以不加,至此脚本结束

製作清理脚本 flash.sh

Sudo nano flash.sh

將以下內容貼上

#!/bin/bash 
iptables -F  
iptables -X  
iptables -t nat -F  
iptables -t nat -X  
iptables -t mangle -F  
iptables -t mangle -X  
iptables -P INPUT ACCEPT  
iptables -P OUTPUT ACCEPT  
iptables -P FORWARD ACCEPT

5.安裝dnsmasq及networkmanger

Sudo apt-get install network-manager dnsmasq

要在networkmanger中啟動dnsmasq

Sudo nano /etc/NetworkManager/NetworkManager.conf

dns=dnsmasq貼在前面有[main]文字的下面。

[main]

dns=dnsmasq

修改默认的dns配置文件

Sudo nano /etc/reslov.conf

將以下內容貼上

nameserver 127.0.0.1

創建/etc/reslov.dnsmasq

Sudo nano /etc/reslov.dnsmasq

將以下內容貼上

nameserver 127.0.0.1
nameserver 8.8.8.8  
nameserver 8.8.4.4

编辑/etc/dnsmasq.conf

Sudo nano /etc/dnsmasq.conf

在最後的地方加入

conf-dir=/etc/dnsmasq.d/,*.conf  
listen-address=192.168.1.104  
bind-interfaces  
cache-size=100000  
domain-needed  
resolv-file=/etc/resolv.dnsmasq

listen-address的地方請改為你的Raspberry Pi目前所在的IP位置。

啟動程序

Sudo systemctl enable dnsmasq  

Sudo systemctl start dnsmasq 

Ss-redir -u -c /etc/redir.json -f /var/run/shadowsocks.pid

Sudo sh ./iptables.sh

應用實例

在Apple TV上,可以先進入一般->網路->wifi設定,之後點選手動設定。

IMG_1372.jpg
IMG_1373.jpg

將IP和MASK填入先前的設定值,然後把Gateway和DNS都填入樹莓派網關的IP。手機上也是一樣的設定,這裡就不再贅述。

IMG_1374.jpg
Shadowsocks
IMG_1375.jpg
Shadowsocks

然後,如果沒有意外,就可以把DAZN的訊號投射到APPLE TV上了。

IMG_1354.png

2020/02/27新增內容-如何停止/啟動SS-redir

如果你是使用vps,例如Vultr之類的服務商,他們的主機的IP都是固定的,所以基本上Shadowsocks的連線都是穩定的。可是我另外一個Shadowsocks的服務商,他的Server IP就是浮動的,主要是因為對岸的GFW的原因,所以IP必須要是浮動的才能躲過封鎖。但是這也衍伸出一個問題,我要如何重新啟動SS-redir?

當然你可以一直不停的重開機,但是萬一他一個小時浮動一次,這樣不只你覺得厭煩,你的機器(樹莓派)可能也會招架不住。於是我就上網搜尋,找到了一個解決之道。

首先先輸入,

ps -aux | less

然後再用上下方向鍵,尋找SS-redir的PID代碼。請找尋pi以及ss-redir -u -c /etc/redir.json -f /var/run/shadowsocks.pid之前的PID數字。以下圖為例,這次的PID代碼為3913。

接著輸入#Q,離開ps -aux | less的畫面。

然後要利用kill指令來停止SS-redir。

kill -9 <PID代碼>

停止完成之後,再次啟動SS-redir

ss-redir -u -c /etc/redir.json -f /var/run/shadowsocks.pid

如果沒問題的話,你的Shadowsocks應該又可以重新連線了。

延伸閱讀:

ss-redir+dnsmasq+iptables 透明代理

ss-redir配合ipset转发TCP+UDP

dazn/iphone/ios-DAZN訂閱及收看方式

[Raspberry_Pi]使用樹莓派,做一個具有VPN功能的無線網路Repeater

良之助VPN官網

樹莓派Raspbian下載

Tags:

Comments

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Back to top