科学上网,服务器上开透明代理方法很多,但是如何才能不代理本机 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wanmyj
V2EX    宽带症候群

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

  •  
  •   wanmyj 2023-01-09 18:15:46 +08:00 4198 次点击
    这是一个创建于 1055 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    其次,要看透明代理的『透明』流量转发是什么,比如 iptables + redir ,很容易插入一条本机流量例外的规则。
    dcty
        3
    dcty  
       2023-01-09 18:29:14 +08:00   1
    可以让本机(跑 clash )的机器不走代理的。
    centos docker 跑个 clash 也可以的。
    wanmyj
        4
    wanmyj  
    OP
       2023-01-09 18:34:58 +08:00
    @Puteulanus 也是一个办法,但是不太适合我的 homelab ,不想换系统了
    @rrfeng 如果 clash 这类工具可以只启动 http/socks 的话就好了。iptable+redir 加本地流量例外我觉得这个办法倒是不错,可以操作试试
    wanmyj
        5
    wanmyj  
    OP
       2023-01-09 18:38:12 +08:00
    @dcty 可以让本机(跑 clash )的机器不走代理的。 ------> 是需要设置 iptables 吗?
    centos docker 跑个 clash 也可以的。 ---------> 用 bridge network ,留出来代理的端口,直接给局域网内其他设备连 http 、socks ,如果这个理解没错的话,我感觉这个就完美解决了我的需求
    cxh116
        6
    cxh116  
       2023-01-09 18:44:02 +08:00 via Android   1
    虚拟机装个 openwrt ,openwrt 再装 shadowsocks ,xbox 走 openwrt ,或闲鱼收个 50 左右 MT7620A 路由做旁路由,可以刷 openwrt 的。
    aru
        7
    aru  
       2023-01-09 19:00:53 +08:00   1
    centos 机器用 libvirt 开一个虚拟机,在虚拟机上搞透明代理就好了
    LGA1150
        8
    LGA1150  
       2023-01-09 20:04:24 +08:00   2
    本机发送的 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
        9
    A01514035  
       2023-01-09 20:40:52 +08:00   1
    https://github.com/SuLingGG/OpenWrt-Docker
    正好是前几天我折腾的,用 docker 跑个 openwrt 作为旁路由,供局域网内其他机器科学上网。
    IvanLi127
        10
    IvanLi127  
       2023-01-09 20:52:26 +08:00
    请教下 OP ,服务器上网也走 clash 的话,那其他机子访问服务器里的服务是能正常访问吗?
    wanmyj
        11
    wanmyj  
    OP
       2023-01-09 20:57:51 +08:00
    @IvanLi127 正常,一般 clash 的 yaml 规则里都会过滤局域网段的流量,局域网段的流量不会走到 clash 里
    wanmyj
        12
    wanmyj  
    OP
       2023-01-09 21:01:15 +08:00
    @LGA1150 清晰专业,大佬受我一拜!
    IvanLi127
        13
    IvanLi127  
       2023-01-09 21:05:18 +08:00
    @wanmyj 这样,我还以为我能抄作业了,哈哈。其实我想国内服务器上全局代理,看来还是只能手动排除服务监听的端口
    cwbsw
        14
    cwbsw  
       2023-01-09 21:30:47 +08:00
    本机流量和转发流量的 hook 点本来就不一样啊,一个在 prerouting 一个在 output 。
    SenLief
        15
    SenLief  
       2023-01-09 22:18:23 +08:00
    clash 本身不是就支持 http/socks 代理的吗?直接不用透明代理不行的吗
    dianso
        16
    dianso  
       2023-01-09 22:28:42 +08:00
    路由器设置 pac 是不是就可以
    ashone07
        17
    ashone07  
       2023-01-09 22:48:06 +08:00
    用旁路由很好解决,需要走代理的设备网关设置为旁路由,不需要的设备网关用主路由
    fish3125
        18
    fish3125  
       2023-01-09 22:52:28 +08:00 via iPhone
    如果透明代理的方式改成 fakeip ,只要修改 dns 就可以决定哪些机器不走代理。
    wangbin526
        19
    wangbin526  
       2023-01-09 22:58:14 +08:00 via Android
    开虚拟机跑个 iStoreOS 再装科学插件,这货自带旁路由模式,设置简单很多
    Jirajine
        20
    Jirajine  
       2023-01-10 01:56:45 +08:00
    你是用的一键脚本吧,自己配置你不专门劫持本机出站流量本身就不会代理本机。
    wanmyj
        21
    wanmyj  
    OP
       2023-01-10 11:31:21 +08:00
    @fish3125 只修改 dns 就可以决定哪些机器不走代理,这个是什么原理,怎么做到的,愿闻其详
    virualv
        22
    virualv  
       2023-01-10 11:47:56 +08:00 via iPhone
    xray 可以,但是切节点比较费事
    fish3125
        23
    fish3125  
       2023-01-10 11:47:57 +08:00
    1. 把 dns 解析转发给 clash 的 dns 端口。然后 clash 会按照你在 clash 里的规则来返回正常或者 fakeip 。
    我是用 adg 只把 gfw 列表转发给 clash ,让 clash 的 dns 返回的全是 fakeip 。

    2. 如果用开源的 clash ,没有 tun 模式,但是可以把 fakeip 转发给 clash 的 redir-port ,内部会自动完成正确域名的转换。
    iptables -t nat -A OUTPUT -p tcp -d 198.18.0.0/16 -j REDIRECT --to-port 8088
    iptables -t nat -A PREROUTING -p tcp -d 198.18.0.0/16 -j REDIRECT --to-port 8088 #把 ip 段重定向到 clash 的 redir-port

    只要解析不经过 clash 的 dns ,就不会走透明代理。
    fish3125
        24
    fish3125  
       2023-01-10 11:55:31 +08:00
    fakeip 模式个人使用下来比使用 ipset 来创建 ip 集合的模式稳定,
    让 clash 的 dns 返回的全是 fakeip ,clash 的配置文档也只需要添加
    ```
    dns:
    enable: true
    listen: 0.0.0.0:8088
    enhanced-mode: fake-ip
    nameserver:
    - 8.8.8.8
    ```
    fish3125
        25
    fish3125  
       2023-01-10 12:00:23 +08:00
    修改下,端口打错了。。
    fakeip 模式个人使用下来比使用 ipset 来创建 ip 集合的模式稳定,
    让 clash 的 dns 返回的全是 fakeip ,clash 的配置文档也只需要添加
    ```
    dns:
    enable: true
    listen: 0.0.0.0:8089 #这个是 clash 的 dns 端口,
    enhanced-mode: fake-ip
    nameserver:
    - 8.8.8.8
    ```
    strp
        26
    strp  
       2023-01-10 13:05:04 +08:00
    开个 4C2G 虚拟机装 OpenWrt ,上面挂 ShadowsocksR Plus+,哪个设备需要翻墙哪个设备就网关指向 OP ,你路由器支持的话还可以在设置里修改 DHCP 服务器分配网关为 OP 的地址,简单旁路由就这样做好啦。
    systemcall
        27
    systemcall  
       2023-01-10 19:47:37 +08:00
    clash 和 v2ray 默认不就是只开一个 http/socks 代理吗?
    你的需求很简单,不要用什么整合了一大堆功能的软件,只用 clash 或者 v2ray 本身,自己写个脚本生成配置文件就好了
    没有用过 xbox ,我只能说 ps 和 steam deck 是可以直接走 http 或者 socks 代理的。设备上面手动配置一下就可以了
    可能需要在防火墙里面放行对应端口
    Penguium
        28
    Penguium  
       2023-01-11 00:04:06 +08:00 via Android
    直接规则里加一条服务器 ip 直连就行了吧
    mmdsun
        29
    mmdsun  
       2023-01-11 13:00:25 +08:00 via iPhone
    现在没玩软路由了。我是家用路由器刷的梅林固件,来加速 Xbox 游戏机的。猫咪插件默认不代理路由器自身流量
    sbmzhcn
        30
    sbmzhcn  
       2023-10-10 13:36:38 +08:00
    请问这个如何解决的,开启 v2ray 后,希望默认不要走透明代理,我发现全部流量都经过了 tproxy ,我想默认直连,不经过 v2ray, 连接端口 10801 时才走 v2ray
    wanmyj
        31
    wanmyj  
    OP
       2023-10-10 14:20:56 +08:00
    @sbmzhcn 我后来把 iptable 重新学习了一遍,参考 @LGA1150 的回答。
    这个要看一下自己的 iptables ,看下 TPROXY 规则插入的位置和内容。

    当时弄了一圈虽然弄好了,但感觉挺麻烦的,后来直接不管这个了,时间和学习代价太高,收益低。
    sbmzhcn
        32
    sbmzhcn  
       2023-10-11 14:06:55 +08:00
    @wanmyj 谢谢回答,这个应该挺麻烦的,我看了下自己机器 Centos7 iptables 是空的,所以不明白它怎么实现所有的流量走 v2ray 的,答案还是需要搞 iptables
    wanmyj
        33
    wanmyj  
    OP
       2023-10-12 18:01:42 +08:00
    @sbmzhcn iptables 如果全是空,肯定是无法实现代理的。如果已经实现了本机代理,你要看下你 iptables 的 PREROUTING 和 OUTPUT 的几张表,里面应该有内容
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2589 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 09:45 PVG 17:45 LAX 01:45 JFK 04:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86