1. 程式人生 > >[日常折騰](三)配置SS同時監聽IPv4/IPv6+多埠分享SS服務

[日常折騰](三)配置SS同時監聽IPv4/IPv6+多埠分享SS服務

一、 前言

需要直接看實現方法的可以直接跳到章節《二、實施過程》
昨天在這篇文章小結了搭建SS服務的過程,今天來整理一下在下配置SS同時監聽IPv4和IPv6的過程,以及如何將“過剩”的SS伺服器資源分享給在下的同學一起使用。
先介紹背景:
在下的學校提供IPv6服務,校園網計費是基於IPv4流量進行的,所以只要通過SS將所有IPv4流量轉為IPv6流量即可進行所謂“免流”,也就是上一篇文章介紹的內容。
而到了暑假,在下因為留校學習繼續待在學校,而在下的同學們回家之後無法繼續使用IPv6網路。於是乎就有了本文涉及的問題:如何配置SS伺服器同時監聽IPv4和IPv6,並且把其中監聽IPv4的服務共享給在下校外的同學。

二、實施過程

1. IPv4與IPv6同時監聽

此前在下弄錯了所使用的SS版本,採用SS libev的配置方法進行了設定——實際執行的是SS python,在查閱wiki之後對本段進行修正。
查閱wiki後將配置檔案中的server修改為如下

"server":"::",

即可實現同時監聽IPv4和IPv6。
但是同時根據另一位博主的文章,可以通過多個配置檔案、啟動多個執行緒實現同時監聽,以及在下需要的實現的通過不同埠進行SS服務的共享。

2. 另一種方法

2.1 配置檔案

這位博主採取的思路是建立兩個配置檔案,並啟動SS分配不同程序實現同時監聽。
比如在下建立兩個配置檔案config4.json

config6.json
config4.json中進行如下配置

{
"server":"伺服器IPv4地址",
"server_port":埠號,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"密碼",
"timeout":600,
"method":"aes-256-cfb",
"fast_open":true
}

config6.json中進行如下配置

{
"server":"伺服器IPv6地址",
"server_port":另一個埠號,
"local_address":"127.0.0.1",
"local_port
":1080, "password":"密碼", "timeout":600, "method":"aes-256-cfb", "fast_open":true }

注意不同配置檔案的埠不要衝突

2.2 啟動服務

分別從兩個配置檔案啟動SS並分配不同程序

ssserver -c /etc/config4.json -d start --pid-file ss1.pid
ssserver -c /etc/config6.json -d start --pid-file ss2.pid

如果需要停止服務,同樣是把start替換成stop

ssserver -c /etc/config4.json -d stop --pid-file ss1.pid

一切順利的話此時已經成功啟動了兩個程序,分別監聽IPv4和IPv6;同時兩個配置檔案指定了不同的埠,順便達到了“分享”SS服務的目的——校外的朋友通過IPv4網路連線代理;而在下在校內通過IPv6網路連線代理,達到免流的效果。
經過在下測試,通過增加配置檔案和程序是能夠達到多人共享同一個SS伺服器的目的的,例如要啟用第三個配置檔案,只需簡單的編寫配置檔案後,執行

server -c /etc/config_xxx.json -d start --pid-file ss3.pid

即可新增一個共享,同理停止這個共享也相對簡單。
在下和同學進行了測試,已經能夠“共享”伺服器的SS服務了。

三、小結

在找到本文所參考的方法之前在下對此前的兩種配置方法進行了多次嘗試,均以不能同時進行監聽而終,思考其原因,應該是中文參考資料的更新速度不夠理想,搜尋資料時排在前列的多是已經過時的資料;在下也是花了一番工夫才找到和在下有著同樣問題、且提供瞭解決方法的博主,在此再一次對他/她表示感謝。
由於在下能力有限,文章的紕漏還請指出,感謝。
(修改於2017年7月28日)