概述
在L2互通、L3互通实验基础上通过NAT实现访问公网。
架构图如下,
这里两台逻辑路由器LR1和GLR是通过一台逻辑交换机LSjoin互连的,
GLR和物理网络设备通过LSlocal相连。
物理拓扑
如上一个实验OVN实验----L2互通
逻辑拓扑
配置
开始实验前先检查一下当前的组网,可以看到两个网段,网关都在lr1上,类似一个单臂路由的网络模型,只不过这些网络设备都是分布式的。
测试一下,四个容器之间是可以互通的。
记录一下host44的chassis id
创建一个路由器lr2,这台路由器通过指定chassis 使其绑定在host44上,因为按照上图,只有host44才能到互联网,所以这里lr2不能是分布式的
ovn-nbctl create Logical_Router name=lr2 options:chassis=9a36c481-5cb4-4c82-85f6-39f57343daa1
创建两个ls
ovn-nbctl ls-add ls-join
ovn-nbctl ls-add ls-local
lr2添加接口连接lsjoin
ovn-nbctl lrp-add lr2 lr2-lsjoin 00:00:00:00:00:01 10.10.1.2/24
ls-join添加接口连接lr2
ovn-nbctl lsp-add ls-join lsjoin-lr2
ovn-nbctl lsp-set-type lsjoin-lr2 router
ovn-nbctl lsp-set-addresses lsjoin-lr2 00:00:00:00:00:01
ovn-nbctl lsp-set-options lsjoin-lr2 router-port=lr2-lsjoin
lr1添加接口连接ls-join,IP和lr2-lsjoin同网段
ovn-nbctl lrp-add lr1 lr1-lsjoin 00:00:00:00:00:02 10.10.1.1/24
ls-join添加接口连接lr1
ovn-nbctl lsp-add ls-join lsjoin-lr1
ovn-nbctl lsp-set-type lsjoin-lr1 router
ovn-nbctl lsp-set-addresses lsjoin-lr1 00:00:00:00:00:02
ovn-nbctl lsp-set-options lsjoin-lr1 router-port=lr1-lsjoin
lr2添加接口连接lslocal
ovn-nbctl lrp-add lr2 lr2-lslocal 00:00:00:00:00:03 10.10.2.1/24
ls-local添加接口连接lr2
ovn-nbctl lsp-add ls-local lslocal-lr2
ovn-nbctl lsp-set-type lslocal-lr2 router
ovn-nbctl lsp-set-addresses lslocal-lr2 00:00:00:00:00:03
ovn-nbctl lsp-set-options lslocal-lr2 router-port=lr2-lslocal
lr2的接口绑定在host44
ls-local上添加localnet 类型的接口,并设置 network_name 为 externalnet
ovn-nbctl lsp-add ls-local lslocal-localnet
ovn-nbctl lsp-set-addresses lslocal-localnet unknown
ovn-nbctl lsp-set-type lslocal-localnet localnet
ovn-nbctl lsp-set-options lslocal-localnet network_name=externalnet
host44映射网络名称和实际网桥,这里是在host44上配置
ovs-vsctl add-br br-ens8
ovs-vsctl add-port br-ens8 ens8
ovs-vsctl set Open_vSwitch . external-ids:ovn-bridge-mappings=externalnet:br-ens8
ip link set dev br-ens8 up
ip addr add 10.10.2.44/24 dev br-ens8 //也可以不配IP
配置静态路由
lr1默认路由指向lr2
ovn-nbctl lr-route-add lr1 “0.0.0.0/0” 10.10.1.2
l2到4台容器的回程路由
ovn-nbctl lr-route-add lr2 “192.168.0.0/16” 10.10.1.1
l2默认路由指向物理网关
ovn-nbctl lr-route-add lr2 “0.0.0.0/0” 10.10.2.254
查看路由表
ovn-nbctl lr-route-list lr2
配置NAT
ovn-nbctl – --id=@nat create nat type=“snat” logical_ip=192.168.0.0/16 external_ip=10.10.2.1 – add logical_router lr2 nat @nat
进入容器ping 114.114.114.114,可以ping通了