Install shadowsocksr on FreeBSD 11

cd /usr/local
git clone -b manyuser https://github.com/shadowsocksr-backup/shadowsocksr.git
cd /usr/local/shadowsocksr
bash /usr/local/shadowsocksr/initcfg.sh
mkdir /usr/local/etc/shadowsocksr
vi /usr/local/etc/shadowsocksr/user-config.json
{
    "server": "0.0.0.0",
    "server_port": 54321,
    "local_address": "127.0.0.1",
    "local_port": 1080,

    "password": "jason-tang.com",
    "method": "chacha20-ietf",
    "protocol": "auth_sha1_v4_compatible",
    "protocol_param": "",
    "obfs": "tls1.2_ticket_auth_compatible",
    "obfs_param": "",
    "speed_limit_per_con": 0,
    "speed_limit_per_user": 0,

    "additional_ports" : {}, // only works under multi-user mode
    "additional_ports_only" : false, // only works under multi-user mode
    "timeout": 120,
    "udp_timeout": 60,
    "dns_ipv6": false,
    "connect_verbose_info": 0,
    "redirect": "",
    "fast_open": false
}

vi /usr/local/etc/rc.d/shadowsocksr
#!/bin/sh

# PROVIDE: shadowsocksr
# REQUIRE: DAEMON
# KEYWORD: shutdown

# Add the following lines to /etc/rc.conf to enable shadowsocksr:
# shadowsocksr_enable (bool):  Set to "NO" by default.
#      Set to "YES" to enable shadowsocksr.
# shadowsocksr_config (path): Shadowsocksr config file.
#      Defaults to "/usr/local/etc/shadowsocksr/user-config.json"


. /etc/rc.subr

name="shadowsocksr"
rcvar=shadowsocksr_enable


load_rc_config $name

: ${shadowsocksr_enable:="NO"}
: ${shadowsocksr_config="/usr/local/etc/shadowsocksr/user-config.json"}

command="/usr/local/bin/python"
pidfile="/var/run/shadowsocksr.pid"
required_files="${shadowsocksr_config}"

command_args=" /usr/local/shadowsocksr/shadowsocks/server.py -c $shadowsocksr_config -d start"

run_rc_command "$1"


chmod 555 /usr/local/etc/rc.d/shadowsocksr

vi /etc/rc.conf
shadowsocksr_enable="YES"

/usr/local/etc/rc.d/shadowsocksr start

Install shadowsocks-libev on FreeBSD 11

Install:
cd /usr/ports/net/shadowsocks-libev
make install clean

vi /usr/local/etc/shadowsocks-libev/config.json
{
    "server":"0.0.0.0",
    "server_port":12345,
    "local_port":1080,
    "password":"jason-tang.com",
    "timeout":60,
    "method":"aes-256-cfb"
}

vi /etc/rc.conf
shadowsocks_libev_enable="YES"

/usr/local/etc/rc.d/shadowsocks_libev start


Upgrade:
wget https://github.com/shadowsocks/shadowsocks-libev/releases/download/v3.1.1/shadowsocks-libev-3.1.1.tar.gz
tar -zxvf shadowsocks-libev-3.1.1.tar.gz
cd shadowsocks-libev-3.1.1
./configure --disable-documentation
make
make install

vi /usr/local/etc/shadowsocks-libev/config.json
{
    "server":"0.0.0.0",
    "server_port":12345,
    "local_port":1080,
    "password":"jason-tang.com",
    "timeout":60,
    "method":"aes-256-gcm",
    "mode":"tcp_and_udp"
}


/usr/local/etc/rc.d/shadowsocks_libev restart

(源自CHINAUNIX)kingate(Proxy)的安裝

kingate代理伺服器指南
http://www.chinaunix.net 作者:khj99  發表於:2004-03-29 08:24:52

kingate代理伺服器指南
kingate是一個代理伺服器,能代理多種協定,包括:http,https,socks,ftp,pop3,smtp,telnet,dns。能運行在linux,freebsd,...及其它類unix,還有windows(最新版本要求nt 4.0以上)作業系統上
kingate是一個多線程的程式(採用線程池的方式),所以短時間內大量的連接請求,kingate還能保持很高的性能。
kingate還支持tcp埠映射,可以實現別人訪問你的內網主機。
kingate有強大的規則控制,包括源IP位址,目的IP位址,目的埠,及採用的代理協定。
kingate也支援時間控制。即可以設置什麼時間內,所設置的規則才有效。
kingate內置了用戶認證,以及記錄用戶的使用情況,包括用戶的使用時間,接收和發送的資料量,可以很容易實現對用戶的記費。
kingate採用http來進行管理,使得管理kingate及查看運行資訊變得一件很輕鬆的事情,也可以遠端管理。
kingate還支援記憶體及硬碟共二級緩存(僅限http代理).
最新版本的kingate還可以用來加速web伺服器(採用緩存原理)。提升你的web伺服器的性能。
kingate還是一款國人開發的代理伺服器。下面我們來全面瞭解kingate伺服器。

1:下載最新的kingate.
http://sourceforge.net/projects/kingate/

如果你是windows版本請看第8項.
2:解壓
tar xzf kingate-xxxxx.tar.gz
cd kingate

3:安裝
./configure --prefix=安裝目錄
如:./configure --prefix=/opt/kingate
make install

4:使用
prefix/bin/kingate 啟動kingate
prefix/bin/kingate -f 強行啟動kingate,如果啟動kingate提示有一個在運行,而你又確實kingate沒有運行,可以使用這個。
prefix/bin/kingate -h 查看kingate用法
prefix/bin/kingate -q 關閉kingate
prefix/bin/kingate -v 查看kingate版本
prefix/bin/kingate -d # 以調試方式運行程式。#為調試級別,(0-3)。數位越高顯示資訊也越多。


5:配置
kingate配置檔是etc/kingate.conf,打開這個檔,裏面有詳細的說明及用法.

6:關於Bug
運行kingate之前最好運行:ulimit -c unlimited
請訪問:http://sourceforge.net/tracker/?group_id=54802&atid=474891,說明bug的現象,及重現辦法,以及kingate的版本號。注意,如果kingate在退出時產生了core檔,這很好,
使用:
gdb prefix/bin/kingate core文件
再輸入:bt
把顯示的資訊也帖上去.
或者發郵件給作者:Email住址會使用灌水程式保護機制。你需要啟動Javascript才能觀看它

7:關於dnsproxy
專門代理dns服務請求,請用root用戶指行此程式.

8.windows用戶
解壓:
使用winzip或winrar之類的解壓工具。

安裝
c:\>prefix\bin\kingate --install
c:\>prefix\bin\kingate -z

反安裝
c:\>prefix\bin\kingate --uninstall

啟動kingate代理
c:\>net start kingate

停止kingate代理
c:\>net stop kingate

啟動dns代理:
c:\>prefix\bin\dnsproxy.exe -h use_dns_host -b bindaddr -m max_thread

9.kingate的配置檔說明:

#配置檔開始
#service
#以下是告訴kingate代理哪些協定,如果要打開的請設置on,否則設為off
http on
ftp on
pop3 on
smtp on
telnet on
socks on
mms on
rtsp on
manage on

#bind_addr用來告訴kingate綁定的IP地址。
#bind_addr 192.168.0.1

#run_user指kingate的運行者。請注意,如果設置了run_user.請以root啟動kingate.並且把kingate的etc和var目錄設置該用戶可以讀寫。
#run_user nobody

#max指kingate最多同時接受多少個連接請求。超過此數,多餘的連接kingate將馬上關閉。
max 500

#max_per_ip用來表明每個IP,同時最多有多少個連接請求。設置為0,表示不限制
max_per_ip 0

#min_free_thread 表明kingate關閉一些超時空閉的線程時,最少會留多少個不關閉。
min_free_thread 3


#[http]
http_port 8082
#http_port表時http代理的埠

http_accelerate off
#http_accelerate這個參數很重要。如果你只是使用代理時請設置為off.
#如果你用kingate來加速web伺服器時,設置為on,並且加上:
#http_redirect { * *  http_host:http_port  none }

x_forwarded_for off
#在http請求中加入用戶端的IP位址。如果你用kingate來加速web伺服器時,建議設置on.


http_time_out 300
#http_time_out http代理發送接收超時時間(秒)

#http重定向:

#http_redirect { dst[/dst_mask][:dst_port] file redirect_host:redirect_port flag }
#http_redirect { * *  210.15.29.16:80 none }
#http_redirect { 211. *  210.15.29.16:8082 proxy }
#[ftp]
ftp_port 2121
ftp_time_out 300

#[pop3]
pop3_port 1100
pop3_time_out 300

#[smtp]
smtp_port 2525
smtp_time_out 300


#[telnet]
telnet_port 2323
telnet_time_out 300

#[socks]
socks_port 1082
socks_time_out 300
socks5_user off
#socks5_user設置是否在socks5代理中運行用戶認證。

#[mms]
mms_port 1755
mms_time_out 300

#[rtsp]
rtsp_port 5540
rtsp_time_out 300

#[manage]
manage_port 2222
manage_time_out 300

#log section
log_model user
log_level 2

log_rotate { 0 0 * * * }
log_close_msg off
#the log_close_msg first add in v1.5 when it on the kingate will log the connect close msg to log_file.
#and when it set off kingate won't log the connect close msg to log_file

#緩存部分
#cache section

mem_min_cache 20m
mem_max_cache 30m
disk_min_cache 100m
disk_max_cache 120m
use_disk_cache on
refresh never
refresh_time 0


#埠重定向
#redirect port_host:port #埠重定向功能,所有port埠的請求發送至host:port
#redirect 9999_211.141.90.201:23
#redirect 3333_127.0.0.1:23

#配置檔結束


10.kingate管理
kingate從1.5版開始遠端管理使用單獨的埠來管理。我們有了遠端管理可以動態改變控制規則,用戶及用戶組的管理。相信這個功能會越來越強大的。
只要http代理或者manage埠打開了,遠端管理功能就可以了,在access.conf文件裏面記得要允許manage管理訪問哦,像下面一樣就打開了(只允許本機使用管理功能,service寫manage,用戶組寫*,就表示這條規則是管理的了);
first deny
model deny
{ manage * !127.0.0.1 * }
model allow
{ * * * * }

。進入http管理
打開流覽器(如IE或Mozilla),在位址欄中輸入:http://kingate代理伺服器IP位址:manage代理埠/
manage埠由kingate.conf裏面的manage_port指定,並在kingate.conf指定manage on
就可以了。初始root的密碼是kingate,
注意:這裏一定要寫kingate代理服務的IP位址,不可以寫功能變數名稱啊或localhost之類的。比如在kingate裝在本機manage埠是2222就輸入:http://127.0.0.1:2222/
不能寫:http://localhost:2222/

。進入之後就可以看到一些鏈結.
logout -->> 退出登錄
chanage password -->> 更改自已的密碼
---------------------------------------------------
如果是root登錄的話,你還可以看到以下鏈結:

users -->> kingate的用戶管理
login users -->> 查看當前登錄用戶情況
access -->> 管理kingate的訪問控制
info -->> 查看kingate的運行資訊
config -->> 配置kingate(注意:這裏更改後kingate要重起才能生效)

3.kingate的部分檔

prefix/bin/kingate kingate主程序(windows版本就是kingate.exe)
prefix/bin/dnsproxy kingate的dns代理程式(windows版本就是dnsproxy.exe)
prefix/var/kingate.log kingate的日誌檔(要求kingate運行用戶有讀寫許可權)
prefix/etc/kingate.conf kingate的配置檔(如果用http管理的話,則要求kingate運行用戶有讀寫許可權,否則只要讀許可權)
prefix/etc/kingate.user kingate的用戶檔(要求kingate運行用戶有讀寫許可權)
prefix/etc/access.conf kingate的訪問控制檔(如果用http管理的話,則要求kingate運行用戶有讀寫許可權,否則只要讀許可權)
prefix/etc/kingate.pid 保存kingate的pid的檔(windows版本沒有,要求kingate運行用戶有讀寫許可權)

prefix就是kingate的主目錄.

.kingate訪問控制。
kingate的訪問控制可以通過http管理進行修改,也可以通過直接編輯access.conf檔,兩者的區別就是直接編輯access.conf檔,kingate需要重起才能生效,而通過http管理則不用重起就能生效。
kingate的訪問控制分為兩類規則,一類是allow(允許)規則,另一類是是deny(拒絕)規則。還有一個first來指定的第一規則(即優先順序較高的).
kingate對一個請求首先在第一規則查找,如果找到,就按第一規則進行處理。
第一規則中沒有找到,kingate在另一規則中查找,如果找到按第二規則進行處理。
如果該請求在兩者中都沒能找到,kingate就按第一規則進行處理。

一個規則由以下各項組成:
{ rule } { time }
該規則有效時間由time指定,如果沒有time,表示所有時間,time格式見下面。

rule格式:
[!]service [!]group [!]src_ip[/src_mask]  [!]dst_ip[/dst_mask][:dst_port]
詳細說明
*表示所有。
!表示取反,例service為 !http 表示除http服務之外.
注意:!和*不可以同時使用,如果同時使用會發生意想不到結果。以下同。

service可以為名字:http,socks,ftp,....
也可以寫埠,如:8082,1082,...

group為用戶組名稱.
*表示所有的用戶和非用戶。
all表示所有的用戶。

src_ip表示源位址,如果以"."結尾表示是一個網路。*表示所有的源位址.
src_mask源位址遮罩,可以是255.255...的形式,也可以是數位像iptables的形式.如果src_ip為一個IP,src_mask就不要寫。

dst_ip目的地址,格式和src_ip一樣。
dst_mask目的地址遮罩,格式和src_mask一樣.
dst_port目的埠。如果不寫則表示所有埠。

注意:src_mask,dst_mask,dst_port不可以和取反"!"一起使用.

time格式:
分 時 日 月 星期
格式同crontab一樣(星期日是0),但是沒有"/"符號.
例:
* 8-10 * * 6,0
表示:星期六星期日的8點到10點。

5.access.conf檔格式:
first allow|deny
model allow
{ rule } { time }
...
model deny
{ rule } { time }

access.conf文件舉例:
a:實現kingate的匿名代理:
first deny
model deny
{ manage * !127.0.0.1 * }
model allow
{ * * * * }

b:實現kingate用戶認證代理(記得一定要更改kingate的root密碼哦)
first deny
model deny
model allow
{ * all * * }
{ manage * * * }


11.用戶端訪問方式:
.http代理的設置就不用說了(應該簡單)。
.ftp代理格式:user@ftp_host:port
.pop3代理格式:email@pop3_host:port
.smtp代理設置:
smtp代理從1.5版之後不用在伺服器設置了,只用在用戶端設置就可以了。
設置分為兩類:
a:你的smtp要驗證:
在你的郵件用戶端把smtp認證選上。認證用戶名:user@smtp_host:port,認證密碼寫你的密碼
b:你的smtp不用驗證:
在你的郵件用戶端把smtp認證選上。認證用戶名:user#smtp_host:port,認證密碼隨便寫一個
.telnet代理使用:
telnet kingate主機位址 kingate的telnet埠
輸入: 你要訪問的主機 你要訪問的主機位址
.socks代理設置(包括socks4和socks5):
參見各用戶端軟體的介紹.
mms和rtsp代理請參見windows media play和realplay的使用方法

12.kingate的官方站點:
http://sourceforge.net/projects/kingate/