OpenStack neutron floatingips 与 iptables 深入分析

本文深入探讨了OpenStack neutron-l3-agent如何利用iptables实现网络三层协议,包括SNAT、DNAT地址转换。详细介绍了iptables的链拓扑结构和表结构,特别是PREROUTING和POSTROUTING链的功能。通过实例展示了floating IP与fixed IP的绑定过程,并解释了NAT原理,以及虚拟机间的网络通信测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 简介neutron-l3-agent

OpenStack neutron-l3-agent 主要负责实现网络三层协议,为虚拟机完成SNAT,DNAT等地址的转换与伪装,提供安全弹性隔离的云网络环境,

下面详细叙述了OpenStack如何使用iptables链与规则完成复杂的neutron-l3-agent 的网络地址转换(NAT)功能,虚拟机floating ip与fixed ip绑定的工作原理。


2. iptables 简介

    2.1 iptables 链拓扑结构


  2.2 iptables 表结构

           Table filter: 

                Chain INPUT

                Chain FORWARD

                Chain OUTPUT

            filter 表用于一般的信息包过滤,它包含 INPUT 、 OUTPUT 和 FORWARD 链。

          Table nat:

                Chain PREROUTING

                Chain OUTPUT

                Chain POSTROUTING

           PREROUTING 链由指定信息包一到达防火墙就改变它们的规则所组成,而 POSTROUTING 链由指定正当信息包打算离开防火墙时改变它们的规则所组成。 


3. iptables command

# 添加一条规则到 INPUT 链的末尾,ACCEPT 来自源地址 10.9.1.141 的包

[root@xianghui-10-9-1-141 ~]# iptables -A INPUT -s 10.9.1.141  -j ACCEPT

#允许protocol为TCP 、 UDP 、 ICMP 的包通过

[root@xianghui-10-9-1-141 ~]# iptables -A INPUT -p TCP, UDP

# 从INPUT链中删除掉规则“Drop 到端口80的包”
[root@xianghui-10-9-1-141 ~]# iptables -D INPUT --dport 80 -j DROP
# 将 INPUT 链的缺省规则指定为 DROP 
[root@xianghui-10-9-1-141 ~]# iptables -P INPUT DROP

# 创建一个新链new-chain

[root@xianghui-10-9-1-141 ~]# iptables -N new-chain

# 删除Table filter 中的所有规则

[root@xianghui-10-9-1-141 ~]# iptables -F

# 列出INPUT链中的所有规则

[root@xianghui-10-9-1-141 ~]# iptables -L INPUT

# 删除链

[root@xianghui-10-9-1-141 ~]# iptables -X

4. 配置neutron-l3-agent 

[root@xianghui-10-9-1-141 ~]# neutron router-create router1
+--------------------------------------+---------+-----------------------+
| id                                   | name    | external_gateway_info |
+--------------------------------------+---------+-----------------------+
|c36b384e-b1f5-45e5-bb4f-c3ed32885142 | router1 | null |
+--------------------------------------+---------+-----------------------+
[root@xianghui-10-9-1-141 ~]# vi /etc/neutron/l3_agent.ini
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver 
# OS is RHEL6.4, not support namespace
use_namespaces = False
# This is done by setting the specific router_id.
router_id = c36b384e-b1f5-45e5-bb4f-c3ed32885142
# Name of bridge used for external network traffic. This should be set to
#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值