RBQ.AI

RBQ.AI

【Linux VRF】如何让只运行在系统的服务端口,也绑定到VRF的IP上

6
2026-02-02

默认情况下Linux的VRF会丢弃不是在这里面监听的访问经常出现的问题就是配置时遇到程序监听的明明是 0.0.0.0 , 可是其他VRF无法访问,但又不方便更改程序启动方式或启动多个程序。

注意:这种方式可能会对你带来额外的安全风险(例如ssh暴漏)

允许监听默认(全局)VRF 的 TCP 套接字接受来自与特定虚拟路由和转发 (VRF) 实例关联的接口的传入连接

敲完后VRF配的ip也就可以被访问主机起的服务了,例如SSH

cat >/etc/sysctl.d/99-vrf-l3mdev-accept.conf <<'EOF'
net.ipv4.tcp_l3mdev_accept=1
net.ipv4.udp_l3mdev_accept=1
EOF

sysctl --system

源进源出案例配置

虽然Linux有vrf基本配置其实都习惯用vrf了,但是这里也留个以前老的源进源出的案例配置。

# Loopback
auto lo
iface lo inet loopback

# --- 网卡 1 (eth0) 配置 ---
auto eth0
iface eth0 inet static
    address 192.168.10.10
    netmask 255.255.255.0
    # 设置为默认网关(如果你希望 eth0 作为服务器主动外连的主出口)
    gateway 192.168.10.1
    
    # 【源进源出核心配置】
    # 1. 向表 100 添加该接口的默认路由
    up ip route add default via 192.168.10.1 dev eth0 table 100
    # 2. 添加策略:如果源 IP 是 192.168.10.10,就去查表 100
    up ip rule add from 192.168.10.10 lookup 100
    
    # 3. 接口关闭时清理规则 (可选,但推荐)
    down ip rule del from 192.168.10.10 lookup 100
    down ip route del default via 192.168.10.1 dev eth0 table 100

# --- 网卡 2 (eth1) 配置 ---
auto eth1
iface eth1 inet static
    address 10.0.0.10
    netmask 255.255.255.0
    # 注意:不要在这里写 gateway,除非你使用 metric 区分优先级。
    # 通常双线环境只保留一个全局 gateway,另一个完全靠策略路由。
    
    # 【源进源出核心配置】
    # 1. 向表 101 添加该接口的默认路由
    up ip route add default via 10.0.0.1 dev eth1 table 101
    # 2. 添加策略:如果源 IP 是 10.0.0.10,就去查表 101
    up ip rule add from 10.0.0.10 lookup 101
    
    # 3. 接口关闭时清理规则
    down ip rule del from 10.0.0.10 lookup 101
    down ip route del default via 10.0.0.1 dev eth1 table 101

日常水文x