在本文中,我們將展示由 ArchLinux/CentOS 作業系統驅動的專用伺服器上的 3proxy 配置。 3proxy 是最相關且功能最強大的工具之一。它支援各種類型的協定:HTTP、HTTPS、FTP、SOCKS等。它將幫助您在幾分鐘內設定自己的代理伺服器。
本文包含實用程式安裝及其後續配置的逐步指南。文章探討了從官方來源安裝、設定設定檔、開放非標準連接埠等問題,並描述了常見錯誤以及相應的實用解決方法。啟動前,您必須訂購一台搭載 CentOS 或 ArchLinux 作業系統的VPS或獨立伺服器。範例中的所有操作都將在一台搭載 CentOS 7 作業系統並擁有一個獨立靜態公網 IP 位址的獨立伺服器上執行。
安裝
步驟 1
3proxy 直接從原始碼安裝。編譯器將使用gcc 。我們以 root(超級用戶)身份連接到伺服器並安裝編譯器。
yum install gcc
步驟 2
現在需要下載 3proxy 的原始碼檔案。您可以訪問官方網站,複製最新版本的連結來完成此操作:
在撰寫本文時,目前版本是 0.9.3。下載並立即解壓縮:
wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz
tar -xvzf 0.9.3.tar.gz
步驟 3
進入解壓縮後的專案目錄並進行編譯:
cd 3proxy-0.9.3/
make -f Makefile.Linux
步驟 4
我們建立目錄並將 3proxy 檔案複製到 /usr/bin:
mkdir -p /var/log/3proxy
mkdir /etc/3proxy
cp bin/3proxy /usr/bin/
步驟 5
我們建立一個使用者來操作目錄。在本例中,使用者名稱是3proxyuser:
useradd -s /usr/sbin/nologin -U -M -r 3proxyuser
我們授予建立的使用者使用目錄的權限:
chown -R 3proxyuser:3proxyuser /etc/3proxy
chown -R 3proxyuser:3proxyuser /var/log/3proxy
chown -R 3proxyuser:3proxyuser /usr/bin/3proxy
現在讓我們使用以下命令建立一個設定檔:
touch /etc/3proxy/3proxy.cfg
如有必要,您可以為 root 使用者設定設定檔權限。此步驟並非強制性,但可以增加安全性:
chmod 600 /etc/3proxy/3proxy.cfg
3代理配置
步驟 6
需要正確填寫之前建立的設定檔。首先,透過以下命令找出使用者的uid和gid:
id 3proxyuser
在我們的例子中,這些是以下值:
要填寫配置文件,您可以直接使用現成的配置,也可以參考官方網站上的文件。此外,預設已預先安裝範例文件,您可以在下列路徑找到它:/cfg/3proxy.cfg.sample
例如,我們將考慮兩種配置:帶日誌記錄的配置和不帶日誌記錄的配置。每一行都會附有註解(以「#」符號標記)。
這是一個不帶日誌記錄的現成設定範例:
# We specify the user's data that we found out in the previous command
setgid 995
setuid 997
# Type the NS-servers. It is possible to clarify your own servers at /etc/resolv.conf
nserver 1.1.1.1
nserver 8.8.8.8
# Cache size
nscache 65536
# Timeouts
timeouts 1 5 30 60 180 1800 15 60
# Authorization of users by login/password (if required). You may not to use it or specify the path to the file in which authorization data is stored, for example, users $/etc/3proxy/.authfile
# If you insert a password in md5 format, replace “CL” with “CR”, as indicated in the example. You can use 2 methods at the same time.
auth cache strong
users "userproxy:CL:passwordproxy"
users "userproxy2:CR:b89097a7ad0b94f13b3c313ae76699d4 "
# Launch mode. Daemon only.
Daemon
# We write the port through which the http connection will take place. The example shows the standard one. To establish a socks connection, use the command specified in the second line, the port is also standard.
proxy -p3128
socks -p1080
我們之前考慮過不使用日誌記錄的設定檔方案。現在我們將建立一個包含日誌記錄和使用者授權功能的設定檔;該檔案將在伺服器設定過程中使用。
請務必提供授權訊息,因為即使在非標準連接埠上也能偵測到伺服器。
# Configuring the server to launch from the userproxy user and the passwordproxy password.
users userproxy:CL:passwordproxy
# Specify the user's uid and gid
setgid 995
setuid 997
# Nameservers (NS-servers)
nserver 1.1.1.1
nserver 8.8.8.8
# Timeouts
timeouts 1 5 30 60 180 1800 15 60
# Cache size (standard)
nscache 65536
# Indicate the launch mode
daemon
# We install http proxy on a non-standard 50001 port. If there are several IP addresses on the server, be sure to specify a specific address for connecting the network. For example, "-e91.150.32.146". The argument "i" is a local address.
proxy –p50001
# In a same way as socks proxy, we conduct the installation on a 50002 port.
socks –p50002
# Path to the directory with logs, logs format and proxy rotation
Log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
這樣就完成了主設定檔的設定。我們進入最後階段並啟動。
步驟 7
為 systemd 建立初始化檔:
touch /etc/systemd/system/3proxy.service
頒發必要的權利:
chmod 664 /etc/systemd/system/3proxy.service
將以下值複製並貼上到文件中並儲存:
[Unit]
Description=3proxy Proxy Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep 3proxyuser`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target»
請注意:在「ExecStop」值中,您必須指定在步驟 5 中建立的使用者名稱。
之後您需要使用以下指令更新守護程式設定:
systemctl daemon-reload
步驟 8
我們唯一需要做的就是啟動配置的 3proxy,將其新增至自動啟動,並在防火牆中開啟連接埠。
將其新增至自動啟動、啟動和檢查狀態:
systemctl enable 3proxy
systemctl start 3proxy
systemctl status 3proxy
檢查狀態後,我們看到3proxy已經啟動成功的訊息:
剩下唯一要做的事情就是開啟連接埠:
firewall-cmd --zone=public --add-port=50001/tcp
firewall-cmd --zone=public --add-port=50002/tcp
firewall-cmd –reload
如果有必要,請重新啟動伺服器。可以使用以下命令檢查連接埠是否開啟:
firewall-cmd --list-all
應該是:
我們可以看到,兩個連接埠都已成功開啟並正在監聽。 http 連接在第一個連接埠上,socks 在第二個連接埠上。
透過任何便捷的服務檢查連線:
一切運作正常。我們不建議在未進行登入/密碼驗證的情況下使用不安全的連接,也不建議使用標準連接埠。在設定設定檔時,請務必指定登入名稱並建立複雜密碼,同時將連接埠變更為非標準連接埠。在特殊情況下,可以使用 IP 位址驗證。
常見問題
出現問題且代理無法正常運作?也許 3proxy 配置不正確。讓我們考慮在安裝和配置實用程式期間最常見的問題及其解決方案。
無連接
當設定檔似乎配置正確時,許多用戶最常見的問題是無法存取的連接。如果您確定所有設定均已正確配置,託管服務提供者未限制所選連接埠且所有資料都表明服務正常運行,則問題可能出在防火牆上,或者更準確地說,是其配置不正確。例如,系統上可能安裝了兩個以上的程序,這些程序會相互衝突。為了解決這個問題,使用特定的防火牆就足夠了。我們建議您只選擇 iptables 或firewall-cmd。
服務未啟動
完成所有必要的設定檔設定後,服務仍然無法啟動。這可能是由於遺漏了某個設定步驟、未授予對應的權限,或是設定檔中存在細微錯誤所造成的。我們建議您再次仔細閱讀並逐一檢查配置說明,或許您遺漏了某個步驟。如果問題仍然存在,建議您重新安裝作業系統,並從頭開始重新配置。我們建議您使用位於 /cfg/3proxy.cfg.sample 的範例檔案作為測試配置,並使用預先安裝的firewall-cmd作為防火牆。
記錄
最後但同樣重要的問題與文件儲存有關。 3proxy 在安裝時佔用數MB,但隨著時間的推移,僅透過日誌記錄,大小就會顯著增加。事實上,許多使用者在單獨的檔案中啟用日誌記錄,但不設定輪換,也不刪除不相關的日誌。有三種方案可以解決這個問題:
- 啟用日誌記錄;
- 定期刪除不相關的日誌;
- 啟用旋轉,如上面的配置中所做的那樣。例如設定檔中的「rotate 30」表示3proxy只會儲存最新的30個檔案。
結語
在 CentOS 和 ArchLinux 作業系統上安裝和設定 3proxy 是一項相當簡單但同時有效的任務。本文介紹了安裝必要的套件、設定檔以及啟動服務的步驟。所獲得的知識將使您能夠自行安裝和配置代理伺服器,而不會遇到任何困難。