一台内网机器做网关时,其他网段的机器能 ping 通但无法访问,该如何查找问题? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
A01514035
V2EX    Linux

一台内网机器做网关时,其他网段的机器能 ping 通但无法访问,该如何查找问题?

  •  
  •   A01514035 2022-12-28 17:09:56 +08:00 3308 次点击
    这是一个创建于 1062 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有 A B C 三台机器,A 机器为 10.167.72.3 ,B 机器为 10.154.2.200 ,C 机器为 10.154.2.234 。原本状态下 A 能够 ssh 登录到 B C 两台机器。 现在 B 机器能够访问外网,C 机器不能,想让 B 机器作为 C 机器的网关进行转发。B 机器进行了如下配制

    vi /etc/sysctl.conf net.ipv4.ip_forward=1 # 转发内网流量 firewall-cmd --add-masquerade --permanent firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o em1 -j MASQUERADE -s 10.154.2.0/24 # 允许域名解析,不开启只能通过 IP 访问外网 firewall-cmd --zOne=public --permanent --add-port=53/udp firewall-cmd --zOne=public --permanent --add-port=53/tcp firewall-cmd --reload 

    将 C 机器的网关由 10.154.2.1 改为 10.154.2.200 后,A 机器能够 ping 通 C 机器,但是不能 ssh 进去,只能先 ssh 进去 B 机器再进入 C 机器,A 机器也无法访问 C 机器的 http 服务,但是 B 机器可以访问。这种情况该如何排查问题?

    16 条回复    2023-02-25 21:53:42 +08:00
    CnpPt
        1
    CnpPt  
       2022-12-28 17:22:59 +08:00
    「 A 机器能够 ping 通 C 机器,但是不能 ssh 进去」 tcpdump 抓包看下?
    A01514035
        2
    A01514035  
    OP
       2022-12-28 17:40:27 +08:00
    C 机器运行`python3 -m http.server`,并运行 sudo tcpdump -i eno1 -nn port 8000
    作为网关的 B(10.154.2.200)机器访问 C 机器(10.154.2.234)正常,结果如下
    ```
    17:35:18.319189 IP 10.154.2.200.57190 > 10.154.2.234.8000: Flags [S], seq 1022809144, win 29200, options [mss 1460,sackOK,TS val 4086006647 ecr 0,nop,wscale 7], length 0
    17:35:18.319234 IP 10.154.2.234.8000 > 10.154.2.200.57190: Flags [S.], seq 499408436, ack 1022809145, win 65160, options [mss 1460,sackOK,TS val 2485038435 ecr 4086006647,nop,wscale 7], length 0
    17:35:18.319388 IP 10.154.2.200.57190 > 10.154.2.234.8000: Flags [.], ack 1, win 229, options [nop,nop,TS val 4086006647 ecr 2485038435], length 0
    17:35:18.319489 IP 10.154.2.200.57190 > 10.154.2.234.8000: Flags [P.], seq 1:83, ack 1, win 229, options [nop,nop,TS val 4086006647 ecr 2485038435], length 82
    17:35:18.319502 IP 10.154.2.234.8000 > 10.154.2.200.57190: Flags [.], ack 83, win 509, options [nop,nop,TS val 2485038435 ecr 4086006647], length 0
    17:35:18.321021 IP 10.154.2.234.8000 > 10.154.2.200.57190: Flags [P.], seq 1:157, ack 83, win 509, options [nop,nop,TS val 2485038436 ecr 4086006647], length 156
    17:35:18.321059 IP 10.154.2.234.8000 > 10.154.2.200.57190: Flags [.], seq 157:1605, ack 83, win 509, options [nop,nop,TS val 2485038436 ecr 4086006647], length 1448
    17:35:18.321103 IP 10.154.2.234.8000 > 10.154.2.200.57190: Flags [FP.], seq 1605:1814, ack 83, win 509, options [nop,nop,TS val 2485038436 ecr 4086006647], length 209
    17:35:18.321222 IP 10.154.2.200.57190 > 10.154.2.234.8000: Flags [.], ack 157, win 237, options [nop,nop,TS val 4086006649 ecr 2485038436], length 0
    17:35:18.321222 IP 10.154.2.200.57190 > 10.154.2.234.8000: Flags [.], ack 1815, win 263, options [nop,nop,TS val 4086006649 ecr 2485038436], length 0
    17:35:18.321884 IP 10.154.2.200.57190 > 10.154.2.234.8000: Flags [F.], seq 83, ack 1815, win 263, options [nop,nop,TS val 4086006649 ecr 2485038436], length 0
    17:35:18.321904 IP 10.154.2.234.8000 > 10.154.2.200.57190: Flags [.], ack 84, win 509, options [nop,nop,TS val 2485038437 ecr 4086006649], length 0
    ```
    A 机器(10.167.72.3)访问会没有返回一直卡住,tcpdump 结果如下
    ```
    17:35:33.596370 IP 10.167.72.3.50474 > 10.154.2.234.8000: Flags [SEW], seq 2154563866, win 65535, options [mss 1360,nop,wscale 6,nop,nop,TS val 3273571770 ecr 0,sackOK,eol], length 0
    17:35:33.596411 IP 10.154.2.234.8000 > 10.167.72.3.50474: Flags [S.E], seq 3472988495, ack 2154563867, win 65160, options [mss 1460,sackOK,TS val 3860178821 ecr 3273571770,nop,wscale 7], length 0
    17:35:34.596902 IP 10.167.72.3.50474 > 10.154.2.234.8000: Flags [S], seq 2154563866, win 65535, options [mss 1360,nop,wscale 6,nop,nop,TS val 3273572771 ecr 0,sackOK,eol], length 0
    17:35:34.596934 IP 10.154.2.234.8000 > 10.167.72.3.50474: Flags [S.E], seq 3472988495, ack 2154563867, win 65160, options [mss 1460,sackOK,TS val 3860179821 ecr 3273571770,nop,wscale 7], length 0
    17:35:35.598628 IP 10.167.72.3.50474 > 10.154.2.234.8000: Flags [S], seq 2154563866, win 65535, options [mss 1360,nop,wscale 6,nop,nop,TS val 3273573772 ecr 0,sackOK,eol], length 0
    17:35:35.598658 IP 10.154.2.234.8000 > 10.167.72.3.50474: Flags [S.E], seq 3472988495, ack 2154563867, win 65160, options [mss 1460,sackOK,TS val 3860180823 ecr 3273571770,nop,wscale 7], length 0
    17:35:36.599368 IP 10.167.72.3.50474 > 10.154.2.234.8000: Flags [S], seq 2154563866, win 65535, options [mss 1360,nop,wscale 6,nop,nop,TS val 3273574774 ecr 0,sackOK,eol], length 0
    17:35:36.599397 IP 10.154.2.234.8000 > 10.167.72.3.50474: Flags [S.E], seq 3472988495, ack 2154563867, win 65160, options [mss 1460,sackOK,TS val 3860181824 ecr 3273571770,nop,wscale 7], length 0
    17:35:37.603445 IP 10.154.2.234.8000 > 10.167.72.3.50474: Flags [S.E], seq 3472988495, ack 2154563867, win 65160, options [mss 1460,sackOK,TS val 3860182828 ecr 3273571770,nop,wscale 7], length 0
    17:35:37.606353 IP 10.167.72.3.50474 > 10.154.2.234.8000: Flags [S], seq 2154563866, win 65535, options [mss 1360,nop,wscale 6,nop,nop,TS val 3273575774 ecr 0,sackOK,eol], length 0
    17:35:37.606382 IP 10.154.2.234.8000 > 10.67.72.3.50474: Flags [S.E], seq 3472988495, ack 2154563867, win 65160, options [mss 1460,sackOK,TS val 3860182831 ecr 3273571770,nop,wscale 7], length 0
    17:35:38.606193 IP 10.167.72.3.50474 > 10.154.2.234.8000: Flags [S], seq 2154563866, win 65535, options [mss 1360,nop,wscale 6,nop,nop,TS val 3273576774 ecr 0,sackOK,eol], length 0
    17:35:38.606224 IP 10.154.2.234.8000 > 10.167.72.3.50474: Flags [S.E], seq 3472988495, ack 2154563867, win 65160, options [mss 1460,sackOK,TS val 3860183831 ecr 3273571770,nop,wscale 7], length 0
    17:35:40.611531 IP 10.154.2.234.8000 > 10.167.72.3.50474: Flags [S.E], seq 3472988495, ack 2154563867, win 65160, options [mss 1460,sackOK,TS val 3860185836 ecr 3273571770,nop,wscale 7], length 0
    17:35:44.739471 IP 10.154.2.234.8000 > 10.167.72.3.50474: Flags [S.E], seq 3472988495, ack 2154563867, win 65160, options [mss 1460,sackOK,TS val 3860189964 ecr 3273571770,nop,wscale 7], length 0
    17:35:52.931435 IP 10.154.2.234.8000 > 10.167.72.3.50474: Flags [S.E], seq 3472988495, ack 2154563867, win 65160, options [mss 1460,sackOK,TS val 3860198156 ecr 3273571770,nop,wscale 7], length 0
    17:36:09.059518 IP 10.154.2.234.8000 > 10.167.72.3.50474: Flags [S.E], seq 3472988495, ack 2154563867, win 65160, options [mss 1460,sackOK,TS val 3860214284 ecr 3273571770,nop,wscale 7], length 0
    ```
    Insa
        3
    Insa  
       2022-12-28 20:42:40 +08:00
    直接用 iptables 吧,试试这个 https://blog.51cto.com/u_11451275/3225436
    defunct9
        4
    defunct9  
       2022-12-28 21:11:22 +08:00 via iPhone
    开 ssh ,让我上去看看
    iBugOne
        5
    iBugOne  
       2022-12-28 21:12:46 +08:00
    @defunct9 好,ssh 哥又回来了
    A01514035
        6
    A01514035  
    OP
       2022-12-28 21:48:44 +08:00
    @Insa #3 和用 firewalld 一样的情况,一样的问题。
    A01514035
        7
    A01514035  
    OP
       2022-12-28 21:59:46 +08:00
    @defunct9 #4 如果你真的愿意帮忙,也不是不可以开
    Insa
        8
    Insa  
       2022-12-28 22:05:37 +08:00
    A01514035
        9
    A01514035  
    OP
       2022-12-28 22:13:13 +08:00
    @Insa #8 对,C 机器(更改了网关的机器)能够访问外网。但是原来同在 10 局域网内的 A 机器能够直接访问 C 机器,设置完以后只能通过 B 机器(作为网关的机器)访问 C 机器。C 机器自己使用是没有任何问题的。而且 A 机器之后也能 ping 通 C 机器,但是无法访问 C 机器的 http 服务也无法 ssh 直接登入 C 机器。
    Insa
        10
    Insa  
       2022-12-28 22:27:42 +08:00
    @A01514035 没碰到你说的这种情况,我拿其他设备也试了下 ping 和 telnet ,curl ,都可以。。。
    defunct9
        11
    defunct9  
       2022-12-29 08:12:43 +08:00 via iPhone
    B 关了 firewall ,只打开包转发
    julyclyde
        12
    julyclyde  
       2022-12-29 08:45:05 +08:00
    猜:
    不对称路由
    rp_filter
    qakito
        13
    qakito  
       2022-12-29 09:53:24 +08:00
    拓扑应该是类似 A(10.167.72.3) <----> (10.167.x.x)网关(10.168.x.x) <---> (10.168.x.x)B(10.154.2.200) <-->(10.154.2.234)C 这种吧?
    你在机器 B 上开启了 NAT 后,机器 C 的地址对 A 已经不可见了
    A01514035
        14
    A01514035  
    OP
       2022-12-29 10:37:41 +08:00
    @qakito #13 对 应该是这样。那就是说 A 没法直接访问 C 了吗,那就不方便了...
    basncy
        15
    basncy  
       2022-12-29 22:51:10 +08:00
    C 改了网关后, A 机器能够 ping 通 C 机器,但 TCP 不通. 因为 ping 包只有源地址, 目的地址; 而 TCP 包是五元组.
    你不知道 A 和 C 的原网关是怎么配置 ping 和 tcp 策略的.
    如果 C 的原网关做了 Hairpin NAT, 那回程包就不会到达 A.
    你期待的去程:A->A 网关->B->C
    实际的去程:A->A 网关->C 原网关->C
    A01514035
        16
    A01514035  
    OP
       2023-02-25 21:53:42 +08:00
    解决了,是因为我需要在修改了网关的机器上添加一条路由, 也就是在 C 机器添加
    ip route add 10.0.0.0/8 via 10.154.2.1
    详细的情况看这里 https://blog.hifool.cn/posts/centos-gateway/
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3162 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 11:37 PVG 19:37 LAX 03:37 JFK 06:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86