背景:

上一篇文章:GNS3 mac环境安装并搭建vlan_ykdsg的博客-CSDN博客_gns3 mac  描述了这么快速使用GNS3,这个时候可以做一般的网络实验了。但是在网络的学习过程中会涉及很多linux环境,例如iptables、OpenvSwitch 等都需要在 linux中配置。在GNS3 中有几种方式可以实现:

1.通过VMware 或者VirtualBox等虚拟机来引入。这个比较简单,基本就是安装好虚拟机,在GNS3 的配置界面中新增对应的虚拟机就行了。

需要注意的是勾上 Use as linked base VM,这样在project里面新增一个的时候会以这个为模板新增一个,不然每次都要在虚拟机中手动新增比较麻烦。

但是遇到过我在对应的虚拟机里安装了 OpenvSwitch,结果在新生成的vm里没找到的奇怪现象。

2.通过Docker 容器来引入,比较轻量,而且容器的定制化很高。

准备工作

需要安装GNS3 VM,只有这样才能使用docker,实际上docker 是运行在这个VM 中的。

首先是下载对应虚拟机的vm,注意vm版本需要跟GNS3的版本一致。

因为已经使用了VirtualBox,我就下了这个版本。网上教程较多的使用VMware,而且实际运行过程中也发现VirtualBox 有时候不太灵光。

安装过程还是简单的,下载完用VirtualBox打开就行了。

接着在GNS3中进行配置:

保存之后,GNS3 就会启动这个vm,然后每次打开GNS3之后都会自动带起这个vm。

vm启动后出现一个界面:

根据上面的ip地址,用户名密码就可以ssh上去了。

刚开始的界面是这样的(是不是很神奇),选择shell,点击ok,就进入到熟悉的黑乎乎的界面了。

接下来执行 sudo passwd ,为 root 用户设置密码,就可以切换到 root 权限了。

制作Docker镜像

里面很贴心的安装好了docker。

制作镜像有很多种方法了,这里简单说下通过DockerFile的方法:

1.建一个目录 project-docker/ubuntu_18

2.新建一个文件:Dockerfile,这个时候会发现居然没有vi,勉为其难用nano 顶一下吧。

FROM ubuntu:18.04RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN sed -i s@/security.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.listRUN apt-get -y update && apt-get -y install vim tmux iputils-ping net-tools iproute2 tcpdump netcat curl iptables ebtables python3WORKDIR /rootCMD /bin/bash

最后一行很重要,后面能够通过GNS3的界面直接进入console。也可以安装下docker 的国内源,这个在后面安装其他docker 镜像的时候会比较有用。

然后执行:

docker build -t myubuntu .

结束之后可以看到当前的image。

GNS3中添加docker容器。

点New

到网卡这个界面,可以多设置几个

 之后就一路Next。

使用Docker

这里简单演示下iptables。拓扑图比较简单

这里就不用什么2层、3层设备了,2台主机直接直连。 启动之后,双击设备可以进入控制台。

可以看到没有配置ip,先进行配置

ifconfig eth0 1.1.1.10/24

第一台设置ip为:1.1.1.10;第二胎设置ip为1.1.1.11。这个时候从第一台ping 第二台,是联通的,反过来也是一样。

case1:不响应ping

现在设置PC2 不能ping PC1 :

iptables -t filter -A INPUT -s 1.1.1.11 -d 1.1.1.10 -p icmp --icmp-type 8 -j DROP

查看配置表:

iptables -L -n

大概意思是:在INPUT链增加一条规则,源ip(-s) 1.1.1.11 到目的ip(-d)1.1.1.10,通过icmp协议,那么就DROP(不拒接,不响应)。

这个时候再看下PC2 ping的情况: 

会发现没有任何反应。

可以通过抓包来看下具体协议,在连接的那条线上右键:

会打开WireShark。

会看到只有request的请求,没有replay的回复。

case2:拒绝ping

看一下拒绝的情况,先清理之前设置的规则

iptables -F

设置reject规则

iptables -t filter -A INPUT -s 1.1.1.11 -d 1.1.1.10 -p icmp --icmp-type 8 -j REJECT

这个时候再通过PC2 来ping PC1,会明确提示:Destination Port Unreachable

通过wireshark 能看到,这次是有来有回的,PC1明确返回了unreachable。

结尾:

GNS3支持docker 后可以很方便的模拟很多实验场景,而且docker 很轻量,定制性也很高。

GNS3使用Docker相关推荐

  1. GNS3全面详解系列-GNS3的前世今生

    前言: 我和"她"认识已经有十个春秋,3650个日起日落.5年前因为对她的"误会"我们各奔东西,彼此擦肩而错过:5年后由于个人发展原因再次与她重逢.最近由于工作 ...

  2. 如何搭建和使用GNS3服务器

    GNS3 Remote Server 近期,我在学习使用GNS3的过程中发现,国内论坛关于GNS3的介绍较少,少数的几篇文章介绍的GNS3版本也比较低,已经不太实用了.因此,我想通过本文分享一些GNS ...

  3. /var/lib/docker/overlay2/xxxxx no such file or directory docker文件删除引发的问题

    记一次误删引发的服务雪崩 K8s node节点磁盘报警,报警后我找到服务中占用磁盘最多的地方,在overlay2目录下,对下面的文件进行了删除   删除后,有状态服务先出现了问题,服务无法启动.停止. ...

  4. 本地打包Docker镜像上传至阿里云远程仓库(一站式脚本)

    打包镜像上传至远程仓库: 1. 本地项目为 mytest-project 2. 仓库为阿里云镜像仓库 registry.cn-beijing.aliyuncs.com/test/mytest-proj ...

  5. docker报错:driver failed programming external connectivity on endpoint, iptables:No chain by that name

    docker 报错: Error response from daemon: Cannot restart container hello: driver failed programming ext ...

  6. Docker容器的备份与恢复,Docker镜像的备份与恢复

    1. 备份容器 首先,为了备份Docker中的容器,我们会想看看我们想要备份的容器列表.要达成该目的,我们需要在我们运行着Docker引擎,并已创建了容器的Linux机器中运行 docker ps 命 ...

  7. docker安装kafka消息队列

    1. 启动zookeeper容器(Zookeeper用于崩溃检测,实现Topic发现,和维护Topic的生产和消费状态) docker run -d --name zookeeper -p 2181: ...

  8. 设置普通用户执行docker命令,执行docker命令无需输入密码或者切换root用户

    每次执行docker命令都要输入密码或者切换root用户,非常不方便,尤其是在shell脚本中就更麻烦了,一起来解决这个问题: 1. 创建名为docker的组,如果之前已经有该组就会提示已存在: su ...

  9. docker :open /var/lib/docker/tmp/GetImageBlob318829910: no such file or directory异常解决

    千万不要直接去重装docker,不要删除镜像,不要手动创建目录和文件,只需要这样就好了!

  10. 将jar包部署在docker上,将jar包打成镜像,使用docker部署jar包

    假设你已经准备好以下东西,即可进行服务部署 一台安装好docker的linux服务器(安装docker见安装docker) 准备好的jar包 接下来开始吧! 将jar包上传至服务器(建好文件夹存放以方 ...

最新文章

  1. 首批辉瑞疫苗紧急出仓,传特朗普将「以身试苗」
  2. OpenAI推出数学推理证明模型,推理结果首次被数学家接受
  3. C#设计模式——适配器模式(Adapter Pattern)
  4. java什么叫实例化_在JAVA中实例化的确切含义是什么
  5. eeglab教程系列(10)-绘制ERP图像
  6. 基于用例点来度量软件规模并管理进度 之结束语
  7. ROS学习之roslaunch的node标签
  8. php推荐位调用,推荐位数据循环调用
  9. xcode12 导入SwiftyJSON
  10. Git以及Githup的使用
  11. 零基础怎么学好3D建模?只需要了解下面几点
  12. Python编程之围圈报数
  13. 点进来,论美女,品丝网
  14. 用python写一元二次方程_使用Python解一元二次方程!
  15. 支付系统 java_PaySystem
  16. 屏蔽第三方SDK权限
  17. 如何用安装启动盘启动计算机,U大师U盘启动盘制作教程 详细图解步骤教你怎么装系统(老机版)...
  18. vue 2.0使用tinymce-vue富文本
  19. GRBL学习-常用G代码
  20. 【Vue系列】vuex详解,一篇彻底搞懂vuex

热门文章

  1. spss方差分析_SPSS双因素重复测量方差分析
  2. LeetCode算法,多多路上从左到右有N棵树(编号1~N),其中第i个颗树有和谐值Ai。 多多鸡认为,如果一段连续的树,它们的和谐值之和可以被M整除,那么这个区间整体看起来就是和谐的....
  3. 马踏棋盘(骑士周游问题)
  4. ubuntu18.04修改vscode字体
  5. 校验码的计算方法说明
  6. FEC介绍(二)-详解RS编码
  7. 【海康威视】前端开发:【1】弹框内容被视频画面遮挡,弹框提示如何覆盖视频画面?【已解决】
  8. ArcGIS10.2最新全套下载地址
  9. Elsevier(爱思唯尔)论文模板下载地址及说明
  10. 下载论文的tex模板