从零开始的代理生活—Proxychains4与Xray的奇妙冒险之旅🏠🛡️
前言
由于众所周知的问题,在中国访问 Docker 仓库、Github 等服务是十分甚至有九分的困难。
而使用 🐱 这类软件接管,不是很有必要,毕竟不是全天需要代理
代理容易导致环境出现一些问题(
只有部分命令需要用到代理,所以这里请出今天的喵喵工具:
- Proxychains4
- Xray
配置
Xray
资料
无需多盐,感谢所有前辈做出的努力 🙏
安装
wget "https://github.com/XTLS/Xray-core/releases/latest/download/Xray-linux-64.zip"
unzip Xray-linux-64.zip
sudo mv xray geoip.dat geosite.dat /usr/local/bin/
sudo chmod +x /usr/local/bin/xray
官方的一键安装教程: Xray-install/README_zh-Hans.md
代理配置
以下为笔者个人示例的一个 config.json。
作用:将本地的 10800 端口作为 Socks5 代理入站端口,将流量路由到设定的 SS2022 代理协议出站,访问目标网站。

示意图
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"port": 10800,
"listen": "127.0.0.1",
"protocol": "socks",
"settings": {
"auth": "noauth",
"udp": true
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
},
"tag": "socks_inbound"
}
],
"outbounds": [
{
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "your_domain",
"port": 11451,
"method": "2022-blake3-aes-128-gcm",
"password": "your_passwd",
"level": 0
}
]
},
"tag": "ss2022_outbound"
},
{
"protocol": "freedom",
"settings": {},
"tag": "direct"
}
],
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"type": "field",
"inboundTag": ["socks_inbound"],
"outboundTag": "ss2022_outbound"
},
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
}
]
}
}
Systemd 配置
创建 /etc/systemd/system/xray.service 文件:
⚠️ 根据个人配置修改
ExecStart=/usr/local/bin/xray run -c /opt/xray/config.json
[Unit]
Description=Xray Service
After=network.target
[Service]
ExecStart=/usr/local/bin/xray run -c /opt/xray/config.json
Restart=on-failure
User=nobody
CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_NET_RAW
AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_NET_RAW
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
配置完成后,启用 Xray:
sudo systemctl daemon-reload
sudo systemctl enable xray
sudo systemctl start xray
sudo systemctl status xray
Proxychains
资料
安装
apt update
apt install proxychains4
编辑配置 /etc/proxychains4.conf。
我们刚在 Xray 中配置了一个 Socks5 代理在 10800 端口,所以此处可以这样配置,并取消注释 dynamic_chain:
示例:
dynamic_chain
# ...省略...
[ProxyList]
socks5 127.0.0.1 10800
测试
使用 proxychains4 命令。
未使用代理:
root@cn-aliyun-sz:/opt# curl ipinfo.io
{
"ip": "114.5.1.4",
"city": "Shenzhen",
"region": "Guangdong",
"country": "CN",
"loc": "22.5455,114.0683",
"org": "AS37963 Hangzhou Alibaba Advertising Co.,Ltd.",
"postal": "518000",
"timezone": "Asia/Shanghai",
"readme": "https://ipinfo.io/missingauth"
}
使用代理:
root@cn-aliyun-sz:/opt# proxychains4 curl ipinfo.io
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.16
[proxychains] Dynamic chain ... 127.0.0.1:10800 ... ipinfo.io:80 ... OK
{
"ip": "114.5.1.4",
"city": "Hong Kong",
"region": "Hong Kong",
"country": "HK",
"loc": "22.2783,114.1747",
"org": "AS114514 HenhenAAAA CLOUD LLC",
"postal": "114514",
"timezone": "Asia/Hong_Kong",
"readme": "https://ipinfo.io/missingauth"
}
这个时候,聪明的宝宝就要说了:
主播~~,这个命令打起来好麻烦呀!
那么就要请出我们的 alias。
语法:alias [别名]=[指令名称]
举例:alias proxy='proxychains4'
为了避免重启失效,我们可以编辑 ~/.bashrc 将其写入:
cat >> ~/.bashrc << 'EOF'
alias proxy='proxychains4'
EOF
然后执行 source ~/.bashrc 使其生效。
测试:
root@cn-aliyun-sz:/opt# proxy curl ipinfo.io
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.16
[proxychains] Dynamic chain ... 127.0.0.1:10800 ... ipinfo.io:80 ... OK
{
"ip": "114.5.1.4",
"city": "Hong Kong",
"region": "Hong Kong",
"country": "HK",
"loc": "22.2783,114.1747",
"org": "AS114514 HenhenAAAA CLOUD LLC",
"postal": "114514",
"timezone": "Asia/Hong_Kong",
"readme": "https://ipinfo.io/missingauth"
}