本文没有涉及任何加密协议、VPN、“翻墙”等违规内容
不知道学校抽了什么风,会去检测我SS VMESS之类的协议,通报批评。
众所周知,法不责众,但是接下来其他人大概是不敢用了,再被抓就要杀鸡儆猴了。
也想过不登录校园网,直接用DNS端口上网,但速率应该挺慢的。
于是我打算拿一个服务器作为跳板,搭建SOCKS5代理,让流量不要直接走校园网出去,从而避免检测。
服务器配置
1.查看网卡名
> ip route get 8.8.8.8
8.8.8.8 via 172.16.0.1 dev ens18 src 172.16.1.113 uid 0得到出网卡是 ens18
2.安装 Dante
> apt update
> apt install -y dante-server3.创建账号
创建一个linux账号,只用于SOCKET5代理登录。
> useradd -r -s /usr/sbin/nologin proxyusername
> passwd proxyusername
(设置密码)4.配置 Dante
logoutput: syslog
internal: 0.0.0.0 port = 10808
external: ens18
socksmethod: username
clientmethod: none
user.privileged: root
user.unprivileged: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: connect bind udpassociate
log: connect disconnect error
socksmethod: username
}直接使用上面的配置,覆盖到 /etc/danted.conf ,修改 external 为出网卡名。
重启服务:
> systemctl restart danted检查是否启动成功:
》如果服务器上有防火墙还需要放行端口
工具配置
接下来给小猫咪配置一个全局扩展脚本(订阅 > 全局扩展脚本)。
// Clash Verge Rev 全局扩展脚本
// 作用:让所有普通代理节点都先通过 Dante/SOCKS5 跳板拨号
// 链路:Clash/Mihomo -> DANTE-JUMP -> 你选择的任意节点 -> 目标网站
function main(config, profileName) {
const JUMP_NAME = "DANTE-JUMP";
// 修改为你的 Dante SOCKS5 信息
const jumpProxy = {
name: JUMP_NAME,
type: "socks5",
server: "x.x.x.x",
port: 10808,
username: "proxyuser",
password: "xxx",
udp: true
};
// 这些不是实际远端代理,不能加 dialer-proxy
const builtinNames = new Set([
"DIRECT",
"REJECT",
"REJECT-DROP",
"PASS",
"COMPATIBLE",
JUMP_NAME
]);
// 这些类型一般不要加 dialer-proxy
// direct/reject 是内置类型;dns/http/socks5 里可能包含本地代理或跳板本身
const skipTypes = new Set([
"direct",
"reject",
"dns"
]);
// 确保 proxies 存在
config.proxies = config.proxies || [];
// 先移除旧的同名跳板,避免重复
config.proxies = config.proxies.filter(p => p && p.name !== JUMP_NAME);
// 把跳板节点放到 proxies 最前面
config.proxies.unshift(jumpProxy);
// 给所有普通代理节点加 dialer-proxy
config.proxies = config.proxies.map(proxy => {
if (!proxy || !proxy.name) return proxy;
const name = proxy.name;
const type = String(proxy.type || "").toLowerCase();
if (builtinNames.has(name)) return proxy;
if (skipTypes.has(type)) return proxy;
// 不要让跳板自己走自己
if (name === JUMP_NAME) return proxy;
return {
...proxy,
"dialer-proxy": JUMP_NAME
};
});
// 对 proxy-providers 里的订阅节点统一加 dialer-proxy
// 如果你的订阅是 provider 形式,这一段很关键
if (config["proxy-providers"]) {
Object.keys(config["proxy-providers"]).forEach(providerName => {
const provider = config["proxy-providers"][providerName];
if (!provider) return;
provider.override = provider.override || {};
provider.override["dialer-proxy"] = JUMP_NAME;
});
}
return config;
}
需要注意的是,server 必须填IP,不能填域名。
于是乎,我们就代理出去了。
以前被校园网制裁,Shadowsocks节点全部用不了,现在全都可用了。