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
    • 最新
    • 标签
主页 / unix / 问题 / 474973
Accepted
slm
slm
Asked: 2018-10-12 21:35:54 +0800 CST2018-10-12 21:35:54 +0800 CST 2018-10-12 21:35:54 +0800 CST

我想在 VirtualBox 的 CentOS 7 中使用 2 个 eth 设备设置一个 bond0 接口?

  • 772

我想在 VirtualBox 中设置一个 CentOS 7.x 虚拟机,以便我可以尝试绑定接口。如何设置此 VM,使其具有以下接口:

  • eth1(专用网络 - 192.168.56.101)
  • eth2(从属bond0)
  • eth3(从属bond0)
  • 债券 0(使用 LACP)

使用 Vagrant 来促进设置会很有帮助,因此更容易复制。

注意:我想手动进行设置,所以请展示一个禁用 NetworkManager 的示例。

networking centos
  • 1 1 个回答
  • 1354 Views

1 个回答

  • Voted
  1. Best Answer
    slm
    2018-10-12T21:35:54+08:002018-10-12T21:35:54+08:00

    设置流浪者

    首先,您可以使用以下内容Vagrantfile来构建您的 VM:

    $ cat Vagrantfile
    Vagrant.configure("2") do |config|
    
      config.vm.box = "centos/7"
      config.vm.hostname="box-101"
      config.ssh.forward_x11 = true
    
      config.vm.network "private_network", ip: "192.168.56.101"
      config.vm.network "public_network", bridge: "en0: Wi-Fi (Wireless)", auto_config: false
      config.vm.network "public_network", bridge: "en0: Wi-Fi (Wireless)", auto_config: false
    
      config.vm.provider "virtualbox" do |vb|
        vb.memory = "2048"
      end
    
      config.vm.provision "shell", inline: <<-SHELL
        yum install -y git vim socat tcpdump wget sysstat
        yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
      SHELL
    end
    

    注意:我使用的 NICpublic_network是我的 Macbookbridge: "en0: Wi-Fi (Wireless)"设备。如果您在其他任何东西上执行此操作,则需要将其更改为运行 Vagrant/VirtualBox 的主机系统上的适当 NIC。

    上面的文件包含 3 个 NIC,它们会在 VM 启动时产生。启动 VM 和 SSH 进入其中:

    $ vagrant up
    $ vagrant ssh
    

    初始网络设置

    如果我们查看生成的网络,我们将看到以下内容:

    $ ip a l
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        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 group default qlen 1000
        link/ether 52:54:00:c0:42:d5 brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0
           valid_lft 85127sec preferred_lft 85127sec
        inet6 fe80::5054:ff:fec0:42d5/64 scope link
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:ce:88:39 brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.101/24 brd 192.168.56.255 scope global noprefixroute eth1
           valid_lft forever preferred_lft forever
        inet6 fe80::a00:27ff:fece:8839/64 scope link
           valid_lft forever preferred_lft forever
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:d7:c2:ec brd ff:ff:ff:ff:ff:ff
        inet6 fe80::df68:9ee2:4b5:ad5f/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
    5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:59:b0:69 brd ff:ff:ff:ff:ff:ff
    

    以及对应的路由:

    $ ip r
    default via 10.0.2.2 dev eth0 proto dhcp metric 100
    10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15 metric 100
    192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.101 metric 102
    

    禁用网络管理器

    对于这个 VM,我们将禁用 NetworkManager,这样我们就可以手动配置绑定接口 + 从属。

    $ for i in NetworkManager-dispatcher NetworkManager NetworkManager-wait-online; do
        systemctl disable $i && systemctl stop $i
      done
    

    确认 NM 现在已禁用:

    $ systemctl list-unit-files |grep NetworkManager
    NetworkManager-dispatcher.service             disabled
    NetworkManager-wait-online.service            disabled
    NetworkManager.service                        disabled
    

    设置绑定接口

    首先,我们将构建 3 个文件。1个用于bond0接口,1个用于我们将用作从属的2个接口(eth2和eth3)。

    ifcfg-债券0

    $ cat /etc/sysconfig/network-scripts/ifcfg-bond0
    DEVICE=bond0
    Type=Bond
    NAME=bond0
    BONDING_MASTER=yes
    BOOTPROTO=none
    ONBOOT=yes
    IPADDR=192.168.1.232
    PREFIX=24
    GATEWAY=192.168.1.2
    BONDING_OPTS="mode=4 miimon=100 lacp_rate=1"
    

    注意: mode=4是(802.3ad)又名。LACP。miimon=100是 100 毫秒的检查间隔,并且lacp_rate=1是来自合作伙伴的快速 TX。您可以通过此命令查看绑定模块接受的所有参数modinfo bonding。

    eth2

    $ cat /etc/sysconfig/network-scripts/ifcfg-eth2
    DEVICE=eth2
    TYPE=Ethernet
    BOOTPROTO=none
    ONBOOT=yes
    NM_CONTROLLED=no
    IPV6INIT=no
    MASTER=bond0
    SLAVE=yes
    

    eth3

    $ cat /etc/sysconfig/network-scripts/ifcfg-eth3
    DEVICE=eth3
    TYPE=Ethernet
    BOOTPROTO=none
    ONBOOT=yes
    NM_CONTROLLED=no
    IPV6INIT=no
    MASTER=bond0
    SLAVE=yes
    

    注意:在上面我静态地为bond0接口分配IP地址192.168.1.232和网关192.168.1.2。您需要将这些更改为适合您情况的内容。

    启动界面

    到目前为止,启动网络最简单的方法是重新启动网络服务:

    $ systemctl restart network
    

    如果我们看一下接口和路由:

    $ ip a l
    ..
    ..
    4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
        link/ether 08:00:27:d7:c2:ec brd ff:ff:ff:ff:ff:ff
    5: eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
        link/ether 08:00:27:d7:c2:ec brd ff:ff:ff:ff:ff:ff
    6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 08:00:27:d7:c2:ec brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.232/24 brd 192.168.1.255 scope global bond0
           valid_lft forever preferred_lft forever
        inet6 fe80::a00:27ff:fed7:c2ec/64 scope link
           valid_lft forever preferred_lft forever
    
    $ ip r
    default via 10.0.2.2 dev eth0
    10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
    169.254.0.0/16 dev eth0 scope link metric 1002
    169.254.0.0/16 dev eth1 scope link metric 1003
    169.254.0.0/16 dev bond0 scope link metric 1006
    192.168.1.0/24 dev bond0 proto kernel scope link src 192.168.1.232
    192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.101
    

    粘合细节

    我们还可以查看绑定接口的设备以获取有关接口状态的更多详细信息:

    $ cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
    
    Bonding Mode: IEEE 802.3ad Dynamic link aggregation
    Transmit Hash Policy: layer2 (0)
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    
    802.3ad info
    LACP rate: fast
    Min links: 0
    Aggregator selection policy (ad_select): stable
    System priority: 65535
    System MAC address: 08:00:27:d7:c2:ec
    Active Aggregator Info:
        Aggregator ID: 1
        Number of ports: 1
        Actor Key: 9
        Partner Key: 1
        Partner Mac Address: 00:00:00:00:00:00
    
    Slave Interface: eth2
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 08:00:27:d7:c2:ec
    Slave queue ID: 0
    Aggregator ID: 1
    Actor Churn State: none
    Partner Churn State: churned
    Actor Churned Count: 0
    Partner Churned Count: 1
    details actor lacp pdu:
        system priority: 65535
        system mac address: 08:00:27:d7:c2:ec
        port key: 9
        port priority: 255
        port number: 1
        port state: 207
    details partner lacp pdu:
        system priority: 65535
        system mac address: 00:00:00:00:00:00
        oper key: 1
        port priority: 255
        port number: 1
        port state: 3
    
    Slave Interface: eth3
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 08:00:27:59:b0:69
    Slave queue ID: 0
    Aggregator ID: 2
    Actor Churn State: churned
    Partner Churn State: churned
    Actor Churned Count: 1
    Partner Churned Count: 1
    details actor lacp pdu:
        system priority: 65535
        system mac address: 08:00:27:d7:c2:ec
        port key: 9
        port priority: 255
        port number: 2
        port state: 199
    details partner lacp pdu:
        system priority: 65535
        system mac address: 00:00:00:00:00:00
        oper key: 1
        port priority: 255
        port number: 1
        port state: 3
    

    验证外部连接

    下面您可以看到对我在网络中的另一个盒子上运行的 bond0 的 IP 地址的 ping 输出。一旦我们重新启动network服务,我们可以看到它变得可以访问:

    $ ping 192.168.1.232
    From 192.168.1.10 icmp_seq=7414 Destination Host Unreachable
    From 192.168.1.10 icmp_seq=7415 Destination Host Unreachable
    64 bytes from 192.168.1.232: icmp_seq=7416 ttl=64 time=886 ms
    64 bytes from 192.168.1.232: icmp_seq=7417 ttl=64 time=3.58 ms
    64 bytes from 192.168.1.232: icmp_seq=7418 ttl=64 time=3.52 ms
    64 bytes from 192.168.1.232: icmp_seq=7419 ttl=64 time=3.46 ms
    64 bytes from 192.168.1.232: icmp_seq=7420 ttl=64 time=3.15 ms
    64 bytes from 192.168.1.232: icmp_seq=7421 ttl=64 time=3.50 ms
    

    重启提示

    在 CentOS 7.x 上,bond0 接口在引导期间正常启动似乎存在错误/问题。此问题的解决方法是将以下内容添加到:

     $ echo "ifup bond0" >> /etc/rc.d/rc.local
     $ chmod +x /etc/rc.d/rc.local
    

    这将保证bond0在引导期间正确启动接口。

    参考

    • 如何在 CentOS 7 上设置 LACP 绑定接口
    • LACP 绑定和 Linux 配置
    • Linux 基础:在 CentOS 7/6.5 上创建网络绑定
    • 3

相关问题

  • IP地址可以以255结尾而不是广播IP地址吗?

  • 在 CentOS7 GNOME 的 Applications-menu 选项卡中创建自定义菜单

  • 无法识别arp命令或ip命令哪个MAC地址输出正确

  • 奇怪的路由器与centos 6一起工作[关闭]

Sidebar

Stats

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

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve