V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
hanssx
V2EX  ›  Linux

内网转发的 DNS 困惑

  •  
  •   hanssx · 2023-11-14 22:06:06 +08:00 · 1629 次点击
    这是一个创建于 376 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司改革 VPN ,换上了VPN ,不想在所有电脑上面都装,于是开了一台虚拟机专门用于转发 VPN ,参考了 V 站一篇文章 https://www.v2ex.com/t/877112 ,之前只有单一 VPN 功能的情况下转发成功了,现在换成了这种,转发就没效果了。

    相关信息

    家庭内网:192.168.0.0/22

    公司 VPN 内网:10.0.0.0/8

    公司 VPN DNS 服务器:10.44.X.X 10.95.X.X

    主路由器已设置 DNS 转发和静态路由

    左边是 VPN 机器上面的 DNS ,即公司内网 DNS ;右边是主路由 openwrt 的,用于把相关匹配到的公司内网域名引到 DNS 服务器去做解析 Imgur

    openwrt 上面的静态路由,用于定位 DNS 服务器和相关公司内网 IP 流量的转发(这一步实际上可以放到内网需要连 VPN 的机器上面去做,因为我这边内网只有 192.168.0/22 网段,所以直接简单直接放到路由器去做了) Imgur

    VPN 机器已经开启转发和 SNAT

    VPN 机器是 192.168.0.104

    uos@uos:~$ cat /proc/sys/net/ipv4/ip_forward
    1
    uos@uos:~$ sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/22 -o tun0 -j MASQUERADE
    uos@uos:~$ sudo iptables -t nat -L
    Chain PREROUTING (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain POSTROUTING (policy ACCEPT)
    target     prot opt source               destination         
    MASQUERADE  all  --  192.168.0.0/22       anywhere            
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    # Warning: iptables-legacy tables present, use iptables-legacy to see them
    
    

    DNS 问题

    VPN 机器通过 ping 和 nslookup 得到的 IP 竟然不一样,traceroute 和 ping 的结果是一样的,出来一个 198.18 段

    uos@uos:~$ ping wiki.xx.com
    PING wiki.xx.com (198.18.0.11) 56(84) bytes of data.
    64 bytes from 198.18.0.11 (198.18.0.11): icmp_seq=1 ttl=64 time=0.734 ms
    
    uos@uos:~$ nslookup
    > wiki.xx.com 
    ;; Got recursion not available from 10.44.X.X, trying next server
    ;; Got recursion not available from 10.95.X.X, trying next server
    Server:         fd22:X:X::1
    Address:        fd22:X:X::1#53
    
    Non-authoritative answer:
    wiki.xx.com     canonical name = wiki.xx.com.
    Name:   wiki.xx.com
    Address: 10.57.22.11
    
    
    

    客户机也无法连接公司内网域名,虽然能 ping 通内网 IP ,但是不知道怎么能得到解析结果为 198.18 的

    x@DESKTOP-XXXXX C:\Users\x
    # ping wiki.xx.com
    
    正在 Ping wiki.xx.com [10.57.22.11] 具有 32 字节的数据:
    Control-C
    
    # ping 198.18.0.11
    
    正在 Ping 198.18.0.11 具有 32 字节的数据:
    来自 198.18.0.11 的回复: 字节=32 时间=1ms TTL=63
    
    
    10 条回复    2023-11-15 22:38:41 +08:00
    hingle
        1
    hingle  
       2023-11-14 22:17:00 +08:00   ❤️ 1
    198.18.0.0/15 很可能是有 clash
    hanssx
        2
    hanssx  
    OP
       2023-11-14 22:23:42 +08:00
    @hingle 我客户机上面确实有 clash for windows ,其他机器上面是没有的,VPN 机器只有个 QQ 和公司*零*信*任*,多出来的这个 198.18 确实理解不了,可能带*零*信*任*的 VPN 没办法这么搞吧,哎,实在不行只能挨个机器装了。
    joyanhui
        3
    joyanhui  
       2023-11-14 22:42:46 +08:00
    赞同#1 同样感觉是 fake-ip 惹得祸
    Aurorataro
        4
    Aurorataro  
       2023-11-15 03:20:18 +08:00
    198.18 段 估计是 Clash 给你分配的 Fake ip ,可以设置相关域名绕过 Clash 核心
    hanssx
        5
    hanssx  
    OP
       2023-11-15 10:56:46 +08:00
    @Aurorataro
    @joyanhui
    老哥们,但是我只有客户机上有 clash for windows ,链路是这样的:家庭内网客户机(192.168.0.100)->VPN 机器(192.168.0.104 当然拨完 VPN 有一个 10.0.0.0/8 的网卡)->公司内网(10.0.0.0/8)
    我得到 198.18 段是在 VPN 机器上面得到的,家庭网关是 192.168.0.1 ,它虽然是 openwrt ,但是它的 openclash 我并没有开启,旁路由是 192.168.0.2 上面倒是开了 openclash ,但是它只服务于特定的几台机器,并不在上面的机器里面。

    fake ip 起码也要经过 clash 才能得到吧?
    nanshaobit
        6
    nanshaobit  
       2023-11-15 14:18:32 +08:00
    qax ?
    hanssx
        7
    hanssx  
    OP
       2023-11-15 15:23:53 +08:00
    客户机:想通过 vpn 机器上公司内网的机器

    验证了一下应该不是 clash fake-ip range ,因为
    1 、我把旁路由直接关机了,客户机 clash 也退掉重新启动了电脑,还是那样。
    2 、我接通 vpn 之后 ping 的是 198.18 ,断开 vpn 之后 ping 不通。
    3 、链路上面不涉及客户机和旁路由的 clash ,是 vpn 那台机器上面就会得到那个 ip

    最后发现 转发 IP 层流量是成功的,不过只能用 IP 访问,比如 198.18 访问,因为域名访问得不到正确的 198.18 段 IP ,但是通过 IP 访问依然需要认证 web 端零信任,依然没法正常使用。

    最后放弃。
    pagxir
        8
    pagxir  
       2023-11-15 19:52:43 +08:00 via Android
    你 openwrt 能 ping 通你们公司的 DNS 么。有可能你需要在 VPN 的机器上安装一下代理转发
    hanssx
        9
    hanssx  
    OP
       2023-11-15 21:56:46 +08:00
    @pagxir 能的,这不是普通的 VPN ,应该是开了代理,有认证相关,直接转发流量是不行的。
    pagxir
        10
    pagxir  
       2023-11-15 22:38:41 +08:00
    @hanssx 手动改 host 呢,hosts 文件 windows 下在 c:\windows\system32\drivers\etc 下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   933 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:14 · PVG 05:14 · LAX 13:14 · JFK 16:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.