TCP/IP 实验环境搭建三(搭建)

  1. 启动网桥
    ip link set net1 up
    ip link set net2 up
    效果图


    image.png
  2. 创建容器
    docker run --privileged=true --net none --name aix -d hub.c.163.com/public/ubuntu:14.04
    docker run --privileged=true --net none --name solaris -d hub.c.163.com/public/ubuntu:14.04
    docker run --privileged=true --net none --name gemini -d hub.c.163.com/public/ubuntu:14.04
    docker run --privileged=true --net none --name gateway -d hub.c.163.com/public/ubuntu:14.04
    docker run --privileged=true --net none --name netb -d hub.c.163.com/public/ubuntu:14.04
    docker run --privileged=true --net none --name sun -d hub.c.163.com/public/ubuntu:14.04
    docker run --privileged=true --net none --name svr4 -d hub.c.163.com/public/ubuntu:14.04
    docker run --privileged=true --net none --name bsdi -d hub.c.163.com/public/ubuntu:14.04
    docker run --privileged=true --net none --name slip -d hub.c.163.com/public/ubuntu:14.04
    效果图


    image.png
  3. 将节点加入网络
    ./pipework net1 aix 140.252.1.92/24
    ./pipework net1 solaris 140.252.1.32/24
    ./pipework net1 gemini 140.252.1.11/24
    ./pipework net1 gateway 140.252.1.4/24
    ./pipework net1 netb 140.252.1.183/24

./pipework net2 bsdi 140.252.13.35/27
./pipework net2 sun 140.252.13.33/27
./pipework net2 svr4 140.252.13.34/27

效果图


image.png
  1. bsdi 到 slip 建立P2P 网络
    4.1 创建一个peer 的两个网卡
    ip link add name slipside mtu 1500 type veth peer name bsdiside mtu 1500

效果图


image.png

4.2 把其中一个塞到slip的网络namespace里面
docker inspect '--format={{ .State.Pid }}' slip #获取pid
ln -s /proc/pid/ns/net /var/run/netns/pid
ip link set slipside netns pid

效果图


image.png

4.3 同理把另一个塞到bsdi的网络的namespace里面


image.png

4.4 给slip这面的网卡添加IP地址
docker exec -it slip ip addr add 140.252.13.65/27 dev slipside
docker exec -it slip ip link set slipside up
效果图


image.png

4.5 给bsdi这面的网卡添加IP地址
docker exec -it bsdi ip addr add 140.252.13.66/27 dev bsdiside
docker exec -it bsdi ip link set bsdiside up

效果图


image.png
  1. 添加网关
    5.1 对于slip来讲,对外访问的默认网关是13.66
    docker exec -it slip ip route add default via 140.252.13.66 dev slipside
    5.2 对于bsdi来讲,对外访问的默认网关13.33
    docker exec -it bsdi ip route add default via 140.252.13.33 dev eth1
    5.3 对于sun来讲,要想访问p2p网络,需要添加下面的路由表
    docker exec -it sun ip route add 140.252.13.64/27 via 140.252.13.35 dev eth1
    5.4 对于svr4来讲,对外访问的默认网关是13.33
    docker exec -it svr4 ip route add default via 140.252.13.33 dev eth1
    5.5 对于svr4来讲,要访问p2p网关,需要添加下面的路由表
    docker exec -it svr4 ip route add 140.252.13.64/27 via 140.252.13.35 dev eth1

这个时候,从slip是可以ping的通下面的所有的节点的
效果图


image.png
  1. 添加 从sun到netb的点对点网络 , 同 步骤4
    ip link add name sunside mtu 1500 type veth peer name netbside mtu 1500
    docker inspect '--format={{ .State.Pid }}' sun #获取 sun 的pid
    ln -s /proc/pid/ns/net /var/run/netns/pid
    ip link set sunside netns pid

docker inspect '--format={{ .State.Pid }}' netb #获取 netb 的pid
ln -s /proc/pid/ns/net /var/run/netns/pid
ip link set netbside netns pid

6.1 给sun里面的网卡添加地址
docker exec -it sun ip addr add 140.252.1.29/24 dev sunside
docker exec -it sun ip link set sunside up

6.2 在sun里面,对外访问的默认路由是1.4
docker exec -it sun ip route add default via 140.252.1.4 dev sunside
6.3 在netb里面,对外访问的默认路由是1.4
docker exec -it netb ip route add default via 140.252.1.4 dev eth1

效果图


image.png

image.png

6.3 在netb里面,p2p这面可以没有IP地址,但是需要配置路由规则,访问到下面的二层网络
docker exec -it netb ip link set netbside up
docker exec -it netb ip route add 140.252.1.29/32 dev netbside
docker exec -it netb ip route add 140.252.13.32/27 via 140.252.1.29 dev netbside
docker exec -it netb ip route add 140.252.13.64/27 via 140.252.1.29 dev netbside

效果图


image.png

image.png
  1. 对于netb,配置arp proxy
    7.1 配置proxy_arp为1
    docker exec -it netb bash -c "echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp"
    docker exec -it netb bash -c "echo 1 > /proc/sys/net/ipv4/conf/netbside/proxy_arp"

7.2 将配置文件添加到docker里面
docker cp proxy-arp.conf netb:/etc/proxy-arp.conf
docker cp proxy-arp netb:/root/proxy-arp
docker exec -it netb chmod +x /root/proxy-arp
docker exec -it netb /root/proxy-arp start

效果图


image.png
  1. 配置上面的二层网络里面所有机器的路由
    8.1 aix 默认外网访问路由是1.4,可以通过下面的路由访问下面的二层网络
    docker exec -it aix ip route add default via 140.252.1.4 dev eth1
    docker exec -it aix ip route add 140.252.13.32/27 via 140.252.1.29 dev eth1
    docker exec -it aix ip route add 140.252.13.64/27 via 140.252.1.29 dev eth1

8.2 solaris
docker exec -it solaris ip route add default via 140.252.1.4 dev eth1
docker exec -it solaris ip route add 140.252.13.32/27 via 140.252.1.29 dev eth1
docker exec -it solaris ip route add 140.252.13.64/27 via 140.252.1.29 dev eth1

8.3 gemini
docker exec -it gemini ip route add default via 140.252.1.4 dev eth1
docker exec -it gemini ip route add 140.252.13.32/27 via 140.252.1.29 dev eth1
docker exec -it gemini ip route add 140.252.13.64/27 via 140.252.1.29 dev eth1

8.4 gateway
docker exec -it gateway ip route add 140.252.13.32/27 via 140.252.1.29 dev eth1
docker exec -it gateway ip route add 140.252.13.64/27 via 140.252.1.29 dev eth1

效果图


image.png
  1. 配置外网访问
    9.1 创建一个peer的网卡对
    ip link add name gatewayin mtu 1500 type veth peer name gatewayout mtu 1500
    ip addr add 140.252.104.1/24 dev gatewayout
    ip link set gatewayout up

9.2 一面塞到gateway的网络的namespace里面
docker inspect '--format={{ .State.Pid }}' gateway #获取 gateway pid
ln -s /proc/pid/ns/net /var/run/netns/pid
ip link set gatewayin netns pid

9.3 给gateway里面的网卡添加地址
docker exec -it gateway ip addr add 140.252.104.2/24 dev gatewayin
docker exec -it gateway ip link set gatewayin up

9.4 在gateway里面,对外访问的默认路由是140.252.104.1/24
docker exec -it gateway ip route add default via 140.252.104.1 dev gatewayin

效果图


image.png

9.5 设置NAT 转换, (ens33 本地网卡)
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
ip route add 140.252.13.32/27 via 140.252.104.2 dev gatewayout
ip route add 140.252.13.64/27 via 140.252.104.2 dev gatewayout
ip route add 140.252.1.0/24 via 140.252.104.2 dev gatewayout

终极效果, 节点所有网络都可以互相通, 并都可以访问外网(若果不能访问外网,请确认主机是否打开IP 转发功能)


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • pipework的做法是通过网桥使容器,宿主机在同一个网段中进行通信 实验环境: 一、基础环境配置,三台服务器均执...
    向上的路阅读 3,001评论 1 2
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,748评论 0 7
  • ip link show # 显示网络接口信息ip link set...
    不排版阅读 592评论 0 0
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,499评论 0 120
  • 2019年 1月7日 小雨 今天是星期天,天空下着。下着雨,冷冷的我在家和弟弟一起玩。我发现了,我有一颗牙齿...
    黄栋章阅读 219评论 0 0