科学上网,服务器上开透明代理方法很多,但是如何才能不代理本机

2023-01-09 18:15:46 +08:00
 wanmyj

centos 做家庭服务器,现在需要给 XBOX 科学上网,我可以在服务器上装一个 clash ,不管是用透明代理,还是 socks/http 代理,给 XBOX 科学上网的需求可以满足,但是这会让我的服务器上网也走 clash ,这不是我所希望的。

所以能不能完成这个需求,就是服务器上搭建透明网关或者 http/socks 代理服务,提供给同一局域网内其他设备上网,但服务器本身的上网选择直连路由器。

我有想过一个方法,但是有点麻烦而且需要 vlan 交换机,多占一个端口(因为路由器不支持 vlan)。就是已有默认 vlan 的 ip1 ,再新建一个 vlan2 interface ,虚拟 mac 获取 IP 地址 ip2 。服务器上网用默认 vlan ,代理建立在 vlan2 的 ip2 上,隔离两个网络。

所以请教下 v2 的大佬们,多谢多谢

3318 次点击
所在节点    宽带症候群
33 条回复
Puteulanus
2023-01-09 18:20:55 +08:00
我是直接起了台虚拟机桥接网卡跑 uu 加速器
rrfeng
2023-01-09 18:21:27 +08:00
首先你说的是错的,如果不是透明代理,那么默认不可能代理本地请求。除非客户端指定使用代理。

其次,要看透明代理的『透明』流量转发是什么,比如 iptables + redir ,很容易插入一条本机流量例外的规则。
dcty
2023-01-09 18:29:14 +08:00
可以让本机(跑 clash )的机器不走代理的。
centos docker 跑个 clash 也可以的。
wanmyj
2023-01-09 18:34:58 +08:00
@Puteulanus 也是一个办法,但是不太适合我的 homelab ,不想换系统了
@rrfeng 如果 clash 这类工具可以只启动 http/socks 的话就好了。iptable+redir 加本地流量例外我觉得这个办法倒是不错,可以操作试试
wanmyj
2023-01-09 18:38:12 +08:00
@dcty 可以让本机(跑 clash )的机器不走代理的。 ------> 是需要设置 iptables 吗?
centos docker 跑个 clash 也可以的。 ---------> 用 bridge network ,留出来代理的端口,直接给局域网内其他设备连 http 、socks ,如果这个理解没错的话,我感觉这个就完美解决了我的需求
cxh116
2023-01-09 18:44:02 +08:00
虚拟机装个 openwrt ,openwrt 再装 shadowsocks ,xbox 走 openwrt ,或闲鱼收个 50 左右 MT7620A 路由做旁路由,可以刷 openwrt 的。
aru
2023-01-09 19:00:53 +08:00
centos 机器用 libvirt 开一个虚拟机,在虚拟机上搞透明代理就好了
LGA1150
2023-01-09 20:04:24 +08:00
本机发送的 IP 报文,和转发的 IP 报文,在 Linux ip_output 函数之前走的是不同的路径
本机发送:ip_local_out() -> Netfilter OUTPUT hook -> ip_output() -> Netfilter POSTROUTING hook -> ip_finish_output()
转发:ip_rcv() -> Netfilter PREROUTING hook -> ip_rcv_finish() -> ip_forward() -> Netfilter FORWARD hook -> ip_forward_finish() -> ip_output() -> Netfilter POSTROUTING hook -> ip_finish_output()

透明代理,无非是 iptables DNAT/REDIRECT/TPROXY 规则,插入到 PREROUTING 就是代理转发,插入到 OUTPUT 就是代理本机。
A01514035
2023-01-09 20:40:52 +08:00
https://github.com/SuLingGG/OpenWrt-Docker
正好是前几天我折腾的,用 docker 跑个 openwrt 作为旁路由,供局域网内其他机器科学上网。
IvanLi127
2023-01-09 20:52:26 +08:00
请教下 OP ,服务器上网也走 clash 的话,那其他机子访问服务器里的服务是能正常访问吗?
wanmyj
2023-01-09 20:57:51 +08:00
@IvanLi127 正常,一般 clash 的 yaml 规则里都会过滤局域网段的流量,局域网段的流量不会走到 clash 里
wanmyj
2023-01-09 21:01:15 +08:00
@LGA1150 清晰专业,大佬受我一拜!🙏
IvanLi127
2023-01-09 21:05:18 +08:00
@wanmyj 这样,我还以为我能抄作业了,哈哈。其实我想在国内服务器上全局代理,看来还是只能手动排除服务监听的端口
cwbsw
2023-01-09 21:30:47 +08:00
本机流量和转发流量的 hook 点本来就不一样啊,一个在 prerouting 一个在 output 。
SenLief
2023-01-09 22:18:23 +08:00
clash 本身不是就支持 http/socks 代理的吗?直接不用透明代理不行的吗
dianso
2023-01-09 22:28:42 +08:00
路由器设置 pac 是不是就可以
ashone07
2023-01-09 22:48:06 +08:00
用旁路由很好解决,需要走代理的设备网关设置为旁路由,不需要的设备网关用主路由
fish3125
2023-01-09 22:52:28 +08:00
如果透明代理的方式改成 fakeip ,只要修改 dns 就可以决定哪些机器不走代理。
wangbin526
2023-01-09 22:58:14 +08:00
开虚拟机跑个 iStoreOS 再装科学插件,这货自带旁路由模式,设置简单很多
Jirajine
2023-01-10 01:56:45 +08:00
你是用的一键脚本吧,自己配置你不专门劫持本机出站流量本身就不会代理本机。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/907690

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX