当前位置: 首页 > news >正文

[docker]docker网络-直接路由模式

linux namespace连接参考: http://www.cnblogs.com/iiiiher/p/8057922.html

docker网络-直接路由模式

参考: https://www.yuanmas.com/info/obzmAGowzP.html
9e792b8fgy1fmm1d9tctxj20gl05dwez.jpg

- n1上创建br0
ip link add br0 type bridge
ip link set dev br0 up
ip addr add 10.1.1.1/24 dev br0


- n2上创建br1
ip link add br1 type bridge
ip link set dev br1 up
ip addr add 20.1.1.1/24 dev br1


- n1启动docker
 dockerd -b br0

- n2启动docker
 dockerd -b br1
tip: dockerd --help可以看到dockerd的选项

- n1上写路由
ip r a 20.1.1.0/24 via 192.168.14.133

- n2上写路由
ip r a 10.1.1.0/24 via 192.168.14.132

- n1和n2 开启
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P FORWARD ACCEPT

出现的问题:

本端的容器,能访问到对方的br1,但是不能访问到对方br1下的容器
9e792b8fgy1fmm1v1msabj20lr07674q.jpg
参考: https://unix.stackexchange.com/questions/125599/settings-when-using-a-bridge

系统默认是accept

iptables -t filter -L
iptables -t filter -L --line-number

9e792b8fgy1fmm2blgb83j20f80573yo.jpg
当安装完docker(yum)后,默认forward chian变成了drop
9e792b8fgy1fmm2afxtqdj20qh07274t.jpg

解决:

iptables -P FORWARD ACCEPT

可能将 iptables FORWARD chain的默认策略设置为DROP,从而导致 ping 其它 Node 上的 Pod IP 失败,遇到这种情况时,需要手动设置策略为 ACCEPT.

参考: http://cizixs.com/2017/02/10/network-virtualization-network-namespace

实现bridge之间的通信-一台主机

9e792b8fgy1fmm193l3qcj20eu09bdgj.jpg

############################################

ip link add br0 type bridge
ip link set dev br0 up
ip addr add 10.1.1.1/24 dev br0

ip netns add net0
ip link add type veth
ip link set dev veth1 netns net0

ip netns exec net0 ip link set dev veth1 name eth0
ip netns exec net0 ip addr add 10.1.1.2/24 dev eth0
ip netns exec net0 ip link set dev eth0 up
ip netns exec net0 ip route add default via 10.1.1.1 dev eth0

ip link set dev veth0 master br0
ip link set dev veth0 up
ip netns exec net0 ping 10.1.1.1

############################################
ip link add br1 type bridge
ip link set dev br1 up
ip addr add 20.1.1.1/24 dev br1

ip netns add net1
ip link add type veth
ip link set dev veth1 netns net1

ip netns exec net1 ip link set dev veth1 name eth0
ip netns exec net1 ip addr add 20.1.1.2/24 dev eth0
ip netns exec net1 ip link set dev eth0 up
ip netns exec net1 ip route add default via 20.1.1.1 dev eth0

ip link set dev veth0 master br1
ip link set dev veth0 up

ip netns exec net1 ping 20.1.1.1

实现bridge之间的通信-两台主机

9e792b8fgy1fmm14uwosqj20n907jwf2.jpg

#####################在n1操作######################

ip link add br0 type bridge
ip link set dev br0 up
ip addr add 10.1.1.1/24 dev br0

ip netns add net0
ip link add type veth
ip link set dev veth1 netns net0

ip netns exec net0 ip link set dev veth1 name eth0
ip netns exec net0 ip addr add 10.1.1.2/24 dev eth0
ip netns exec net0 ip link set dev eth0 up
ip netns exec net0 ip route add default via 10.1.1.1 dev eth0

ip link set dev veth0 master br0
ip link set dev veth0 up
ip r a 20.1.1.0/24 via 192.168.14.133
ip netns exec net0 ping 10.1.1.1

########################在n2操作##################
ip link add br1 type bridge
ip link set dev br1 up
ip addr add 20.1.1.1/24 dev br1

ip netns add net1
ip link add type veth
ip link set dev veth1 netns net1

ip netns exec net1 ip link set dev veth1 name eth0
ip netns exec net1 ip addr add 20.1.1.2/24 dev eth0
ip netns exec net1 ip link set dev eth0 up
ip netns exec net1 ip route add default via 20.1.1.1 dev eth0

ip link set dev veth2 master br1
ip link set dev veth2 up
ip r a 10.1.1.0/24 via 192.168.14.132
ip netns exec net1 ping 20.1.1.1

相关文章:

  • SQL 简介
  • Jenkins 集成 Sonar
  • 初识HTTP
  • jfinal-admin 后台框架永久开源
  • 数据库索引实例之二consistent gets
  • Windows下搭建Redis集群
  • iOS系列开发-版本控制工具Git的使用
  • workSpace中多个工程方法互调
  • PXE网络装机服务器
  • 简单升级了一下可着色的ListBox控件
  • jsoup入门
  • ospf和rip和静态路由三者的区别?各能实现什么功能?
  • 【译】ASP.NET Identity Core 从零开始
  • 工作中用到的linux、SQL、Python语句
  • php 几个算法
  • 深入了解以太坊
  • 分享的文章《人生如棋》
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【node学习】协程
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript 基本功--面试宝典
  • JavaScript设计模式系列一:工厂模式
  • Magento 1.x 中文订单打印乱码
  • MaxCompute访问TableStore(OTS) 数据
  • php面试题 汇集2
  • Python打包系统简单入门
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vue2.0 实现互斥
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 从零开始在ubuntu上搭建node开发环境
  • 前嗅ForeSpider采集配置界面介绍
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 移动端解决方案学习记录
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 阿里云API、SDK和CLI应用实践方案
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • # 数论-逆元
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • %check_box% in rails :coditions={:has_many , :through}
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (分类)KNN算法- 参数调优
  • (七)理解angular中的module和injector,即依赖注入
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • ***利用Ms05002溢出找“肉鸡
  • *Django中的Ajax 纯js的书写样式1
  • .NET CLR Hosting 简介
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?