虚拟化网络进阶管理

软件模拟网络设备

  交换机

  路由器

  防火墙

  负载均衡器

  ...

Linux内核加载8021q协议

#虚拟交换机支持vlan功能

modinfo 8021q

modeprobe 8021q

vlan配置工具

安装

1 yum info vconfig
2 yum install -y vconfig

使用

1 vconfig --help

Use Linux Network Namespace

  网络命名空间隔离,使得各个命名空间的网络,互相不可见

  一个网络名称空间可以看做是一个路由器,既分割网络,也能分割命令作用域

工具

  CentOS7直接使用

  ip netns help

  CentOS6需要更新ip命令版本

Usage

ip netns list
ip netns add NAME
ip netns set NAME NETNSID
ip [-all] netns delete [NAME]
ip netns identify [PID]
ip netns pids NAME
ip [-all] netns exec [NAME] cmd ...
ip netns monitor
ip netns list-id

ip netns exec NAME ifconfig -a
ip netns exec NAME route -n

简单网络实验

目的

  使得内部虚拟能通过命名空间的DHCP服务器获取地址,并通过NAT功能正常访问外网

架构

准备KVM虚拟机

    yum install -y qemu-kvm

    ln -sv /usr/libexec/qemu-kvm /usr/bin

    modprobe kvm

    modprobe kvm_intel

    mkdir -pv /images/kvm; cd /images/kvm

    wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img

    cp /images/kvm/cirros-0.3.0-x86_64-disk.img test1.qcow1

    cp /images/kvm/cirros-0.3.0-x86_64-disk.img test2.qcow2

    vim /etc/qemu-ifup

        #! /bin/bash
        #
        bridge=br-in

        if [ -n "$1" ];then
            ip link set $1 up
            sleep 1
            brctl addif $bridge $1
        [ $? -eq 0 ] && exit 0 || exit 1
            else
            echo "Error: no interface scpecified."
        exit 1
        fi

    chmod +x /etc/qemu-ifup

    bash -n /etc/qemu-ifup

    qemu-kvm -m 128 -name vm1 -smp 1 -drive file=/images/kvm/test1.qcow2,if=virtio,media=disk,cache=writeback,format=qcow2     -net nic,macaddr=52:54:00:00:00:01 -net tap,ifname=vif1.0,script=/etc/qemu-ifup --nographic

    qemu-kvm -m 128 -name vm1 -smp 1 -drive file=/images/kvm/test2.qcow2,if=virtio,media=disk,cache=writeback,format=qcow2     -net nic,macaddr=52:54:00:00:00:02 -net tap,ifname=vif2.0,script=/etc/qemu-ifup --nographic

    # 查看桥接属性,可以看到两个虚拟机的tap设备都桥接到br-in上了

    brctl show

打开网络间转发功能

    vim /etc/sysctl.conf 

        net.ipv4.ip_forward = 1

    sysctl -p

准备虚拟交换机

    # 一下方式不持久,持久化必须写进文件中

    brctl addbr br-in

    ip link set br-in up

创建网卡对,在内部虚拟交换机上使用

    ip link help

    ip link add vinr type veth peer name vins

    ip link set vint up

    ip link set vins up 

    ip link show

    brctl addif br-in vins 

划分名称空间

    ip netns add internal

    ip netns list

将br-in连接到虚拟路由器上

    ip link set vinr netns internal

    ip link show

    ip netns exec internal ip config -a

    ip netns exec internal ip link set vinr name eth0

    ip netns exec internal ip link set eth0 up

    ip netns exec internal ifconfig eth0 10.0.1.254/24 up

修改两个虚拟机的IP地址

    VM1

        sudo su - 

        ifconfig eth0 10.0.1.1/24 up

        ping 10.0.1.254

        route add default gw 10.0.1.254

    VM2

        sudo su - 

        ifconfig eth0 10.0.1.2/24 up

        ping 10.0.1.254

        route add default gw 10.0.1.254

准备虚拟物理交换机

    # 一下方式不持久,持久化必须写进文件中

        brctl addbr br-ex

        ip link set br-ex up  

        ip addr del 192.168.180.128/24 dev ens33; ip addr add 192.168.180.128/24 dev br-ex; brctl addif br-ex ens33 

        ifconfig

    # 持久方式

        cp /etc/sysconfig/network-script/ifcfg-ens33 /etc/sysconfig/network-script/ifcfg-br-ex

        vim /etc/sysconfig/network-script/ifcfg-br-ex
            BOOTPROTO=static
            DEVICE=br-ex
            TYPE=Bridge
            NM_CONTROLLED=no
            IPADDR=192.168.180.128
            NETMASK=255.255.255.0
            GATEWAY=192.168.180.1
            DNS1=114.114.114.144
            DNS2=8.8.8.8

        vim /etc/sysconfig/network-script/ifcfg-ens33
        BOOTPROTO=none
        DEVICE=ens33
        NM_CONTROLLED=no
        ONBOOT=yes
        BRIDGE=br-ex

        systemctl stop NetworkManager

        chkconfig NetworkManager off 

        systemctl restart network

创建网卡对,在虚拟物理交换机上使用

    ip link add vexr type veth peer name vexs

    ip link set vexr up

    ip link set vexs up 

    ip link show

    brctl addif br-ex vexs

将br-ex连接到虚拟路由器上

    ip link set vexr netns internal

    ip link show

    ip netns exec internal ip config -a

    ip netns exec internal ip link set vexr name eth1

    ip netns exec internal ip link set eth1 up

    ip netns exec internal ifconfig eth1 192.168.180.200/24 up

为了使内部虚拟机地址能访问外网,我们在网络名称空间internal中配置NAT规则

    ip netns exec internal iptables -t nat -A POSTROUTING -s 10.0.0.1/24 ! -d 10.0.0.1/24 -j SNAT --to-source 192.168.180.200

    ip netns exec internal iptables -t nat -L -n

为虚拟机配置一台DNS服务器

    yum install -y dnsmasq

    ip netns exec internal dnsmasq --dhcp-range=10.0.1.100,10.0.1.120 --dhcp-option=option:router,10.0.1.254

    ip netns exec internal ps aux | grep dnsmasq

虚拟机尝试获取DHCP分配地址

    udhcp -R

    ping 10.0.78.25

VM3、VM4类似,自行配置即可

OVS

  基于C语言开发

特性

  支持802.1q协议

  NIC bounding

  NetFlow,sFlow

  Qos

  GRE 通用路由封装

  VxLAN

  IPsec

  基于Linux实现高性能转发

OVS组成部分

* ovs-vswitchd

    OVS守护进程

    实现数据报文交换功能

    和Linux兼容模块一同实现基于流交换技术

* ovsdb-server

    轻量级的数据库服务

    存储OVS交换机上的接口、接口配置、VLAN等

    ovs-vswitched基于此配置信息交换数据

ovs-dpctl

* ovs-vsctl 

    用于获取、更改ovs-vswitched的配置信息

    操作结果存储于ovsdb-server

ovs-appctl 

ovsdbmonitor

    显示监控信息

ovs-controller

    流控制工具

ovs-ofctl 

ovs-pki

ovs-vsctl常用命令

show    显示ovsdb配置内容

add-br  添加桥设备

del-br  删除桥设备

add-port    显示所有定义已定义桥

del-port    删除指定桥上的指定PORT

list-br     将PORT添加至指定桥设备

list-ports  显示指定桥上的所有PORT

list-ifaces 显示指定桥上的接口信息

list Interface 显示数据库中接口的详细信息

list Port   显示数据库中PORT的详细信息

find Port name = "ens37"    条件查询数据库的指定PORT

set TBL REC COL[:KEY]=VALUE     set COLumn values in RECord in TBL

add TBL REC COL [KEY=]VALUE     add (KEY=)VALUE to COLumn in RECord in TBL

remove TBL REC COL [KEY=]VALUE  remove (KEY=)VALUE from COLumn

clear TBL REC COL               clear values from COLumn in RECord in TBL

create TBL COL[:KEY]=VALUE      create and initialize new record

destroy TBL REC                 delete RECord from TBL

实例:单节点虚拟机互相通信

架构

    计算节点

        Node1

            OS: CentOS7

            ens33: 192.168.180.135/24 此处网络连接管理网络和外网网络

            ens37: 172.16.0.1/24 节点数据网络

            VM1 eth0: 10.0.0.1/24 

            VM2 eth0: 10.0.0.2/24

            VM3 eth0: 10.0.0.3/24

以下配置全部在Node1上进行

安装openvswitch

    yum -y install openssl-devel kernel-devel

    yum groupinstall "Development Tools" -y

    adduser ovswitch

    su - ovswitch

    wget http://openvswitch.org/releases/openvswitch-2.3.0.tar.gz

    tar xfz openvswitch-2.3.0.tar.gz

    mkdir -p ~/rpmbuild/SOURCES

    cp openvswitch-2.3.0.tar.gz ~/rpmbuild/SOURCES

    # 去除Nicira提供的openvswitch-kmod依赖包,创建新的spec文件

    sed ‘s/openvswitch-kmod, //g‘ openvswitch-2.3.0/rhel/openvswitch.spec > openvswitch-2.3.0/rhel/openvswitch_no_kmod.spec

    rpmbuild -bb --without check ~/openvswitch-2.3.0/rhel/openvswitch_no_kmod.spec

    yum -y localinstall /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.3.0-1.x86_64.rpm

    rpm -qf `which ovs-vsctl`

    # 由于SELinux会影响Open vSwitch的运行,比如报错:

    # error: /etc/openvswitch/conf.db: failed to lock lockfile (No such file or directory)原因是没有权限修改/etc/openvswitch的owner

    # 如果环境允许可用关掉SELinux;想保持enabled需要做如下修改:

    mkdir /etc/openvswitch

    semanage fcontext -a -t openvswitch_rw_t "/etc/openvswitch(/.*)?"

    restorecon -Rv /etc/openvswitch

    # 启动服务

    systemctl start openvswitch.service

    # 查看各软件包路径

    rpm -ql openvswitch

添加虚拟桥设备

    ovs-vsctl add-br br-in

准Xen虚拟化环境或KVM虚拟化环境

    Xen:http://www.cnblogs.com/cq146637/p/8931844.html

    KVM:http://www.cnblogs.com/cq146637/p/8932135.html

脚本编写

    vim /etc/if-up

        #!/bin/bash
        #
        bridge="br-in" 

        if [ -n "$1" ]; then
            ip link set $1 up
            sleep 1
            ovs-vsctl add-port $bridge $1
            [ $? -eq 0 ] && exit 0 || exit 1
        else
            echo "Error: no port scpecified."
            exit 2
        fi

    vim /etc/if-down

        #!/bin/bash
        #
        bridge="br-in"

        if [ -n "$1" ]; then
            ip link set $1 down
            sleep 1
            ovs-vsctl del-port $bridge $1
            [ $? -eq 0 ] && exit 0 || exit 1
        else
            echo "Error: no port scpecified."
            exit 2
        fi

    chmod +x /etc/if-up

    chmod +x /etc/if-down 

    bash -n /etc/if-up

    bash -n /etc/if-down 

创建虚拟机

    mkdir -pv /images/cirros/

    cd /images/cirros/

    wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img

    cp cirros-0.3.0-x86_64-disk.img test1.img 

    cp cirros-0.3.0-x86_64-disk.img test2.img

    cp cirros-0.3.0-x86_64-disk.img test3.img 

    # 此处采用qemu-kvm创建虚拟机

    qemu-kvm -name "VM1" -m 128 -smp 1 -drive file=/images/cirros/test1.img,media=disk,if=virtio         -net nic,model=virtio,macaddr=52:54:00:00:00:01         -net tap,ifname=vif1.0,script=/etc/if-up,downscript=/etc/if-down -daemonize

    qemu-kvm -name "VM2" -m 128 -smp 1 -drive file=/images/cirros/test2.img,media=disk,if=virtio         -net nic,model=virtio,macaddr=52:54:00:00:00:02         -net tap,ifname=vif2.0,script=/etc/if-up,downscript=/etc/if-down -daemonize

修改虚拟机的IP地址

    VM1

        vncviewer :5900 &

        ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up 

    VM2

        vncviewer :5901 &

        ifconfig eth0 10.0.0.2 netmask 255.255.255.0 up

测试此时的联通性

    VM1 ping VM2

    # 结果可以ping通

将两台虚拟机tap分别添加到vlan中

    ovs-vsctl set port vif1.0 tag=10

    # 此时测试连通性,结果是不通的

    # 同一网段,不在同一vlan则不能通信

    ovs-vsctl set port vif2.0 tag=20

    # 此时测试连通性,结果是连通的

在创建一台虚拟机,使得不同虚拟机交换机中,同一vlan的虚拟机能互相通信

    ovs-vsctl add-br br-test

    cp if-up if-up-test

        bridge="br-test"

    cp if-down if-down-test

        bridge="br-test"

    创建 VM3

        qemu-kvm -name "VM3" -m 128 -smp 1 -drive file=/images/cirros/test3.img,media=disk,if=virtio             -net nic,model=virtio,macaddr=52:54:00:00:00:03             -net tap,ifname=vif3.0,script=/etc/if-up,downscript=/etc/if-down -daemonize

    VM3

        vncviewer :5902 &

        ifconfig eth0 10.0.0.3 netmask 255.255.255.0 up 

    ip link add vs3.0 type veth peer name vs3.1

    ip link set vs3.0 up

    ip link set vs3.1 up

    ovs-vsctl add-port br-in vs3.0

    ovs-vsctl add-port br-test vs3.1

    # 此时ping与其它两台虚拟机不能通

    # 因为VM3的tap没有添加到vlan10中

    ovs-vsctl set port vif3.0 tag=10

    # 此时ping与其它两台虚拟机就可以互相通信了

    # 因为默认情况下,虚拟两台交换机自动协商为trunk模式

实验:多节点虚拟机互相通信

架构

    计算节点

        Node1

            OS: CentOS7

            ens33: 192.168.180.135/24 此处网络连接管理网络和外网网络

            ens37: 172.16.0.1/24 节点数据网络

            VM1 eth0: 10.0.0.1/24 

            VM2 eth0: 10.0.0.2/24

            VM3 eth0: 10.0.0.3/24

        Node2

            OS: CentOS7

            ens33: 192.168.180.136/24 此处网络连接管理网络和外网网络

            ens37: 172.16.0.2/24 节点数据网络

            VM4 eth0: 10.0.0.4/24 

            VM5 eth0: 10.0.0.5/24

准备须知

    在上一个环境的基础上,继续配置添加新节点和虚拟机

    此次实验使用GRE协议,协助数据包在不同节点上传输

    GRE Generic Routing Encapsulation 

        通用路由封装协议,类似隧道技术

        在点对点的基础上,对数据包进行封装解封装,完成隧道通信

所有节点打开网络间转发功能

    vim /etc/sysctl.conf 

        net.ipv4.ip_forward = 1

    sysctl -p

节点二:

    拷贝Node1上的脚本文件

        scp [email protected]192.168.47.135:/etc/{if-up,if-down} /etc/.

    安装openvswitch

        ...

    配置虚拟网桥

        ovs-vsctl add-br br-in

    准Xen虚拟化环境或KVM虚拟化环境

        ...

    创建虚拟机

        mkdir -pv /images/cirros/

        cd /images/cirros/

        wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img

        cp cirros-0.3.0-x86_64-disk.img test4.img 

        cp cirros-0.3.0-x86_64-disk.img test5.img

        # 此处采用qemu-kvm创建虚拟机

        qemu-kvm -name "VM4" -m 128 -smp 1 -drive file=/images/cirros/test4.img,media=disk,if=virtio             -net nic,model=virtio,macaddr=52:54:00:00:00:04             -net tap,ifname=vif1.0,script=/etc/if-up,downscript=/etc/if-down -daemonize

        qemu-kvm -name "VM5" -m 128 -smp 1 -drive file=/images/cirros/test5.img,media=disk,if=virtio             -net nic,model=virtio,macaddr=52:54:00:00:00:05             -net tap,ifname=vif2.0,script=/etc/if-up,downscript=/etc/if-down -daemonize

    修改虚拟机的IP地址

        Node2 

        VM4

            vncviewer :5900 &

            ifconfig eth0 10.0.0.4 netmask 255.255.255.0 up 

        VM5

            vncviewer :5901 &

            ifconfig eth0 10.0.0.5 netmask 255.255.255.0 up

        VM4 ping VM5 

            能Ping通

    此次添加DNS服务器,使得虚拟机自动获取地址

        Node1 

            yum update -y iproute

            yum install -y dnsmasq

            ip netns add internal

            ip link add vsifs type veth peer name vsifr 

            ip link set vsifs up 

            ip link set vsifr up 

            ip link set vsifr netns internal 

            ovs-vsctl add-port br-in vsifs

            ip netns exec internal ip link set vsifr up 

            ip netns exec internal ifconfig

            ip netns exec internal ip addr add 10.0.0.254/24 dev vsifr

            ip netns exec internal dnsmasq -F 10.0.0.1,10.0.0.253,86400 --dhcp-option=option:router,10.0.0.254 -i vsifr

            VM1尝试获取DHCP分配地址,进入控制台

                # 注意先把vif1.0的tag标记位去了,才能获取到地址

                udhcpc -R

        Node2 

            无须配置,网络链路连通后,VM3、VM4也能通过Node1上DNS服务器获取IP地址

    使用ens37物理网卡传输节点数据

        注意

            ens37网卡无须添加到br-in上,ovs可以借助ens37传输gre封装的数据包

        Node1上,自定义一个IP地址给ens37,可以将修改内容写进文件中达到持久化的效果

            ip addr add 172.16.0.1/24 dev ens37

        Node2上,自定义一个IP地址给ens37

            ip addr add 172.16.0.2/24 dev ens37

        在br-in上添加端口,用于gre封装数据包

            两个节点都要做

                ovs-vsctl add-port br-in gre0

            设置接口ger0属性,使它工作于gre模式

                Node1

                    ovs-vsctl set interface gre0 type=gre options:remote_ip=172.16.0.1

                Node2

                    ovs-vsctl set interface gre0 type=gre options:remote_ip=172.16.0.2

    配置VLAN使得VM1能和VM3通信,VM2能和VM4通信,VM1不能和VM2通信,VM3不能和VM4通信

        Node1

            ovs-vsctl set port vif1.0 tag=10 -- set port vif2.0 tag=20 -- set port vif3.0 tag=10

        Node2

            ovs-vsctl set port vif1.0 tag=10 -- set port vif2.0 tag=20

    查看使用GRE通信内容

        VM1:

            ping VM3_IP

        抓包查看GRE内容

            tcpdump -i ens37 -nn

    删除所有节点gre配置

        ovs-vsctl del-port br-in gre0

    此时实验将通信协议GRE,改用为VxLAN协议

    在br-in上添加端口,用于gre封装数据包

        两个节点都要做

            ovs-vsctl add-port br-in vxlan0

        设置接口ger0属性,使它工作于gre模式

            Node1

                ovs-vsctl set interface vxlan0 type=vxlan options:remote_ip=172.16.0.2

            Node2

                ovs-vsctl set interface vxlan0 type=vxlan0 options:remote_ip=172.16.0.1

    查看使用VxLAN通信内容

        VM1:

            ping VM3_IP

        抓包查看VxLAN内容

            tcpdump -i ens37 -nn

            14:14:43.056888 IP 172.16.0.1 > 172.16.0.2: GREv0, length 50: ARP, Request who-has 10.0.0.2 tell 10.0.0.3, length 28
            14:14:43.329817 IP 172.16.0.2 > 172.16.0.1: GREv0, length 106: IP 10.0.0.29 > 10.0.0.1: ICMP echo request, id 2305, seq 88, length 64
            14:14:43.330376 IP 172.16.0.1 > 172.16.0.2: GREv0, length 106: IP 10.0.0.1 > 10.0.0.29: ICMP echo reply, id 2305, seq 88, length 64

实验:多节点虚拟机访问外网

架构

    计算节点

        Node1

            OS: CentOS7

            ens33: 172.16.100.1/24 管理网络

            ens37: 172.16.0.1/24 节点数据网络

            VM1 eth0: 10.0.0.1/24 

            VM2 eth0: 10.0.0.2/24

            VM3 eth0: 10.0.0.3/24

        Node2

            OS: CentOS7

            ens33: 172.16.100.2/24 管理网络

            ens37: 172.16.0.2/24 节点数据网络

            VM4 eth0: 10.0.0.4/24 

            VM5 eth0: 10.0.0.5/24

        Network Node

            OS: CentOS7

            ens33: 172.16.100.3/24 管理网络

            ens37: 172.16.0.254/24 节点数据网络

            ens38: 192.168.47.137 外网网络

准备须知

    在上一个环境的基础上,删除所有节点vlan配置,vxlan配置

        ovs-vsctl remove port vif1.0 tag 10 -- remove port vif2.0 tag 20 remove port vif3.0 tag 10 

        ovs-vsctl del-port br-in vxlan0

    添加新的节点,我们称之为网络节点

准备虚拟物理交换机

    # 一下方式不持久,持久化必须写进文件中

        brctl addbr br-ex

        ip link set br-ex up  

        ip addr del 192.168.47.137/24 dev ens38; ip addr add 192.168.47.137/24 dev br-ex; brctl addif br-ex ens38

        ifconfig

    # 持久方式

        cp /etc/sysconfig/network-script/ifcfg-ens33 /etc/sysconfig/network-script/ifcfg-br-ex

        vim /etc/sysconfig/network-script/ifcfg-br-ex
            BOOTPROTO=static
            DEVICE=br-ex
            TYPE=Bridge
            NM_CONTROLLED=no
            IPADDR=192.168.47.137
            NETMASK=255.255.255.0
            GATEWAY=192.168.180.1
            DNS1=114.114.114.144
            DNS2=8.8.8.8

        vim /etc/sysconfig/network-script/ifcfg-ens38
        BOOTPROTO=none
        DEVICE=ens38
        NM_CONTROLLED=no
        ONBOOT=yes
        BRIDGE=br-ex

        systemctl stop NetworkManager

        chkconfig NetworkManager off 

        systemctl restart network

安装openvswitch

    与第一个实验相同

准备OVS虚拟交换机

    # 一下方式不持久,持久化必须写进文件中

    brctl addbr br-in

    ip link set br-in up

在网络节点上创建网络名称空间

    yum update -y iproute

    ip netns add external

创建网卡对,将网络名称空间和br-in连接起来,将br-ex和网络名称空间连接起来

    ip link add vins type veth peer name vinr 

    ip link add vexs type veth peer name vexr

    ip link set vins up 

    ip link set vexs up

    ip link vins netns external

    ip link vexs netns external

    ovs-vsctl add-port br-in vins

    brctl addif br-ex vexs 

修改实验一中网络名称空间internal中为各虚拟机配置的网关IP,将网关IP写到external

    Node1

        ip netns exec internal ifconfig vsifr 10.0.0.100/24 up 

    Network Node

        ip netns exec external ifconfig vinr 10.0.0.254/24 up

        ip netns exec external ifconfig vexr 192.168.47.138/24 up

        ip netns exec external sysctl -w net.ipv4.ip_forward=1

使用GRE协议让计算节点和网络节点通信

        注意

            ens37网卡无须添加到br-in上,ovs可以借助ens37传输gre封装的数据包

        Node1上,自定义一个IP地址给ens37

            ip addr add 172.16.0.1/24 dev ens37

        Node2上,自定义一个IP地址给ens37

            ip addr add 172.16.0.2/24 dev ens37

        网络节点上,自定义一个IP地址给ens37,用于节点数据传输

            ip addr add 172.16.0.254/24 dev ens37

        在br-in上添加端口,用于gre封装数据包

            所有节点都要做

                ovs-vsctl add-port br-in gre0

            设置接口ger0属性,使它工作于gre模式

                Node1

                    ovs-vsctl set interface gre0 type=gre options:remote_ip=172.16.0.254

                Node2

                    ovs-vsctl set interface gre0 type=gre options:remote_ip=172.16.0.254

                网络节点

                    ovs-vsctl set interface gre0 type=gre options:remote_ip=172.16.0.1

                    # 其他节点继续添加即可

在external中添加SNAT规则

    ip netns exec external iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.47.138

    可实现Node1中的虚拟机可以ping通外网

使用SNAT、DNAT把服务器向互联网开放

    清空external中的规则

        ip netns exec external iptables -t nat -F

    在external添加一个外网地址,将此地址映射为内网虚拟机,专门为某台虚拟机提供访问互联网的能力

        ip netns exec external ifconfig vexr:0 192.168.47.139/24

        ip netns exec external iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.47.139

        ip netns exec external iptables -t nat -A PREROUTING -d 192.168.47.139 -j DNAT --to-destination 10.0.0.1

        # 如果需要更多节点对外访问继续添加DNAT规则即可

原文地址:https://www.cnblogs.com/cq146637/p/8971122.html

时间: 2024-10-16 21:19:39

虚拟化网络进阶管理的相关文章

linux网络基础配置与网络进阶管理

一. 网络基本配置: 真不敢想象没有网络的一天 应该怎样度过,但是有了网络就行了?原来刚有了网络时由于没有统一的标准,各大硬件厂商各自为政,都在搞网络,但是都只是同一厂商的设备可以进行通讯,就 和不同的国家的人交流使用了不同的语言一样,难以将所有的网络连接起来,之后Internet有了统一的标准,大家都遵循它的标准,后来计算机才能进行网 络通讯,同样将linux主机接入网络也必须进行配置它的网络,及其相关的主机名等,下面将逐一进行配置: 1.  主机名: rhel6中主机名修改 [[email 

50 xen虚拟化技术基础、xen虚拟化技术进阶

01 xen虚拟化技术基础 配置环境: node1 192.168.1.61 CentOS6.6 [[email protected] ~]# uname -r 2.6.32-504.el6.x86_64 [[email protected] ~]# cd /etc/yum.repos.d/ [[email protected] yum.repos.d]# vim xen4.repo [xen4centos] name=Xen4 for CentOS 6 baseurl=ftp://192.16

虚拟化网络必须开放

虚拟化网络越来越复杂,使得用户无法依赖一家厂商提供的端到端解决方案来满足对服务敏捷性和可扩展性的要求.博科Vyatta提供了一个开放式平台,让云和电信运营商重新获得对网络的控制权. 在迈向软件网络的征程中,博科(Brocade)公司又迎来了一个新的具有转折意义的时刻--博科Vyatta平台的发布.博科Vyatta平台是一个面向云服务商和电信运营商的开放式.模块化的软件网络平台,它的发布一方面明确了博科软件网络以"开放"为特征;另一方面也表明,建立一个开放的软件网络平台将是引领博科公司未

Neutron 理解 (1): Neutron 所实现的虚拟化网络 [How Netruon Virtualizes Network]

原文:http://www.cnblogs.com/sammyliu/p/4622563.html 学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron OVS OpenFlow 流表 和 L2 Population (5)Neutron DHCP Agent (6)Neutron L3 Agent (7

Docker第四回(容器虚拟化网络)

一.docker网络简介 网络作为docker容器化实现的6个名称空间的其中之一,是必不可少的.其在Linux内核2.6时已经被加载进内核支持了.网络名称空间主要用于实现网络设备和协议栈的隔离,列如:一个docker host有4块网卡,在创建容器的时候,将其中一块网卡分配给该名称空间,那么其他名称空间是看不到这块网卡的.且:一个设备只能属于一个名称空间.因为一个名称空间绑定一个物理网卡和外界通信,且一个物理网卡不能分配多个名称空间,这使得我们只能创建4个名称空间.如果要创建的名称空间多于我们的

虚拟化网络之OpenvSwitch

OpenvSwitch简称OVS,官网(http://openvswitch.org/) OVS是一个高质量.多层的虚拟交换软件,即虚拟交换机. OpenvSwitch的见的相关组件: ovs-vswitchd:实现switch的daemon功能,包括一个支持流交换的Linux内核模块,实现了交换功能 ovsdb-vswtich: openvswitch的数据库,给ovs-vswitchd提供运行配置信息,即保存了ovs-vswitchd的配置信息,例如vlan.port等信息 ovs-vsct

利用Windows Azure Pack创建虚拟化网络

接上一篇,SCVMM网络虚拟化配置软件定义网络SDN,不太清楚的同学可以先看看.我们利用Windows Server 2012 R2与SCVMM R2进行了网络虚拟化的配置,下面我们要来验证一下网络虚拟化是否生效.那么,最简单的方法就是利用Windows Azure Pack来进行虚拟网络创建.最近太忙了,这篇文章早写好了快两个月. 1.首先,我们登陆的Windows Azure Pack的租户门户,选择自定义创建"虚拟网络".   2.下面填入虚拟网络的名称,选择IPV4地址协议,配

[每日一问]虚拟化网络设计中为什么建议采用链路聚合

虚拟化网络设计中为什么建议采用链路聚合?原因如下: 1. 首先,链路聚合技术可以使用多个物理链路进行通信,不用担心STP: 2. 其次,当某物理链路发生故障会不影响虚拟机网络的正常运行,提供了链路冗余和计算机冗余

虚拟化--网络最佳实践

正确的网络配置是VMware vSphere架构的基础.为实现VMware网络,IT管理员需要了解vSphere宿主机的物理接口和虚拟交换机.学习如何规划vSphere的虚拟网络. VMware vSphere网络从正确安装vSphere网络的ESXi宿主机开始,包括对分布式.标准.虚拟或物理交换机的选择.最后还有后配置和部署.对虚拟网络的流量监控. 配置虚拟网络的第一步是把vSphere的部署集成到现有架构.您需要确实了解现有架构的状态.例如,如果网络采用了iSCSI(Internet sma