Skip to main content

centos搭建shadowsocks

本文记录了作者在 CentOS 7 上搭建 shadowsocks 服务器的一些经验

准备工作#

首先要有一台 CentOS 服务器,然后用 ssh 工具登录服务器 开始之前最好看一下shadowsocksr文档


环境搭建#

分别执行以下命令 安装 shadowsocks 服务端

yum updateyum install python-setuptools && easy_install pippip install shadowsocks

配置 shadowsocks#

创建一个配置文件

mkdir /shadowsocksvi /shadowsocks/server-config.json

按下i键编辑 复制以下内容:

{    "server":"0.0.0.0",    "server_port":8388,    "local_port":1080,    "password":" password",    "timeout":600,    "method":"aes-256-cfb"}

server 是服务器的 IP 地址

  • 多端口(多用户)配置:
{  ...  "port_password":{    "8388":"password1",    "8389":"password2",    "8390":"password3",    ...  },  ...}

编辑完成后按下 esc 退出编辑模式 然后按住 shift 按两下 z 保存并退出编辑


开放端口#

CentOS 默认打开了防火墙 你可以直接关闭它 systemctl stop firewalld 但是这样不太安全,可以使用 iptables 来管理端口

开放所需端口

iptables -A  INPUT -p tcp --dport 8388 -j ACCEPT

(可选)禁止某个 IP 访问

iptables -I INPUT -s 124.222.0.202 -j DROP

启动服务#

ssserver -c /shadowsocks/server-config.json -d start

停止服务#

ssserver -c /shadowsocks/server-config.json -d stop

优雅地管理你的服务器#

编辑 bashrc

vi ~/.bashrc

configFile 是你的 shadowsocks 配置文件

ssr(){    configFile='/shadowsocks/server-config.json'
    if [[ $1 == 'start' ]];then      sudo ssserver -c ${configFile} -d start    elif [[ $1 == 'stop' ]];then      sudo ssserver -c ${configFile} -d stop    elif [[ $1 == 'log' ]];then      if [[ "$2" == "" ]];then        sudo tail -f /var/log/shadowsocks.log        echo "显示全部日志"      else        echo "-------------- start ---------------"        if [[ $3 == "" ]];then          sudo tail -n $2 /var/log/shadowsocks.log        else          sudo tail -n $2 /var/log/shadowsocks.log |grep $3        fi        echo "--------------- end ----------------"        echo "显示最近 $2 条日志 $3"      fi    else        echo "start:开始 | stop:停止 | log:查看日志"    fi}

刷新以生效

source ~/.bash_profile
ssr startssr stopssr log# 只显示最近10条日志ssr log 10

开机自动启动#

vi /etc/systemd/system/shadowsocks.service

复制以下内容

[Unit]Description=Shadowsocks[Service]TimeoutStartSec=0ExecStart=/usr/bin/ssserver -c /shadowsocks/server-config.json[Install]WantedBy=multi-user.target
systemctl enable shadowsocks

end!