代理服务器
实际的工作的有时候需要用到代理服务器,通过代理服务器可以一定程度上隐藏自己的真实IP,将请求数据交给代理服务器,代理服务器在把我们的请求发送到服务端,这样服务器就会以为是代理服务器在请求服务,而不知道真正请求服务获取消息的用户IP,大致流程如下:
简单来说代理服务器会转发我们的请求流量,而服务端会认为是代理服务器在请求服务。
socks5协议
目前三大主流的代理协议包括Socks5代理,HTTP代理,HTTPS代理,由于socks5协议工作在传输层和应用层之间,采用TCP/IP协议进行通信,对应用层的多种协议有较好的兼容性,因此应用的十分广泛。
搭建ss5代理服务器
因为网上都是教程,所以只列出代码
安装ss5
yum -y install gcc openldap-devel pam-devel openssl-devel
wget http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz
tar zxvf ss5-3.8.9-8.tar.gz
cd ss5-3.8.9
./configure
make && make install
修改配置文件
vim /etc/opt/ss5/ss5.conf
:set nu 可以标注行号,找到87行取消注释
#auth 0.0.0.0/0
修改为
auth 0.0.0.0/0
找到第203行取消注释
#permit - 0.0.0.0/0 - 0.0.0.0/0 - - - - -
修改为
permit - 0.0.0.0/0 - 0.0.0.0/0 - - - - -
开启用户名密码验证机制,找到以下两行
vim /etc/opt/ss5/ss5.conf
#修改/etc/opt/ss5/ss5.conf,取消
auth 0.0.0.0/0 - -
permit - 0.0.0.0/0 - 0.0.0.0/0 - - - - -
#这两行的注释,这时是不用验证的,
#如果要验证用户名密码,则修改为
auth 0.0.0.0/0 - u
permit u 0.0.0.0/0 - 0.0.0.0/0 - - - - -
添加用户名和密码
在/etc/opt/ss5/ss5.passwd文件中可以添加用户名和密码,每行写一个用户名和密码,用户名和密码用空格隔开,例如:
test ss5test
修改ss5端口
vim /etc/sysconfig/ss5
SS5_OPTS=" -u root -b 0.0.0.0:9988"
修改ss5启动权限
修改执行权限
chmod u+x /etc/rc.d/init.d/ss5
chmod +x /etc/init.d/ss5
开机自启
chkconfig --add ss5
systemctl restart ss5
启动ss5服务
启动ss5并检查状态
systemctl start ss5
systemctl status ss5
配置socks全局使用
vim ~/.bashrc
新增以下两行命令
export http_proxy=socks5://ip:port
export https_proxy=$http_proxy
退出编辑之后执行一下命令
source ~/.bashrc
qq验证
访问百度
curl -x socks5://ip:端口 http://www.baidu.com
报错
查看状态时如果报错
Can't create pid file /var/run/ss5/ss5.pid
此问题是因 SS5-3.8.9的bug,重启会删掉/var/run/ss5/ 导致无法创建pid文件
创建 /var/run/ss5 目录,然后再启动 ss5
curl: (7) No authentication method was acceptable. (It is quite likely that the SOCKS5 server wanted a username/password, since none was supplied to the server on this connection.)
取消设置密码