[轉]OpenWrt搭建透明Shadowsocks筆記
由於眾所周知的原因,Shadowsocks被迫停止開發了,美 博園轉載此文,供有技術的網友參考。
一、背景
自從上次寫過一篇DLink路由器刷OpenWrt的筆記之後, 到現在已經過去好幾個月了。 一直在研究最正確的姿勢搭建Shadowsocks, 但過程中一直有問題。
本篇記錄搭建過程中踩過的一些坑。
二、任務目標
本次任務的總目標是: 將通過路由器的流量自動分流, 國內的直連目標伺服器, 國外的通過敵國的Shadowsocks伺服器轉發。
詳細的操作有如下幾步:
1. 需要本地建立轉發代理伺服器將出國流量通過該服務轉發;
2. 由於存在DNS污染,需要提供穩定的線路向Google的DNS伺服器查詢,本地轉發53連線埠流量;
3. 國內流量需要能無縫切換,且不通過Google DNS查詢(太慢);
三、相關資料
現有一份比較周全的文檔在這裡:
https://github.com/softwaredownload/openwrt-fanqiang/blob/master/SUMMARY.md
四、詳細步驟與坑
4.1 伺服器端搭建
這裡博主踩了很久的坑, 由於對Shadowsocks不太熟悉, 而且個人比較偏愛Python, 所以一直使用Python版本搭建伺服器端, 導致後面的DNS轉發一直出問題。
經過探索發現目前為止貌似只有libev版的Shadowsocks支持UDP轉發, 可用於搭建DNS轉發線路。
關於libev版的安裝, 個人推薦直接參考GitHub上的項目README, 比較直觀。
最粗暴的安裝方式是先克隆倉庫到伺服器本地, 然後跑這個:
sudo apt-get install build-essential autoconf libtool libssl-dev ./configure && make sudo make install
之後隨便在什麼地方都可以直接啟動服務。
關於UDP轉發的另一個坑是, 需要伺服器啟動的時候加入一個啟動參數 -u , 官方的說法是啟動udprelay模式, 這樣伺服器才會轉發UDP請求。
4.2 路由器客戶端的部署
安裝的步驟直接參考教程基本可以搞定, 分為兩個大步驟, 首先是客戶端的安裝, 直接下載並搞進路由器里用dpkg安裝即可; 其次是配置自動切換, 國內流量直連, 國外流量走代理。
很多時候由於網路的原因會導致各種下載失敗, 推薦直接在本地用各種辦法把文件搞下來之後再scp傳進路由器里。
需要注意的主要是伺服器的ip, 各種連線埠的設置。
常用的幾個配置項如下:
0. 敵國伺服器Shadowsocks配置(寫到config.json里由本地Shadowsocks讀取即可) 1. 敵國伺服器的ip地址:需要在iptables轉發的設置里配置為直連 2. 路由器本地Shadowsocks監聽連線埠(UDP轉發的需要在dnsmasq里配置,TCP的需要在iptables轉發里設置)
4.3 步驟測試
很多時候有各種各樣腦殘的故障, 通過一些特定的辦法可以快速找到問題的原因。
4.3.1 測試基本的網路連通性
簡單,直接用各種終端連接路由器, 測試百度是否能夠打開即可。
4.3.2 測試tcp轉發是否正常
由於是智能轉發, 因此可以通過訪問國外網站測試連通性。
這裡需要注意的是, 應該避免由於UDP轉發失敗導致的網路斷開, 如果百度可以訪問但所有國外網站均無法打開, 可以通過如下步驟測試tcp是否正常:
1. 修改路由器中/etc/dnsmasq.d/gfwlist.conf,將查詢修改為114.114.114.114,確保所有DNS請求正常(不保證防污染) 2. 重啟dnsmasq讓配置生效 3. 終端通過路由器訪問國外未被DNS污染的網站,例如https://lifehacker.com/ 4. 如果訪問成功說明tcp轉發沒有問題,反之則需要檢查Shadowsocks鏈路是否故障
4.3.3 測試udp轉發是否正常
如果網路通訊正常, 且去掉UDP轉發的情況下一般的國外網站可以訪問, 則問題歸結為UDP轉發失敗。
UDP轉發依賴於伺服器的udprelay, 因此需要注意自建的伺服器是否使用支持UDP轉發的版本並開啟udprelay(參考4.1節內容)。 如果是購買的Shadowsocks服務則需要確認是否支持udp轉發。
排除伺服器故障之後, 本地的UDP轉發需要檢查連線埠設置是否正確, 並通過進程查看ss-tunnel是否啟動。
重新修改/etc/dnsmasq.d/gfwlist.conf恢復為本地UDP轉發, 配置正確的連線埠設置。
通過路由器直接nslookup檢查twitter的DNS解析是否成功, 如果成功說明DNS轉發正常, 否則說明還有問題。
五、總結
本篇主要記錄在OpenWrt上配置Shadowsocks的流程及各種常見問題, 以及一些簡單的問題定位方法。
基本的流程為:
伺服器搭建 本地ss搭建 配置本地ss智能轉發 步驟故障排除
本文鏈接:[轉]OpenWrt搭建透明Shadowsocks筆記
美博園文章均為「原創 - 首發」,請尊重辛勞撰寫,轉載請以上面完整鏈接註明來源!
軟體著作權歸原作者!個別轉載文,本站會註明為轉載。
這裡是你留言評論的地方