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

2019-01-21 08:43:27 +08:00
 iriddle911

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

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

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

11475 次点击
所在节点    互联网
42 条回复
alvin666
2019-01-21 09:29:32 +08:00
楼上尝试的,timeout 至少要两三秒吧,或者自己手动 500ms 的 timeout ?那也难受

我建议就是反代服务器也开在 80,然后 dns 内网外网都设置上,浏览器会逐个尝试,选择能通的,亲测还挺快
aru
2019-01-21 09:31:52 +08:00
web 服务器可以通过用户请求的 header 中的 X-Forwarded-For 和 X-Real-IP 来获取用户真实 IP。
如果你们公司的出口 IP 是固定地址,那么访问 abc.com:8088 直接跳转到内网访问地址即可( nginx 或应用中判断都行)
Sylv
2019-01-21 09:38:55 +08:00
可以通过内网路由配置 dnsmasq 实现:
address=/abc.com/10.0.38.123
zwh2698
2019-01-21 09:42:26 +08:00
配置个路由简单方便
zwh2698
2019-01-21 09:45:16 +08:00
看错忽略上一条
wps353
2019-01-21 09:45:18 +08:00
内网路由器 DNS 劫持
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
2019-01-21 09:54:56 +08:00
有个比较离奇的办法:像 21 楼说的那样,你自己的域名内网、外网 ip 都解析(两条记录,同等优先级);同时在转发服务器上拦截来自内网 ip 的请求(防火墙,直接 drop 掉),这样也许好使…
zjb861107
2019-01-21 10:02:59 +08:00
做一个导航页挂在外网,然后一个外网入口、一个内网入口——解决记好几个地址的困扰。
或者,公司的出口 IP 一般是固定的几个,在程序上判断,然后做个 301 跳转
iriddle911
2019-01-21 10:05:23 +08:00
@zhouzm
@aru
感谢两位回复,让 nginx 判断访问 ip 应该能行的通。我去试一下。
dot2017
2019-01-21 10:06:27 +08:00
内网放个 2 级 dns 不就好了。。。简单的问题变复杂
aru
2019-01-21 10:07:28 +08:00
@iriddle911
要设置 realip,否则你拿不到真实 IP 地址
http://nginx.org/en/docs/http/ngx_http_realip_module.html
mhycy
2019-01-21 10:20:40 +08:00
FRP+Nginx 反代,域名解析到外网 IP
内网使用 ROS 之类的路由,劫持全网 DNS 请求,由 ROS 的 DNS 提供内网地址
defunct9
2019-01-21 15:32:58 +08:00
dnsmasq
liuxyon
2019-01-21 16:36:44 +08:00
我用 bgp,自己 ip 内部直连
hquu
2019-01-21 18:42:20 +08:00
内网直接改 host 文件 或者改路由 iptables
zhouyut001
2019-01-21 20:00:13 +08:00
内网 dnsmasq 指向内网 IP,外网直接访问
mingl0280
2019-01-22 06:39:09 +08:00
内网的 dns 服务器指向内网 ip 就行了,实在没有 dns 服务器访问权限的话改 hosts 也行,我用这个手段避免了批量部署下去的 Ubuntu 和 debian 的更新流量跑到外网去……内网上架了个 dns,架了个 apache2 的源服务器,更新直接请求内网服务器就行了。
hanbaobao2005
2019-01-22 06:46:45 +08:00
iriddle911
2019-01-23 10:40:01 +08:00
结贴了~最终使用 nginx 根据访问 ip 分配不同 url 解决
谢谢各位的热心帮助~~~

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

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

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

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

© 2021 V2EX