V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dalaoshu25
V2EX  ›  宽带症候群

[RouterOS] IP 分流之后人类社会无法回访的问题

  •  
  •   dalaoshu25 · 6 天前 · 947 次点击

    众所周知,RouterOS 通过 wireguard 和 OSPF 分流之后,访问人类社会网络非常方便。凡是访问人类社会,直接就走 WG 隧道。

    现在有个问题: 有些情况下,海外的主机主动过来访问却遇到了失败。

    比如偶遇到的情况:申请和更新 LetsEncrypt 证书的时候,letsencrypt 那边要检查域名的合法性,会从海外主机通过 web 读取这边的验证文件。这时候外来的数据是走正常的路由,而从本地返回的数据经过 RouterOS 后却走了分流的路由,从海外 VPS 那边过去了。主机那边显然认为这是非法数据包拒收了,于是验证过程失败。

    解决方法之前有两个:

    1. 使用 RFC2136 方式验证域名
    2. 临时关闭 IPv6 的 OSPF 分流

    有的动态域名供应商支持 RFC2136 ,比如 dynv6 ,方法一可行,普通 Linux 主机可以用这个。 但是 RouterOS 自己不支持,很多动态域名供应商也不支持,比如 ipv64.net ,只能用方法 2 。 但这个影响略大,一般是放在半夜三点的时候做。

    基本解决思路跟那些双线分流的策略路由差不多:跟踪包的来源,从哪儿来还从哪里回去。

    OSPF 分流是把所有人类社会的网段全部走隧道出去的,虽然相当一部分网段是不受栅栏影响的,但是考虑到国内 v6 线路的实际情况,一股脑儿走隧道反而大部分情况下效果更好。

    现在既然某个海外主机能把 TCP 链接请求发送到咱的地址上,那就说明这条路是通的,这个 TCP 会话的后续数据包就可以依旧走这条路由(也就是从 pppoe-out1 )直接回去。

    具体方法就是学习策略路由的方式,对这种包打标记:先对入口的包打连接标记,然后有这个标记的出口包就打上路由标记,强制走 pppoe-out1 。

    # 建立一个路由表,有这个标记的强制走 pppoe-out1, 绕过分流
    /routing table add comment="No VPS" disabled=no fib name=DirectWAN
    /ipv6 route add comment=DirectVPS dst-address=::/0 gateway=pppoe-out1 routing-table=DirectWAN
    /routing rule add action=lookup-only-in-table routing-mark=DirectWAN table=DirectWAN
    
    # 然后是打标记
    /ipv6 firewall mangle add action=mark-connection chain=prerouting comment="Out of China" connection-state=new in-interface-list=WAN new-connection-mark=DirectWAN protocol=tcp tcp-flags=syn
    /ipv6 firewall mangle add action=mark-routing chain=prerouting comment="Out of China" connection-mark=DirectWAN in-interface-list=LAN new-routing-mark=DirectWAN
    
    

    由于移动宽带没有公网 IPv4, 这里就只写了 IPv6 的配置,v4 需要的话是完全一样的。

    仅供参考。欢迎提意见。

    1 条回复    2024-11-15 23:03:39 +08:00
    Naples
        1
    Naples  
       5 天前
    楼主用!CNList ,估计 wireguard 的 ipv6 链路应该很好,不知主机是哪家,本地 IPS 又是谁?

    另外,是一定要时刻通过隧道连接那台需要更新证书的 VPS 吗?不需要的话,直接在 OSPF 中排除或本地 route 中添加直连就行了,好过打标。

    我和你方案一样,BGP over wireguar over IPv6 ,!CNlist 也作了一些删减、整合。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3468 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:19 · PVG 19:19 · LAX 03:19 · JFK 06:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.