V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
tyhunter
V2EX  ›  问与答

Openwrt 有办法将域名劫持到内网 IP:端口吗

  •  
  •   tyhunter · 2019-11-02 14:00:49 +08:00 · 11943 次点击
    这是一个创建于 1837 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在内网用 PVE 部署了一台黑裙,IP 地址是 192.168.1.12:5000,同时在 openwrt 上配置了 frp,域名为:dsm.xxxx.com ( nginx 反代二级域名到 5000 端口),现在想在家时访问 dsm.xxxx.com 自动跳转到 192.168.1.12:5000 避免 frp 还要消耗一波流量,但是搜了下好像只能用 hosts 的方法劫持域名到 IP,没法劫持域名到 IP:端口的形式,请教下大佬,该怎么操作
    15 条回复    2022-12-25 23:09:22 +08:00
    Raynard
        1
    Raynard  
       2019-11-02 14:15:33 +08:00
    ddns+端口转发
    natsji
        2
    natsji  
       2019-11-02 14:15:34 +08:00 via Android
    用 dns
    Chauncey09
        3
    Chauncey09  
       2019-11-02 14:17:24 +08:00 via Android
    我在家都是直接用内网地址访问的。。
    mt7620
        4
    mt7620  
       2019-11-02 14:17:52 +08:00
    dsm.xxxx.com 域名指定到路由器 ip,然后路由器上做个端口转发 80 -> 192.168.1.12:5000。
    tyhunter
        5
    tyhunter  
    OP
       2019-11-02 15:04:43 +08:00
    @Raynard 没有公网 IP...只能用 frp 了
    @Chauncey09 我还要兼顾外网访问,相当于要收藏两个地址
    @mt7620 感谢,我先去试试这个思路
    ochatokori
        6
    ochatokori  
       2019-11-02 18:13:19 +08:00 via Android
    dsm.xxxx.com 解析到 192.168.1.12
    用 nginx 做反代(80 反到 500 )就行了啊
    ysc3839
        7
    ysc3839  
       2019-11-02 23:08:55 +08:00 via Android   ❤️ 1
    劫持到 192.168.255.233 这种一般不会用到的网段,再到防火墙设置里加个端口转发的规则。
    tyhunter
        8
    tyhunter  
    OP
       2019-11-03 00:04:24 +08:00
    @ysc3839 请教下大佬,如何才能用 iptables 做端口转发?
    我现在内网还在群晖上跑了个 emby,端口是 8096,已经在 openwrt 的 hosts 里将 emby.xxxx.com 劫持到 192.168.1.222
    我用下面的自定义防火强规则,但是貌似没起作用
    iptables -t nat -A PREROUTING -d 192.168.1.222 -p tcp -m tcp--dport 80 -j DNAT --to-destination 192.168.1.12:8096
    iptables -t nat -A POSTROUTING -d 192.168.1.12 -p tcp -m tcp--dport 8096 -j SNAT --to-source 192.168.1.222
    ysc3839
        9
    ysc3839  
       2019-11-03 00:13:14 +08:00
    @tyhunter 不能用同一网段的,这样的话会走以太网协议直接发到目标设备。
    另外建议使用 OpenWrt 自带的防火墙设置端口转发。
    luci 里面这样设置:

    ysc3839
        10
    ysc3839  
       2019-11-03 00:15:58 +08:00
    另外,最好能在目标设备上配置,因为少了一层转发。如果是不同的 HTTP 服务需要使用相同端口 (80, 443),也可以使用 nginx。
    tyhunter
        11
    tyhunter  
    OP
       2019-11-03 00:16:56 +08:00
    @ysc3839 我在折腾下,谢谢大佬解答
    Osk
        12
    Osk  
       2019-11-03 00:36:35 +08:00
    我觉得可以这样:

    openwrt 上 dnsmasq 内网劫持 dsm.xxx.com dns 到内网另一个 ip 上。
    然后该内网服务器上 nginx/light httpd 什么的 80 端口的做个静态页面。
    页面中通过 js 判断 window.location.host 的域名,如果是 dsm.xxx.com ,js 就来个跳转。

    相当于该页面帮你完成跳转。。。
    MonoLogueChi
        13
    MonoLogueChi  
       2019-11-03 10:22:54 +08:00 via Android
    openwrt 里面应该可以自己设定 DNS,我用的 koolshare 编译的固件,有 DHCP/DNS 设定,可以自己定义 hosts。至于端口转发,在防火墙选项里可以设置。

    其实没必要做端口转发的在群晖里面搞个 Nginx 反向代理也是可以的
    duoguo
        14
    duoguo  
       2019-11-03 19:46:23 +08:00
    dnsmasq 将域名指向 ip。
    群晖如果你没开启网站和相册这类的应用的话,访问 IP:80 端口自动跳到 ip:5000 端口。至少我的黑群晖是这样
    如果 80 端口备用了,自己做个跳转就好了
    feimeizhan
        15
    feimeizhan  
       2022-12-25 23:09:22 +08:00
    請問你最後是使用了什麼的方式呢?能分享一下嗎?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1129 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:53 · PVG 06:53 · LAX 14:53 · JFK 17:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.