Linux下配置Shadowsocks服务器的步骤详解

说明:

Shadowsocks是一个轻量级的socks5代理软件,

而hadowsocks-libev是一个基于shadowsocks 协议的socks5代理软件,

相比原版,hadowsocks-libev程序体积小、高并发、资源占用更少、跨平台、完全兼容shadowsocks协议。

hadowsocks-libev包括三个模块:

ss-server:服务器端,部署在远程服务器,提供shadowsocks服务。

ss-local:客户端,提供本地socks5协议代理。

ss-redir:客户端,提供本地透明代理。

实现目的:

用一台国外VPS服务器,安装部署hadowsocks-libev代理软件,让国内用户通过这台VPS服务器能够访问国外网站。

具体操作:

注意:服务器先安装git软件,然后通过git软件在线下载hadowsocks-libev软件,最后,再编译安装hadowsocks-libev。

VPS服务器操作系统:CentOS

VPS服务器ip:192.168.1.161

一、关闭SELINUX

vi /etc/selinux/config

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq! #保存退出

setenforce 0 #使配置立即生效

二、开启防火墙端口(TCP 8388端口为hadowsocks-libev服务端默认端口)

vi /etc/sysconfig/iptables #编辑防火墙配置文件

# Firewall configuration written by system-config-securitylevel

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT

-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT

-A RH-Firewall-1-INPUT -p 50 -j ACCEPT

-A RH-Firewall-1-INPUT -p 51 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8388 -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

:wq! #保存退出

service iptables restart #最后重启防火墙使配置生效

三、安装编辑工具包

1、CentOS 5.x下编译安装git需要的包(默认CentOS 5.x yum源中没有git)

yum install wget curl curl-devel zlib-devel openssl-devel perl perl-devel cpio expat-devel gettext-devel

2、安装shadowsocks-libev.git需要的包

yum install autoconf libtool openssl-devel gcc swig python-devel

四、安装git

1、CentOS 5.x下安装

cd /usr/local/src

wget https://git-core.googlecode.com/files/git-1.9.0.tar.gz #此地址需要翻墙,可以先下载好软件之后,再上传到服务器

tar xzvf git-1.9.0.tar.gz #解压

cd git-1.9.0 #进入安装目录

autoconf

./configure #配置

make #编译

make install #安装

git --version #查看版本

2、CentOS 6.x下安装

yum install git #CentOS6中yum源中已经有git的版本,直接yum安装

五、安装shadowsocks-libev

cd /usr/local/src

git clone https://github.com/madeye/shadowsocks-libev.git #使用git下载

cd shadowsocks-libev #进入安装目录

./configure #配置

make #编译

make install #安装

cd /usr/local/bin/ #安装好之后,会在此目录生成以下文件

ss-server

ss-local

ss-redir

六、配置shadowsocks-libev服务端

系统运维  www.osyunwei.com  温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接

1、创建配置文件

mkdir /etc/shadowsocks-libev #创建配置文件存放目录

vi /etc/shadowsocks-libev/config.json #编辑,添加以下内容

{

"server":"192.168.1.161", #服务端监听的IP地址

"server_port":8388, #服务端端口

"local_address":"127.0.0.1", #本地监听的IP地址

"local_port":1080, #本地端端口

"password":"123456", #用来加密的密码

"timeout":60, #超时时间(秒)

"method":"aes-256-cfb", #加密方法,推荐用 “aes-256-cfb”

}

:wq! #保存退出

2、运行shadowsocks-libev服务端

nohup /usr/local/bin/ss-server -u -c /etc/shadowsocks-libev/config.json -f /var/run/shadowsocks-server/pid &

3、关闭shadowsocks-libev服务端

ps -ef|grep ss-server #查看进程ID

kill -9 进程ID #结束shadowsocks-libev服务端

4、设置shadowsocks-libev服务端开机启动

vi /etc/init.d/ss-server #编辑,添加以下代码

#!/bin/bash

# Run level information:

# chkconfig: 2345 99 99

# Description: lightweight secured socks5 proxy

# processname: ss-server

# Paths and variables and system checks.

# Source function library

. /etc/rc.d/init.d/functions

# Check that networking is up.

#

[ ${NETWORKING} ="yes" ] || exit 0

# Daemon

NAME=shadowsocks-server

DAEMON=/usr/local/bin/ss-server

# Path to the configuration file.

#

CONF=/etc/shadowsocks-libev/config.json

#USER="nobody"

#GROUP="nobody"

# Take care of pidfile permissions

mkdir /var/run/$NAME 2>/dev/null || true

#chown "$USER:$GROUP" /var/run/$NAME

# Check the configuration file exists.

#

if [ ! -f $CONF ] ; then

echo "The configuration file cannot be found!"

exit 0

fi

# Path to the lock file.

#

LOCK_FILE=/var/lock/subsys/shadowsocks

# Path to the pid file.

#

PID=/var/run/$NAME/pid

#====================================================================

#====================================================================

# Run controls:

RETVAL=0

# Start shadowsocks as daemon.

#

start() {

if [ -f $LOCK_FILE ]; then

echo "$NAME is already running!"

exit 0

else

echo -n $"Starting ${NAME}: "

#daemon --check $DAEMON --user $USER "$DAEMON -f $PID -c $CONF > /dev/null"

daemon $DAEMON -u -c $CONF -f $PID

fi

RETVAL=$?

[ $RETVAL -eq 0 ] && success

echo

[ $RETVAL -eq 0 ] && touch $LOCK_FILE

return $RETVAL

}

# Stop shadowsocks.

#

stop() {

echo -n $"Shutting down ${NAME}: "

killproc -p ${PID}

RETVAL=$?

[ $RETVAL -eq 0 ]

rm -f $LOCK_FILE

rm -f ${PID}

echo

return $RETVAL

}

# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

condrestart)

if [ -f $LOCK_FILE ]; then

stop

start

RETVAL=$?

fi

;;

status)

status $DAEMON

RETVAL=$?

;;

*)

echo $"Usage: $0 {start|stop|restart|condrestart|status}"

RETVAL=1

esac

exit $RETVAL

:wq! #保存退出

chmod +x /etc/init.d/ss-server #添加脚本执行权限

chkconfig --add ss-server #添加到开机启动

chkconfig ss-server on #设置开机启动

相关命令:

启动:/etc/init.d/ss-server start

停止:/etc/init.d/ss-server stop

重启:/etc/init.d/ss-server restart

查看状态:/etc/init.d/ss-server status

七、配置shadowsocks-libev客户端

1、Windows下安装Shadowsocks客户端

下载地址:

http://sourceforge.net/projects/shadowsocksgui/files/dist/Shadowsocks-win-2.3.1.zip

下载好之后,打开运行,如下图所示:

 

服务器IP:192.168.1.161

服务器端口:8388

密码:123456

加密:aes-256-cfb

备注:

代理端口:1080

点击确定

注意:这一步只是用Shadowsocks客户端连接上了服务器,还需要在浏览器里面设置代理之后,才能上网。

2、打开浏览器设置代理(推荐使用Google和火狐浏览器)

下面以火狐浏览器为例:

打开火狐浏览器

选项-高级-网络-设置-连接设置-手动配置代理

SOCKS主机:192.168.1.161

端口:1080

选择SOCKS v5

设置好之后,点确定。

现在,已经可以正常打开google等国外网站了!

八、把Shadowsocks客户端配置在Shadowsocks服务器上面,让用户不需要安装Shadowsocks客户端,直接设置浏览器代理就能访问国外网站。

以下在Shadowsocks服务器上操作

此时,需要在服务器上开放Shadowsocks客户端端口TCP 1080(开放端口方法同上面一样)

1、设置配置文件

vi /etc/shadowsocks-libev/shadowsocks.json #编辑,添加以下代码

{

"server":"192.168.1.161",

"server_port":8388,

"local_address":"127.0.0.1",

"local_port":1080,

"password":"123456",

"timeout":60,

"method":"aes-256-cfb",

}

:wq! #保存退出

2、启动Shadowsocks客户端

nohup /usr/local/bin/ss-local -u -c /etc/shadowsocks-libev/shadowsocks.json -f /var/run/shadowsocks-local/pid -b 0.0.0.0 &

3、关闭shadowsocks-libev客户端

ps -ef|grep ss-local #查看进程ID

kill -9 进程ID #结束shadowsocks-libev客户端

4、设置shadowsocks-libev客户端开机启动

vi /etc/init.d/ss-local #编辑,添加以下文件

#!/bin/bash

# Run level information:

# chkconfig: 2345 88 88

# Description: lightweight secured socks5 proxy

# processname: ss-local

# Paths and variables and system checks.

# Source function library

. /etc/rc.d/init.d/functions

# Check that networking is up.

#

[ ${NETWORKING} ="yes" ] || exit 0

# Daemon

NAME=shadowsocks-local

DAEMON=/usr/local/bin/ss-local

# Path to the configuration file.

#

CONF=/etc/shadowsocks-libev/shadowsocks.json

#USER="nobody"

#GROUP="nobody"

# Take care of pidfile permissions

mkdir /var/run/$NAME 2>/dev/null || true

#chown "$USER:$GROUP" /var/run/$NAME

# Check the configuration file exists.

#

if [ ! -f $CONF ] ; then

echo "The configuration file cannot be found!"

exit 0

fi

# Path to the lock file.

#

LOCK_FILE=/var/lock/subsys/shadowsocks

# Path to the pid file.

#

PID=/var/run/$NAME/pid

#====================================================================

#====================================================================

# Run controls:

RETVAL=0

# Start shadowsocks as daemon.

#

start() {

if [ -f $LOCK_FILE ]; then

echo "$NAME is already running!"

exit 0

else

echo -n $"Starting ${NAME}: "

#daemon --check $DAEMON --user $USER "$DAEMON -f $PID -c $CONF > /dev/null"

daemon $DAEMON -u -c $CONF -f $PID -b 0.0.0.0

fi

RETVAL=$?

[ $RETVAL -eq 0 ] && success

echo

[ $RETVAL -eq 0 ] && touch $LOCK_FILE

return $RETVAL

}

# Stop shadowsocks.

#

stop() {

echo -n $"Shutting down ${NAME}: "

killproc -p ${PID}

RETVAL=$?

[ $RETVAL -eq 0 ]

rm -f $LOCK_FILE

rm -f ${PID}

echo

return $RETVAL

}

# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

condrestart)

if [ -f $LOCK_FILE ]; then

stop

start

RETVAL=$?

fi

;;

status)

status $DAEMON

RETVAL=$?

;;

*)

echo $"Usage: $0 {start|stop|restart|condrestart|status}"

RETVAL=1

esac

exit $RETVAL

:wq! #保存退出

chmod +x /etc/init.d/ss-local #添加脚本执行权限

chkconfig --add ss-local #添加开机启动

chkconfig ss-local on #设置开机启动

启动:/etc/init.d/ss-local start

停止:/etc/init.d/ss-local stop

重启:/etc/init.d/ss-local restart

查看状态:/etc/init.d/ss-local status

设置完成之后,用户直接在浏览器里面设置代理(步骤同上面一样)即可访问国外网站。

扩展阅读:

1、可以专门用一台国内服务器当做Shadowsocks客户端服务器,用来连接国外的Shadowsocks服务器,然后,用户浏览器里面直接设置国内服务器为代理IP。

2、用户浏览器端还能设置自动代理配置,在google浏览器里面先把配置好的文件导出为.pac,然后把这个.pac文件放到网站上,最后给用户提供一个.pac的url地址,用户在浏览器中只需要把这个url地址填写到自动代理配置中即可。

至此,Linux下配置Shadowsocks代理服务器浏览国外网站教程完成。

时间: 2024-10-30 15:04:51

Linux下配置Shadowsocks服务器的步骤详解的相关文章

linux下安装ftp服务器vsftpd步骤详解

先检查一下,有没有vsftp服务器 rpm -qa | grep *ftp* 如果有的话,请将其卸载 安装vsftpd服务器 yum -y install vsftpd 修改配置文件/etc/vsftpd/vsftpd.conf如下几项 #禁止匿名访问 anonymous_enable=NO 限制指定用户可以访问 其他用户不能访问文件尾部修改成如下 userlist_enable=YES tcp_wrappers=YES userlist_deny=no userlist_file=/etc/v

CentOS下搭建SVN服务器的步骤详解_服务器其它

本文实例讲述了CentOS下搭建SVN服务器的步骤.分享给大家供大家参考,具体如下: 1.安装svn yum install -y subversion 2.验证安装是否成功 svnserve --version 3.创建svn版本库 mkdir svn svnadmin create svn/repo 注:这里的repo是版本库名称 4.配置svn 创建版本库后,在这个版本库的conf目录下会生成3个配置文件: [root@singledb conf]# pwd /root/svn/repo/

Linux下MongoDB副本集部署步骤详解

说明: 有三台服务器,已经安装好了MongoDB数据库,具体信息如下: MongoDB版本:mongodb-linux-x86_64-2.6.11 MongoDB安装目录:/usr/local/mongodb MongoDB数据库目录:/home/data/mongodb/mongodb_data MongoDB日志目录:/home/data/mongodb/mongodb_log MongoDB配置文件:/usr/local/mongodb/mongodb.conf 三台服务器IP地址: 19

在Linux下搭建Git服务器的方法详解_相关技巧

前言 GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用. 我打算自己搭建git服务器.虽然目前已经有很不错的git工具,如github,coding.net等,但是为了安全,减少限制和开销,还是放在自己的服务器为好.下面给出安装配置的过程,有问题欢迎讨论和交流,我会及时回复的. 第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不

linux中配置Gitolite+Gitweb+Nginx步骤详解

Gitolite是功能非常强大的Git服务器构建工具,可以比较方便地实现用户权限管理等功能.但是Gitolite是一个纯粹的Git服务器,不像Gitlab等项目,自身不具备其它的访问和浏览方式. 之前的服务器上也配置过Gitolite,同时配合Redmine来用.对我来说不管是Gitlab还是Redmine功能都太过丰富了.实际上自己的服务器上装Gitolite只是放一些私有库,我只需要一个简单直观的Web浏览功能而已.论项目协作的话,不管是Github还是国内的Gitcafe和OSC都是很不错

linux下httpd增加模块的步骤详解

通常我们在部署LAMP时,安装完httpd服务,用我们整理的httpd.conf替换默认的httpd.conf重启httpd服务时可能会遇到某些模块未编译的情况,第一反应是要重新编译,但是apache是支持动态扩展模块的,也就是说不需要重新编译整个apache,就像的PHP phpize工具一样,能够单独编译某个扩展,并加入到已有的环境中. 操作步骤: 1.下载相应的httpd-x.x.xx源码 2.安装扩展(以module_file_cache为例)  代码如下 复制代码 #cd httpd-

在linux下配置DNS服务器的方法

有两台邮件服务器分别为192.168.1.1(windows下主机名为b.test.cn)和192.168.1.3(linux下主机名为a.test.com). 在linux下配置DNS服务器,下面是配置过程中设置过的一些文件, /etc/hosts 文件的具体内容如下: # Do not remove the following line, or various programs# that require network functionality will fail.127.0.0.1 l

如何在Linux下配置NFS服务器?

网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作. 在嵌入式Linux 的开发过程中,开发者需要在Linux 服务器上进行所有的软件开发,交叉编译后,通用FTP 方式将可执行文件下载到嵌入式系统运行,但这种方式不但效率低下,且无法实现在线的调试.因此,可以通过建立NFS,把Linux 服务器上的特定分区共享到待调试的嵌

centos6系统下配置svn服务器的步骤

一,安装必须的软件包. yum install subversion (SVN服务器) mysql-server (用于codestriker) httpd mod_dav_svn mod_perl (用于支持WEB方式管理SVN服务器) sendmail (用于配置用户提交代码后发邮件提醒) wget gcc-c++ make unzip perl* (必备软件包) ntsysv vim-enhanced (可选) 二,基本的SVN服务器配置 1,新建一个目录用于存储SVN所有文件(这个文件代