docke跨主机通讯之gre隧道

GRE简介

GRE能够对网络层的任何协议来进行封装,相似LVS的IPIP协议,在原有的数据报上增长GRE协议数据报。而后在网络上传输,到达对端后,解开GRE数据报头,获得真实的数据报。其中的mac地址也不会由于在网络上传输而丢失原来的源mac地址。python

实验环境

selinux disabled
iptables -t nat -F;iptables -Flinux

主机 docker0地址 物理机地址
docker1 172.17.0.1 192.168.88.130
docker2 172.18.0.1 192.168.88.131

拓扑图
实验拓扑图docker

实验步骤

  • 安装openvswitch
    • yum install gcc make python-devel openssl-devel kernel-devel graphviz kernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool
    • 构建RPM包:rpmbuild -bb rhel/openvswitch.spec
    • rpm -ihv openvswitch-2.5.0-1.x86_64.rpm
  • 启动openvswitch:service openvswitch startcentos

  • 添加ovs网桥: ovs-vsctl add-br ovs0bash

  • 构建gre隧道: ovs-vsctl add-port ovs0 gre0 -- set interface gre0 type=gre options:remote_ip=192.168.88.131 #对端物理机网络网络

  • ovs0桥接到docker0上: brctl addif docker0 ovs0测试

  • 启动网卡:
    • ip link set dev ovs0 up
    • ip link set dev docker0 up
  • 添加路由:route add -net 172.18.0.0/16 dev docker0 #对端docker0网络ui

测试

docker run -it centos /bin/bashdebug

ping 对端container的IPip

相关文章
相关标签/搜索