V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
EyebrowsWhite

请教 wg 回家遇到的问题

  •  
  •   EyebrowsWhite · Nov 21, 2023 via iPhone · 3031 views
    This topic created in 900 days ago, the information mentioned may be changed or developed.
    先介绍一下网络的情况,本人家里有公网 IP ,路由器是 Mikrotik ,拨号的同时作为 wireguard 的一个 peer ,平时就在外边就用代理软件分个流然后可以无缝访问内网。家里内网还有一台 nuc ,装的 debian ,搭建了一些服务,Home Assistant 之类的。

    现在遇到一个很奇葩的问题,在外边访问不通 nuc ,但其他的设备包括路由器管理页面等等都是通的,而且这是昨天晚上突然出现的,之前一直好好的,昨天尝试清空 iptables 规则、增加允许网段、更换 wg 端口,更换 nuc 的 ip 等等各种手段都没有见效,并且 nuc 看不到任何日志。

    我怀疑是不是运营商阻断了呢?如果是的话这是怎么做到的?如果不是还有可能是什么原因呢
    Supplement 1  ·  Nov 21, 2023

    更新一下进展,给后续有需要的人参考,目前问题算是解决了,只不过暂时不确定解决方案有没有什么风险。 解决方案是在ROS上增加一条NAT规则

    /ip firewall nat add chain=srcnat src-address=10.0.0.0/24 action=masquerade

    src-address是wg的网段

    在此之前我一直没有设置过这条规则,都用了一年多了,HA的nginx日志显示的地址也一直是我的wg网段,然后今天发现在wireguard的设置教程里往往会设置

    PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

    我感觉我之前一直是有问题的,运气好一直用着,正常就应该设置伪装的。

    另外也附一张抓包的截图吧,虽然我啥都没看出来

    Supplement 2  ·  Nov 21, 2023
    又研究了一波,找到了根本原因,原来是因为 nuc 的网关设置有问题,因为要富强所以设置成了我的旁路由,这次搞清楚了,在 nuc 上直接加个静态路由不用伪装也可以了😄
    13 replies    2023-11-21 21:20:17 +08:00
    maybeonly
        1
    maybeonly  
       Nov 21, 2023
    如果“其他设备都是通的”,盲猜一个 nuc 设置了“只允许局域网访问”,然后你的 wg 不在同一个局域网网段
    但是有一个问题,除了路由器和 nuc 以外的其他设备呢?如果其他设备也不通,那可能是路由设置错误,比如没有回程路由,和 wg 的 allowedip 没有添加内网网段之类的。
    如果仍然解决不了,抓包看看。
    wg 是加密的 vpn ,运营商做不到只阻断里边特定的连接。
    niukuo
        2
    niukuo  
       Nov 21, 2023 via iPhone
    盲猜 nuc 子网掩码设置有问题
    yukinomiu
        3
    yukinomiu  
       Nov 21, 2023
    wg 先回家, 然后通过其他机器作为跳板, 看看能不能连上这个 nuc; 再或者在 mikrotik 里 ping 下 nuc 的 IP, 看看能否通
    mcluyu
        4
    mcluyu  
       Nov 21, 2023
    NUC 时 win 系统吗? 检查下 NUC 的的网络设置是不是自动变为 公用网络 了防火墙变了局域网就访问不到了, 改为专用网络应该就可以了
    Senorsen
        5
    Senorsen  
       Nov 21, 2023
    对比一下 wg 网段和 nuc 的路由表
    hahasong
        6
    hahasong  
       Nov 21, 2023
    太麻烦了 不如 ss+分流规则
    EyebrowsWhite
        7
    EyebrowsWhite  
    OP
       Nov 21, 2023
    @maybeonly 上面还提到了一点,在昨天之前都是没问题的,而且我很多天没折腾那台 nuc 了,所以我感觉 nuc 应该设置没问题的

    @niukuo 子网掩码就是 255.255.255.0 ,wg 和内网都是,会有什么问题吗
    EyebrowsWhite
        8
    EyebrowsWhite  
    OP
       Nov 21, 2023
    @yukinomiu 用其他机器做跳板是可以的,路由器上 ping 也没有问题,nuc 本身没有挂掉

    @mcluyu 用的是 debian
    Senorsen
        9
    Senorsen  
       Nov 21, 2023
    另外没深度用过 RouterOS 不清楚能不能开 tcpdump ,可以在 wg interface 上抓包看看是哪一步开始出问题的(外网到 nuc 的包/nuc 回包等)
    EyebrowsWhite
        10
    EyebrowsWhite  
    OP
       Nov 21, 2023
    @Senorsen 我对 ROS 也用的不深,不过我查资料试试看,目前好像只有抓包才能搞明白怎么回事了
    ztelliot
        11
    ztelliot  
       Nov 21, 2023
    @EyebrowsWhite 可以用 /tool/sniffer 抓包
    surfwave
        12
    surfwave  
       Nov 21, 2023
    先 traceroute 看看哪里卡住了。建议看看主机的路由表,如果装了 docker ,docker 容器多了之后,某个容器自动生成的子网搞不好跟某台主机的 IP 会冲突。
    EyebrowsWhite
        13
    EyebrowsWhite  
    OP
       Nov 21, 2023
    更新一下进展,给后续有需要的人参考,目前问题算是解决了,只不过暂时不确定解决方案有没有什么风险。
    解决方案是在 ROS 上增加一条 NAT 规则

    `/ip firewall nat add chain=srcnat src-address=10.0.0.0/24 action=masquerade`

    src-address 是 wg 的网段

    在此之前我一直没有设置过这条规则,都用了一年多了,HA 的 nginx 日志显示的地址也一直是我的 wg 网段,然后今天发现在 wireguard 的设置教程里往往会设置

    `PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE`

    我感觉我之前一直是有问题的,运气好一直用着,正常就应该设置伪装的。

    另外也附一张抓包的截图吧,虽然我啥都没看出来
    ![]( )
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3088 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 11:05 · PVG 19:05 · LAX 04:05 · JFK 07:05
    ♥ Do have faith in what you're doing.