一个域名如何使得内网访问走内网,外网访问走穿透 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iriddle911
V2EX    互联网

一个域名如何使得内网访问走内网,外网访问走穿透

  •  1
     
  •   iriddle911 2019-01-21 08:43:27 +08:00 12157 次点击
    这是一个创建于 2509 天前的主题,其中的信息可能已经有所发展或是发生改变。

    嗯...在公司内网某个机子部署了个服务,现在在内网访问时通过 10.0.38.123 这样的地址访问,外网访问是跑了个 FRP 穿透服务,通过 abc.com:8088 这样访问的。

    因为是给办公室几十个人用的,请问有办法让用户在内网访问时,也能输入域名走局域网流量么。 这样不用让用户区分好几个地址,内外网使用时速度也能更高效..

    ps.我们公司上网是得手动设置 ip dns 这些。所以是不是我没法再自己再部署 DNS 了

    42 条回复    2019-06-17 20:41:54 +08:00
    alvin666
        1
    alvin666  
       2019-01-21 08:45:37 +08:00 via Android
    你这根本不是解析的问题啊,你意思内网人家用 abc.com ,外网用 abc.com:8888?
    这样和你现在这种访问有什么区别
    29EtwXn6t5wgM3fD
        2
    29EtwXn6t5wgM3fD  
       2019-01-21 08:46:36 +08:00 via iPhone
    自建 dns 吧 转发 dns 解析到现在使用的 dns
    fetich
        3
    fetich  
       2019-01-21 08:48:54 +08:00
    NAT Loopback
    jiaxin1121
        4
    jiaxin1121  
       2019-01-21 08:49:09 +08:00
    修改 host
    vyronlee
        5
    vyronlee  
       2019-01-21 08:52:27 +08:00 via iPhone
    zerotier
    dengshuang
        6
    dengshuang  
       2019-01-21 08:52:49 +08:00 via Android
    dns 欺骗
    iriddle911
        7
    iriddle911  
    OP
       2019-01-21 08:55:55 +08:00
    @alvin666 没没 我现在内网是走局域网 ip 的 外网是 abc.com:8088 这个地址,现在想实现内网访问 abc.com:8088 时走不同流量,都能进入这个服务。这个意思。
    BOYPT
        8
    BOYPT  
       2019-01-21 08:58:25 +08:00
    域名指向个外网网页,载入时候 jQuery 尝试加载内网地址,超时就跳转你的业务外网地址,加载成功就跳转业务内网地址。
    CallMeReznov
        9
    CallMeReznov  
       2019-01-21 08:59:02 +08:00
    内网机器全部 DNS 指向你的路由器 然后在路由器上写一条你自定义的 DNS 指向你的 IP 即可
    iriddle911
        10
    iriddle911  
    OP
       2019-01-21 09:02:25 +08:00
    @CallMeReznov 老哥 您是说自己做 DNS 设置么。我目前暂时没有权限动公司的 DNS 服务器....
    chinvo
        11
    chinvo  
       2019-01-21 09:04:16 +08:00 via iPhone
    公司内部部署 DNS 服务器,全公司机器统一设置内网 DNS (比如通过加域
    iriddle911
        12
    iriddle911  
    OP
       2019-01-21 09:05:04 +08:00
    @BOYPT 嗯嗯嗯 老哥您这也是个很好的解决办法了。不过我还有移动端.....移动端是填写服务地址进入 app 的,这样就不好搞了吧
    CallMeReznov
        13
    CallMeReznov  
       2019-01-21 09:05:16 +08:00
    @iriddle911 #10 私架个 WIFI 然后在 WIFI 里的自定义 DNS 里添加一个记录指向你的 IP
    iriddle911
        14
    iriddle911  
    OP
       2019-01-21 09:09:20 +08:00
    再给大家说下 公司 DNS 我暂时没法动。网管也不给改.......
    iriddle911
        15
    iriddle911  
    OP
       2019-01-21 09:09:53 +08:00
    @CallMeReznov emm 那台式机是不是就没办法了
    shuang
        16
    shuang  
       2019-01-21 09:16:10 +08:00
    dns 动不了,那就搞个 http 代理吧,通过代理改映射。每个人在自己的终端上设置下代理 ip 及端口
    35korea
        17
    35korea  
       2019-01-21 09:19:24 +08:00 via Android
    启动时。用户自己选,内网,还是外网
    35korea
        18
    35korea  
       2019-01-21 09:22:22 +08:00 via Android
    有个 cdn 软件 fikker 解析时有个轮询功能,不知道能否利用
    wweir
        19
    wweir  
       2019-01-21 09:24:38 +08:00 via Android
    出个损招,首页加串代码,尝试内网地址地址。
    成功就来个 302,不成功就 pass。

    缺点是域名始终没法统一
    C2G
        20
    C2G  
       2019-01-21 09:28:21 +08:00 via Android
    手动设置 IP 和你手动设置 dns 有什么关系...找个路由器,搭建 dnsmasq,上层路由填你们公司原来那个,在 dnsmasq 里面设置 abc.com→内网地址,然后把电脑 dns 改成路由器 IP,这种方法即使你们公司只允许访问原有的 dns 也没有问题。
    alvin666
        21
    alvin666  
       2019-01-21 09:29:32 +08:00 via Android
    楼上尝试的,timeout 至少要两三秒吧,或者自己手动 500ms 的 timeout ?那也难受

    我建议就是反代服务器也开在 80,然后 dns 内网外网都设置上,浏览器会逐个尝试,选择能通的,亲测还挺快
    aru
        22
    aru  
       2019-01-21 09:31:52 +08:00
    web 服务器可以通过用户请求的 header 中的 X-Forwarded-For 和 X-Real-IP 来获取用户真实 IP。
    如果你们公司的出口 IP 是固定地址,那么访问 abc.com:8088 直接跳转到内网访问地址即可( nginx 或应用中判断都行)
    Sylv
        23
    Sylv  
       2019-01-21 09:38:55 +08:00 via iPhone
    可以通过内网路由配置 dnsmasq 实现:
    address=/abc.com/10.0.38.123
    zwh2698
        24
    zwh2698  
       2019-01-21 09:42:26 +08:00 via Android
    配置个路由简单方便
    zwh2698
        25
    zwh2698  
       2019-01-21 09:45:16 +08:00 via Android
    看错忽略上一条
    wps353
        26
    wps353  
       2019-01-21 09:45:18 +08:00
    内网路由器 DNS 劫持
    zhouzm
        27
    zhouzm  
       2019-01-21 09:54:45 +08:00
    正好之前做过,说一下我的办法:
    1. 公司 dns 服务器不让动,你可以在服务器上自己建一个,推荐 overture,用 docker 建的话很方便。hosts_sample 里直接加内网 ip 对外网域名就可以,上级 dns 服务器填公司 dns 服务器。办公室人员电脑 dns 设置为你建的服务器。
    2. 在服务器上用 nginx 做反向代理,把 abc.com:8088 反代到 内网 ip:内网端口,另外配合三级域名,一个 8088 端口可以提供多个不同的服务。

    这样就可以实现内外网都访问 abc.com:8088,外网走外网流量,内网走内网流量
    oott123
        28
    oott123  
       2019-01-21 09:54:56 +08:00 via Android
    有个比较离奇的办法:像 21 楼说的那样,你自己的域名内网、外网 ip 都解析(两条记录,同等优先级);同时在转发服务器上拦截来自内网 ip 的请求(防火墙,直接 drop 掉),这样也许好使…
    edsion996
        29
    edsion996  
       2019-01-21 10:02:59 +08:00
    做一个导航页挂在外网,然后一个外网入口、一个内网入口解决记好几个地址的困扰。
    或者,公司的出口 IP 一般是固定的几个,在程序上判断,然后做个 301 跳转
    iriddle911
        30
    iriddle911  
    OP
       2019-01-21 10:05:23 +08:00
    @zhouzm
    @aru
    感谢两位回复,让 nginx 判断访问 ip 应该能行的通。我去试一下。
    dot2017
        31
    dot2017  
       2019-01-21 10:06:27 +08:00
    内网放个 2 级 dns 不就好了。。。简单的问题变复杂
    aru
        32
    aru  
       2019-01-21 10:07:28 +08:00
    @iriddle911
    要设置 realip,否则你拿不到真实 IP 地址
    http://nginx.org/en/docs/http/ngx_http_realip_module.html
    mhycy
        33
    mhycy  
       2019-01-21 10:20:40 +08:00
    FRP+Nginx 反代,域名解析到外网 IP
    内网使用 ROS 之类的路由,劫持全网 DNS 请求,由 ROS 的 DNS 提供内网地址
    defunct9
        34
    defunct9  
       2019-01-21 15:32:58 +08:00
    dnsmasq
    liuxyon
        35
    liuxyon  
       2019-01-21 16:36:44 +08:00
    我用 bgp,自己 ip 内部直连
    hquu
        36
    hquu  
       2019-01-21 18:42:20 +08:00 via iPhone
    内网直接改 host 文件 或者改路由 iptables
        37
    zhouyut001  
       2019-01-21 20:00:13 +08:00
    内网 dnsmasq 指向内网 IP,外网直接访问
    mingl0280
        38
    mingl0280  
       2019-01-22 06:39:09 +08:00
    内网的 dns 服务器指向内网 ip 就行了,实在没有 dns 服务器访问权限的话改 hosts 也行,我用这个手段避免了批量部署下去的 Ubuntu 和 debian 的更新流量跑到外网去……内网上架了个 dns,架了个 apache2 的源服务器,更新直接请求内网服务器就行了。
    iriddle911
        40
    iriddle911  
    OP
       2019-01-23 10:40:01 +08:00   1
    结贴了~最终使用 nginx 根据访问 ip 分配不同 url 解决
    谢谢各位的热心帮助~~~
    haiyulee
        41
    haiyulee  
       2019-04-24 13:14:59 +08:00 via Android
    楼主,我也想做相同的操作,有几个问题不明白
    不同的 url 具体是怎么写的?
    服务器是只在内网环境有一台吧?
    域名解析出来都是指向反代服务器吗?
    还有很多具体的问题,能分享下 nginx 的配置文件吗?
    iriddle911
        42
    iriddle911  
    OP
       2019-06-17 20:41:54 +08:00
    @haiyulee
    1. 在 nginx 里配置,就是根据来源 ip 分配不同的域名,这个你搜索一下,网上挺多;
    2. 这样操作需要有一台公网服务器,阿里云什么的;
    3. 解析是这样,访问 www.abc.com ,此时解析至公网的反代服务器,然后这时由 nginx 判断,如果来源是内网,那么直接跳转内网地址,如果来源是非内网,那么就走跳转的服务。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3940 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 05:26 PVG 13:26 LAX 21:26 JFK 00:26
    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