如何在DigitalOcean上設置Shadowsocks伺服器

這是關於如何在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上設置Shadowsocks:數字海洋液滴選項。

然後單擊「創建」按鈕以創建您的液滴。

完成後,您將能夠在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),可以將內核更改為舊內核。為此,