lesson1 ovs conntrack實(shí)現(xiàn)單向ip通訊



拓?fù)鋱D

目標(biāo)

使用ovs構(gòu)建出以上的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),通過配置流表,使用conntrack實(shí)現(xiàn)以下功能

????1.vm1可以ping通vm2

? ? 2.vm2不可ping通vm1


實(shí)驗(yàn)環(huán)境

CentOS Linux release 7.2.1511 (Core)

構(gòu)建基礎(chǔ)環(huán)境

git clone?https://github.com/cao19881125/ovn_lab.git

cd ovn_lab/docker

docker build -t ovn_lab:v1 .

yum install package/openvswitch-kmod-2.7.90-1.el7.centos.x86_64.rpm


啟動容器

cd ovn_lab

OVN_LAB_DIR=`pwd` docker run -it -d --privileged -v $OVN_LAB_DIR/lesson:/root/ovn_lab/lesson --name 'ovn_lab' ovn_lab:v1 bash

docker exec -it ovn_lab bash

創(chuàng)建網(wǎng)絡(luò)拓?fù)?/h2>

start_ovs.sh

/root/ovn_lab/lesson/list/lesson1/create_topo.sh

添加流表

ovs-ofctl add-flow br-int table=0,priority=100,arp,action=normal

ovs-ofctl add-flow br-int table=0,priority=100,ip,ct_state=-trk,action=ct\(table=1\)

ovs-ofctl add-flow br-int table=1,in_port=1,ip,ct_state=+trk+new,action=ct\(commit\),2

ovs-ofctl add-flow br-int table=1,in_port=1,ip,ct_state=+trk+est,action=2

ovs-ofctl add-flow br-int table=1,in_port=2,ip,ct_state=+trk+new,action=drop

ovs-ofctl add-flow br-int table=1,in_port=2,ip,ct_state=+trk+est,action=1

測試

vm1 ping vm2

# ip netns exec vm1 ping 10.0.0.20

PING 10.0.0.20 (10.0.0.20) 56(84) bytes of data.

64 bytes from 10.0.0.20: icmp_seq=1 ttl=64 time=0.314 ms

64 bytes from 10.0.0.20: icmp_seq=2 ttl=64 time=0.217 ms

vm2 ping vm1

# ip netns exec vm2 ping 10.0.0.10 -w 3

PING 10.0.0.10 (10.0.0.10) 56(84) bytes of data.

--- 10.0.0.10 ping statistics ---

4 packets transmitted, 0 received, 100% packet loss, time 2999ms


流表解析

1. table=0,arp,action=normal

????允許arp協(xié)議通過

2. table=0,priority=100,ip,ct_state=-trk,action=ct(table=1)

????untrack狀態(tài)的ip包送到conntrack并處理后發(fā)到1表

3. table=1,in_port=1,ip,ct_state=+trk+new,action=ct(commit),2?

? ??vm1進(jìn)來的new狀態(tài)的ip包c(diǎn)ommit到conntrack并發(fā)到2端口

4.?table=1,in_port=1,ip,ct_state=+trk+est,action=2

? ??vm1進(jìn)來的est狀態(tài)的包發(fā)到2端口

5.?table=1,in_port=2,ip,ct_state=+trk+new,action=drop

? ??vm2進(jìn)來的new狀態(tài)的包直接drop

6.?table=1,in_port=2,ip,ct_state=+trk+est,action=1

? ??vm2進(jìn)來的est狀態(tài)的包發(fā)到1端口

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容