AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 770455
Accepted
user349251
user349251
Asked: 2016-04-15 14:42:34 +0800 CST2016-04-15 14:42:34 +0800 CST 2016-04-15 14:42:34 +0800 CST

在 Linux 上使用网络命名空间的 VRF

  • 772

我的最终目标是在 Linux 中实现虚拟路由和转发 (VRF)。似乎被最广泛接受的方法是设置不同的网络名称空间(每个单独的路由表一个)并为每个名称空间/路由表运行 Quagga 或 BIRD 守护程序。我不喜欢这种方法,所以如果有人有任何其他建议,请告诉我。

有问题的机器在 VMware 工作站 12 内运行 Debian 7 (wheezy)。它一直是路由器,在我开始重新配置之前已经成功路由了一段时间,所以我知道一般的路由设置是好的。

直接的问题是我无法通过我的网络命名空间进行通信。也就是说,veth1(在我的命名空间中,如下所示)只能 ping veth0,而不能ping 通其他任何东西。veth1 和它下面的网络之间没有网络通信——甚至没有 ARP。如果我不知道更好,我会说有人从交换机上拔下电缆(但在虚拟环境中很难做到这一点)。是的,我检查了 vmnet 是否已正确设置。路由器在恢复到其旧配置时工作。它只是在这个新配置中不起作用。

有人知道如何让 veth1 进行通信吗?或者甚至是让 VRF 在 Linux 上运行的完全不同的方法?提前致谢。

我设置新配置如下:

添加命名空间

ip netns add nsx

添加虚拟接口

ip link add veth0 type veth peer name veth1

创建一座桥梁

ip link add name vbr0 type bridge

将 eth1 和 veth1 添加到网桥

ip link set dev eth1 master vbr0
ip link set dev veth1 master vbr0

将 veth1 分配给命名空间

ip link set veth1 netns nsx

配置 veth 的 IP

ip addr add 10.0.2.10/24 dev vbr0
ip addr add 10.0.2.1/24 dev veth0
ip netns exec nsx ip addr add 10.0.2.2/24 dev veth1

带上 i/f

ip link set dev vbr0 up
ip link set dev veth0 up
ip netns exec nsx ip link set dev veth1 up

为 veth2 分配自己的路由表

ip netns exec nsx ip rule add dev veth1 table 1

为 vtable 设置默认路由

ip netns exec nsx ip route add default via 10.0.2.1 dev veth1

您可以在 iptables-save 的输出中看到,一切都根据需要设置为 ACCEPT 或 FORWARD

ip addr 的输出显示:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:10:e0:01 brd ff:ff:ff:ff:ff:ff
    inet 192.168.26.5/24 brd 192.168.26.255 scope global eth0
    inet 192.168.26.0/24 brd 192.168.26.255 scope global secondary eth0
    inet6 fe80::20c:29ff:fe10:e001/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vbr0 state UP qlen 1000
    link/ether 00:0c:29:10:e0:ed brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/24 brd 10.0.0.255 scope global eth1
    inet6 fe80::20c:29ff:fe10:e0ed/64 scope link
       valid_lft forever preferred_lft forever
47: veth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether ce:63:69:82:73:35 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.1/24 scope global veth0
    inet6 fe80::cc63:69ff:fe82:7335/64 scope link tentative
       valid_lft forever preferred_lft forever
48: vbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 00:0c:29:10:e0:ed brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.10/24 scope global vbr0
    inet6 fe80::20c:29ff:fe10:e0ed/64 scope link tentative
       valid_lft forever preferred_lft forever

ip route 显示的输出:

 default via 192.168.26.2 dev eth0
    10.0.0.0/24 dev eth1  proto kernel  scope link  src 10.0.0.1
    10.0.2.0/24 dev vbr0  proto kernel  scope link  src 10.0.2.10
    10.0.2.0/24 dev veth0  proto kernel  scope link  src 10.0.2.1
    192.168.26.0/24 dev eth0  proto kernel  scope link  src 192.168.26.5

ip netns exec nsx ip addr 的输出显示:

    45: lo: <LOOPBACK> mtu 16436 qdisc noop state DOWN
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    46: veth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether b6:27:40:06:c2:de brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.2/24 scope global veth1
        inet6 fe80::b427:40ff:fe06:c2de/64 scope link tentative
           valid_lft forever preferred_lft forever

ip netns exec nsx ip route show 的输出

 default via 10.0.2.1 dev veth1
    10.0.2.0/24 dev veth1  proto kernel  scope link  src 10.0.2.2

iptables-save 的输出

# Generated by iptables-save v1.4.14 on Thu Apr 14 18:19:19 2016
*nat
:PREROUTING ACCEPT [36:3588]
:INPUT ACCEPT [32:2540]
:OUTPUT ACCEPT [51:3744]
:POSTROUTING ACCEPT [55:4792]
COMMIT
# Completed on Thu Apr 14 18:19:19 2016
# Generated by iptables-save v1.4.14 on Thu Apr 14 18:19:19 2016
*filter
:INPUT ACCEPT [3319:373389]
:FORWARD ACCEPT [8:2004]
:OUTPUT ACCEPT [3558:428447]
COMMIT
# Completed on Thu Apr 14 18:19:19 2016
debian linux-networking iproute2 debian-wheezy dynamic-routing
  • 1 1 个回答
  • 7449 Views

1 个回答

  • Voted
  1. Best Answer
    DavidA
    2016-08-12T16:00:17+08:002016-08-12T16:00:17+08:00

    从内核版本 4.3 开始,Linux 具有 VRF 实现。结帐: https ://www.kernel.org/doc/Documentation/networking/vrf.txt 。

    • 2

相关问题

  • 关闭 FTP

  • 如何在同一台电脑上从 putty 连接 debian vmware

  • debian- 文件到包的映射

  • Debian Ubuntu 网络管理器错误 [关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve