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

RouterOS 如何完美做端口转发?

  •  1
     
  •   imydou · 2023-02-06 10:04:45 +08:00 · 2261 次点击
    这是一个创建于 658 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网络上搜索到的配置基本差不多,照做之后有一个问题,启用 dst-port=24680 的规则后,内网连接任意公网 IP 的 24680 端口被转发到内网 10.0.100.2 。

    求大神指点。

    相关 firewall 配置:

    /ip firewall nat
    add action=masquerade chain=srcnat comment="defconf: masquerade" \
        ipsec-policy=out,none out-interface=!bridge out-interface-list=WAN
    add action=masquerade chain=srcnat dst-address=10.0.0.0/16 src-address=\
        10.0.0.0/16
    add action=dst-nat chain=dstnat comment=win10 dst-port=24680 protocol=tcp \
        to-addresses=10.0.100.2 to-ports=3389
    
    10 条回复    2023-02-08 08:49:09 +08:00
    Rysle
        1
    Rysle  
       2023-02-06 10:22:57 +08:00   ❤️ 1
    加个 in-interface 参数限制一下,只对公网来的请求进行转发就可以了
    RRyo
        2
    RRyo  
       2023-02-06 10:32:00 +08:00   ❤️ 1
    ros 默认的话你 pppoe 等公网方向会在 WAN 列表 所以
    /ip firewall nat
    add action=dst-nat chain=dstnat comment="ONLY FROM WAN" in-interface-list=WAN dst-port=24680 protocol=tcp to-addresses=10.0.100.2 to-ports=3389

    顺便强烈不建议对 RDP 端口进行公网暴露,高位端口卵用没有,这种高危险性的服务只应该内网访问,外网建议使用 VPN 接回
    carbon
        3
    carbon  
       2023-02-06 10:39:46 +08:00   ❤️ 1
    以上方法。
    或者:添加 dst-address-list 参数限制下,还有回流。https://www.jianshu.com/p/5869f1f2e1df
    codingadog
        4
    codingadog  
       2023-02-06 10:41:57 +08:00   ❤️ 1
    我用的最简单的办法,绑定 mac 固定 ip ,然后针对此 ip 的端口做转发。不用做什么回流之类的那一步。
    imydou
        5
    imydou  
    OP
       2023-02-06 10:46:38 +08:00
    @RRyo #2 这样配置,好像内网不能通过公网 IP 访问
    keyfunc
        6
    keyfunc  
       2023-02-06 10:47:40 +08:00   ❤️ 1
    RouterOS 的 Wiregurad 很好用,推荐用这玩意~
    RRyo
        7
    RRyo  
       2023-02-06 11:22:39 +08:00   ❤️ 1
    @imydou #5
    要加 hairpin NAT

    add action=masquerade chain=srcnat comment="Hairpin NAT" dst-address=10.0.0.0/16 out-interface=lan src-address=10.0.0.0/16
    arfaWong
        8
    arfaWong  
       2023-02-06 15:30:27 +08:00
    @RRyo 搭车请教个问题

    add chain=dstnat action=accept protocol=udp src-address=10.10.0.2 dst-port=53
    add chain=dstnat action=dst-nat to-addresses=10.10.0.2 to-ports=53 protocol=udp dst-port=53
    add chain=srcnat action=masquerade src-address=10.10.0.0/16 out-interface=pppoe-out1

    10.10.0.1 --> 网关
    10.10.0.2 --> 内网 dns 服务器

    目前 dhcp 分配的是 10.10.0.1 dns ,想通过劫持的方式修改局域网内的 dns 为 10.10.0.2 。按照上面的配置, 内网 dns 服务器能收 dns 解析请求并成功解析,但是客户端无法收到解析结果。如果将 masquerade 规则里的 out-interface 删除,客户端是可以收到解析结果的,但此时内网 dns 服务器就不能记录客户端 ip 地址(显示的是网关的 ip )。请问有什么办法解决吗?
    ZRS
        9
    ZRS  
       2023-02-06 20:29:13 +08:00 via iPhone
    @RRyo 你这个 Hairpin NAT 写法,如果不下挂交换机的话,所有内网设备互访都要走路由做 NAT 了,有性能和便利性上的问题吧…
    RRyo
        10
    RRyo  
       2023-02-08 08:49:09 +08:00
    @ZRS #9 他前面发的是个 B 类的,所以我给他回复的也是 B 类,正常来说是同一个 /24 的划分,有且仅有访问路由器 WAN 方向地址才会过 NAT ,其它情况下互访都是一个子网,不过路由的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3028 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:50 · PVG 22:50 · LAX 06:50 · JFK 09:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.