shell

Linux下配置并启用ss服务,访问某些网站

Linux下配置并启用ss服务,访问某些网站

最近在学习Kubernetes,搭建集群时需要下载的大部分镜像都需要一些特殊技能才可获取。无奈,试了很多种办法皆无果,最后只能通过在虚拟机中开启ss服务来pull镜像。

本文简单介绍如何实现 Linux 中的 http/https 请求翻墙的需求,所使用的环境为CentOS 7.5,最小化安装的,其他版本或发行版方法类似。

需要安装python-pip,Privoxy两个软件包,皆由epel源提供。安装之前需添加epel源。shadowsocks通过pip安装。

# wget https://mirrors.aliyun.com/repo/epel-7.repo -O /etc/yum.repos.d/
# yum clean all
# yum makecache fast

安装ss客户端

shadowsocks安装时不加区分客户端还是服务器端,安装后有两个命令,其一是sslocal代表以客户端模式工作,另一个是ssserver代表以服务器端模式工作。

# yum install -y python-pip
# pip install --upgrade pip
# pip install shadowsocks

启动ss服务

# sslocal -s your_server_ip -p your_server_port -l 1080 -k your_server_passwd -t 600 -m aes-256-cfb
    -s: ss服务器的IP地址
    -p: ss服务器端口,默认为8388
    -l: 本地要监听的端口,默认为1080
    -k: ss密码
    -t: 等待超时时间,默认为300
    -m: 加密方式,默认为aes-256-cfb
    --fast-open: true 或 false。如果内核在3.7+,可以开启 fast_open 以降低延迟。开启方法: echo 3 > /proc/sys/net/ipv4/tcp_fastopen 开启之后,将 fast_open 的配置设置为 true 即可

上述为前台运行服务的方式,需要占用一个终端,可将服务送到后台运行,或是以读取加载配置文件的方式运行到前台或后台

后台运行

# nohup sslocal -s your_server_ip -p your_server_port -l 1080 -k your_server_passwd -t 600 -m aes-256-cfb > /dev/null 2>&1 &

读取配置文件的方式前台或后台运行

# vim /etc/shadowsocks.json
{
  "server":"XX.XX.XX.XX",
  "server_port":6969,
  "local_address": "127.0.0.1",
  "local_port":1080,
  "password":"XXXXXXXXX",
  "timeout":300,
  "method":"aes-256-cfb",
  "fast-open": true,
  "workers": 1
}

# sslocal -c /etc/shadowsocks.json
    前台运行
# nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &
    后台运行

创建Unit File,设置开机自启动

# vim /usr/lib/systemd/system/ss-local.service
    参考了Privoxy的Unit File写的,Privoxy是后面还需要安装的一个包
[Unit]
Description=Shadowsocks to Love GFW
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=root
PIDFile=/run/ss-local.pid
ExecStart=/usr/bin/sslocal -c /etc/shadowsocks.json

[Install]
WantedBy=multi-user.target

# systemctl daemon-reload
# systemctl enable ss-local.service
# systemctl start ss-local.service

测试

不管什么方式启动的,启动之后先测试一下服务是否正常

运行 curl --socks5 127.0.0.1:1080 http://httpbin.org/ip,如果返回你的 ss 服务器 ip 则测试成功。

# curl --socks5 127.0.0.1:1080 http://httpbin.org/ip
{
  "origin": "XX.XX.XX.XX"
}

能请求到服务器IP则说明本地服务成功配置并启动。

安装Privoxy

Shadowsocks 是一个 socket5 服务,需使用 Privoxy 把流量转到 http/https 上。

# yum install -y privoxy

安装之后可通过rpm命令查看其生成的配置文件,并编辑其配置文件。

# rpm -qc privoxy | grep config
/etc/privoxy/config

先搜索关键字 listen-address 找到 listen-address 127.0.0.1:8118 这一句,确保没有被注释,8118就是将来http代理要输入的端口。

然后搜索 forward-socks5t,将 #forward-socks5t / 127.0.0.1:1080 . 此句前面的注释去掉,将流量转发到本地的1080端口, 而1080端口正是 ss 监听的端口。

启动Privoxy,并开机自启

# systemctl restart privoxy
# systemctl enable privoxy

配置转发

# vim /etc/profile.d/ss.sh
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
# source /etc/profile.d/ss.sh

测试

# curl https://www.google.com
微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

支付宝扫一扫,向我赞赏

回复

This is just a placeholder img.