插件窝 干货文章 ssh连接linux连接的是哪张网卡

ssh连接linux连接的是哪张网卡

网卡 连接 公网 路由 655    来源:    2025-04-14

当通过SSH连接Linux服务器时,系统会根据路由表自动选择出站网卡。以下是详细分析:

  1. 连接目标网卡判定逻辑

    • 服务器监听所有网卡:默认SSH服务(端口22)监听在0.0.0.0时会接收所有网卡的连接
    • 客户端连接使用的服务器IP即对应具体网卡
  2. 关键检查命令

# 查看当前SSH连接来源(服务端执行)
netstat -tnpa | grep -i 'ssh' | grep -i 'established'

# 查看所有网卡信息
ip -4 -o addr show | awk '{print $2, $4}'

# 查看路由表(确定哪个网卡处理目标流量)
ip route get <客户端IP> | grep -oP 'dev \K\S+'
  1. 典型场景分析

    • 单网卡服务器:必然通过该网卡通信
    • 多网卡服务器:
      • 客户端连接公网IP → 走对应公网网卡(如eth0)
      • 客户端连接内网IP → 走对应内网网卡(如eth1)
      • 若存在VPN/隧道,可能走虚拟网卡(如tun0)
  2. 特殊配置影响

    • /etc/ssh/sshd_configListenAddress可指定监听特定IP
    • 防火墙规则(iptables/nftables)可能重定向流量
    • 策略路由(ip rule)可能改变默认路由行为

建议通过tcpdump实时验证:

# 在所有活跃网卡上抓包(需要root)
for iface in $(ip -o link show | awk -F': ' '{print $2}'); do
  tcpdump -i $iface 'port 22' -n -c 5 &
done

连接时即可观察到具体流量通过的网卡。