博客
关于我
Router的外部网关
阅读量:195 次
发布时间:2019-02-28

本文共 1622 字,大约阅读时间需要 5 分钟。

Router使用字段external_geteway_info表达外部网关信息,那么这个外部网关指的是什么呢?如下图:
图中,位于Neutron管理的内部网络中有一个虚拟机(VM)的IP地址是10.10.10.10,它要访问位于外部网络(公网)的网站 ,(IP地址是104.20.110.33),需要经过公网中的路由器Router_2才能到达。Router_2通过Port2直接与Neutron网络节点中Router_1的Port1相连(中间通过Bridge等相连)。这个路由器Router_2才是真正意义的外部网关。Router_2的接口Port2的IP地址182.24.4.1就是Neutron网络的外部网关IP。
Router_2根本不在neutron的管理范围,而且Neutron也不需要真正管理它。从路由转发的角度讲,它只需在Router_1中建立一个路由表项即可。
Destinateion next_hop out interface
104.20.110.0/24 182.24.4.1 Port1(182.24.4.6)
不过从对Router1_1管理的角度来将,不仅仅是增加一个路由表项目那么简单,于是Neutron提出了external_geteway_info这个模型,它由network_id、enable_snat、external_fixed_ips等几个字段组成,它的取值如下:
“external_geteway_info”:{        “enable_snat”:true,        “external_fixed_ips”:[        {                        “ip_address”:”182.24.4.6”                        “subnet_id”:”4323-4325gf-323-543-324”        }],“network_id”:”fhdjs-34hj3-4h3j23-432j”}
这其中的“ip_address”:”182.24.4.6”,表示的就是Router_1的Port1的IP地址,“subnet_id”: ”4323-4325gf-323-543-324”中的gateway_ip就是Router_2的Port2的IP地址(假设gateway_ip=182.24.4.1)。
Neutron为模型external_gateway_info取的名字非常有意思,也非常准确,它并不是直接取名外部网关(external_gateway),而是取名外部网关信息(external_gateway_info),一字之差,蕴含了Neutron的管理理念:
1 Neutron只能管理自己的网络,只能管理上图的Router_1,不能管理Router_2;
2 Neutron也不需要管理Route_2,它只需知道外部网关IP即。而它知道外部网关IP的方法是通过相关Subnet间接获取(获取Subnet的gateway_ip字段)。
也正是从这个意义上讲,如果external_gateway_info中的enable_snat字段假设取值为“True”的话,SNAT真正生效的地点在Router_1的Port1,而不是Router_2的Port2。SNAT的示意图如下:
图中VM访问 ,它初始发出的报文头中,源IP是它自己的IP:10.10.10.10,待报文从Router_1的Port1出去时,源IP就变成了Port1的IP地址:182.24.4.6。这就完成了SNAT转换。
最后强调一下,external_gateway_info中的字段network_id所代表的Network,它的字段“router:external”取值必须为true,这表明这个Network是外部网关所在的Network。
你可能感兴趣的文章
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>
MYSQL:基础——触发器
查看>>
Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>
mysqldump数据库备份无法进行操作只能查询 --single-transaction
查看>>
mysqldump的一些用法
查看>>
mysqli
查看>>