這是關於如何在DigitalOcean上設置Shadowsocks伺服器的教程。如果您有興趣,我們還有另一個關於在Amazon AWS EC2上設置Shadowsocks伺服器的教程。
雖然在DigitalOcean上設置Shadowsocks可能非常簡單並且可能只需要20分鐘,但這個過程確實需要您具備一些技術技能,例如使用Linux命令,SSH到遠程Linux伺服器,使用命令行文本編輯器(例如vi)編輯文件等
如果這些聽起來太難了,您可以考慮使用Shadowsocks替代方案,例如VPN。
如果您正在尋找付費的Shadowsocks服務,您可以嘗試12VPN,它提供Shadowsocks作為其VPN計劃的一部分。
為什麼選擇DigitalOcean來託管您的Shadowsocks伺服器
DigitalOcean是一家雲託管服務提供商,近年來變得非常受歡迎。它提供價格低廉的SSD伺服器,起價為每月5美元。與Amazon AWS EC2相比,在Digital Ocean上設置Shadowsocks伺服器更容易,因為您可以跳過諸如設置安全組,配置彈性IP地址等內容。
根據我們的經驗,您可以選擇最便宜的DigitalOcean主機方案(每月5美元)來託管您的Shadowsocks伺服器,它運行良好。對於此計劃,您將獲得512 MB RAM,20 GB SSD磁碟空間和1TB每月傳輸。
對於OS,我們將在本教程中使用Ubuntu。
對於伺服器位置,如果您將使用來自中國的Shadowsocks,我們建議您選擇DigitalOcean的舊金山數據中心,因為它似乎提供了最佳速度。
使用Digital Ocean註冊帳戶
如果您還沒有DigitalOcean帳戶,首先您應該註冊以獲得一個帳戶。對於新用戶,DigitalOcean提供免費的10美元信用額度。
在DigitalOcean創建Droplet
登錄DigitalOcean帳戶後,單擊頂部導航欄上的「Droplet」鏈接,然後單擊頂部的「Create Droplet」按鈕。然後,系統會要求您為新液滴選擇選項。我們建議您使用以下選項:
- 選擇圖像:選擇Ubuntu。
- 選擇尺寸:選擇5美元/月(如果您決定這樣做,則選擇較大的尺寸)
- 選擇數據中心區域:選擇舊金山(最適合從中國連接)
- 選擇其他選項:none(除非你想添加一些)
- 添加SSH密鑰:添加新SSH密鑰或選擇現有密鑰
然後單擊「創建」按鈕以創建您的液滴。
完成後,您將能夠在DigitalOcean控制面板的Droplets部分下看到新創建的Droplet。除了Droplet的名稱,您還將看到此Droplet的IP地址。您可以使用此IP地址通過SSH連接到DigitalOcean伺服器。稍後您還將使用此IP地址配置Shadowsocks客戶端。
連接到DigitalOcean伺服器以設置Shadowsocks
現在我們已經運行了Digital Ocean伺服器,我們需要連接它並設置Shadowsocks。您可以通過兩種方式連接到伺服器:使用DigitalOcean提供的基於Web的訪問控制台,或使用本地計算機上的終端通過SSH連接到伺服器。我們建議使用SSH,因為使用訪問控制台很難複製和粘貼等。
現在,讓我們使用以下命令SSH到您的DigitalOcean伺服器:
ssh root @ {your_droplet's_IP_address}
連接到伺服器後,運行以下命令:
首先,如果您的登錄帳戶不是root:
$ sudo su
然後讓我們更新我們的機器:
$ apt-get update
然後讓我們使用以下兩個命令安裝shadowsocks:
$ apt-get install python-pip
$ pip安裝shadowsocks
Shadowsocks支持許多加密方法。為了優化性能,我們建議使用chacha20加密方法。但是,我們需要先安裝它。以下是設置chacha20加密的命令:
$ apt-get install python-m2crypto $ apt-get install build-essential $ wget https://github.com/jedisct1/libsodium/releases/download/1.0.10/libsodium-1.0.10.tar.gz $ tar xf libsodium-1.0.10.tar.gz && cd libsodium-1.0.10 $ ./configure && make && make install $ ldconfig
現在讓我們為Shadowsocks創建一個配置文件,它應該被創建為「/etc/shadowsocks.json」。讓我們使用vi編輯器來執行此操作:
$ vi /etc/shadowsocks.json
將以下內容添加到shadowsocks配置文件中:
{ 「伺服器」:「your_droplet's_IP_address」 「SERVER_PORT」:8000, 「LOCAL_PORT」:1080, 「密碼」:「your_password」 「超時」:600, 「方法」: 「chacha20」 }
請注意,上面的配置只為Shadowsocks伺服器打開一個埠(8000),它只支持一次登錄。如果要設置多個使用不同密碼的用戶,可以通過設置多個埠(每個埠使用不同的密碼)來實現。下面是一個配置文件示例:
{ 「伺服器」:「your_droplet's_IP_address」 「port_password」:{ 「443」:「password1」, 「8000」:「password2」, 「8383」:「password3」, 「8384」:「password4」 }, 「LOCAL_PORT」:1080, 「超時」:600, 「方法」: 「chacha20」 }
現在我們已經準備好了。我們可以使用以下命令啟動新的Shadowsocks伺服器:
$ ssserver -c /etc/shadowsocks.json -d start
如果你想仔細檢查一切是否正常,你可以查看Shadowsocks的日誌文件:
$ less /var/log/shadowsocks.log
如果您在Shadowsocks日誌文件中沒有看到任何錯誤消息,那麼您沒問題。
將來,如果要停止Shadowsocks伺服器,請使用以下命令:「ssserver -c /etc/shadowsocks.json -d stop」。如果要重新啟動Shadowsocks伺服器,請使用以下命令:「ssserver -c /etc/shadowsocks.json -d restart」。
我們還需要設置一件事。我們需要確保每次伺服器重新啟動時,我們的Shadowsocks伺服器都會自動啟動。為此,讓我們使用vi編輯以下文件:
$ vi /etc/rc.local
在打開的文件中,在「退出0」之前將以下行添加到底部:
/ usr / bin / python / usr / local / bin / ssserver -c /etc/shadowsocks.json -d start
涼。現在我們在DigitalOcean上運行了一個Shadowsocks伺服器!
如果你想在這裡停下來,那就完全沒了問題。您現在可以在DigitalOcean上享受新創建的Shadowsocks伺服器並根據需要使用它。
但是,讓我們繼續介紹Shadowsocks伺服器優化的一些技巧。
Shadowsocks伺服器優化
默認情況下,我們的Shadowsocks伺服器可能無法處理大量流量。如果您希望它能夠處理大量並發連接,則需要增加打開文件描述符的最大數量。現在讓我們這樣做:
$ vi /etc/security/limits.conf
將以下兩行添加到該文件:
* soft nofile 51200 * hard nofile 51200
注意:不要跳過「*」符號,因為它們是行的一部分。之後,讓我們暫時停止Shadowsocks伺服器:
$ ssserver -c /etc/shadowsocks.json -d stop
然後設置ulimit:
$ ulimit -n 51200
然後讓我們通過編輯/etc/sysctl.conf文件來調整內核參數:
$ vi /etc/sysctl.conf
將以下行添加到該文件的末尾:
fs.file-max = 51200 net.core.rmem_max = 67108864 net.core.wmem_max = 67108864 net.core.netdev_max_backlog = 250000 net.core.somaxconn = 4096 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.ip_local_port_range = 10000 65000 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_fastopen = 3 net.ipv4.tcp_mem = 25600 51200 102400 net.ipv4.tcp_rmem = 4096 87380 67108864 net.ipv4.tcp_wmem = 4096 65536 67108864 net.ipv4.tcp_mtu_probing = 1 net.ipv4.tcp_congestion_control =立方體
要使我們的更改生效,請運行以下命令:
$ sysctl -p
現在是時候重新啟動Shadowsocks伺服器了:
$ ssserver -c /etc/shadowsocks.json -d start
連接到Shadowsocks伺服器
現在您已經在DigitalOcean上成功設置了Shadowsocks伺服器,您可以使用Shadowsocks客戶端連接到它。請參考Shadowsocks.org關於客戶端設置等的官方文檔。我們在這裡包含詳細信息對我們來說太過分了。配置客戶端時,只需確保使用正確的IP地址,埠號,密碼以及在Shadowsocks配置文件中設置的加密方法。
一些附加說明
對於Shadowsocks伺服器優化,曾經有另一個技巧,即使用名為ServerSpeeder的第三方軟體來加速伺服器。在我們的Shadowsocks伺服器上啟用ServerSpeeder後,我們看到了大幅提升。但是,遺憾的是,ServerSpeeder在2016年初停止接受新的註冊和安裝。如果您有一個舊的ServerSpeeder帳戶仍允許您在新伺服器上安裝,那麼您一定要將它安裝在託管Shadowsocks伺服器的DigitalOcean Droplet上。使用ServerSpeeder的另一個技巧是它只支持有限數量的Linux內核。伺服器的內核可能太新,無法支持ServerSpeeder。要解決此問題(假設您確實可以在伺服器上安裝ServerSpeeder),可以將內核更改為舊內核。為此,