允许VM拥有多个IP/MAC
来源:互联网 发布:店铺形象设计淘宝 编辑:程序博客网 时间:2024/05/21 13:56
场景
在Openstack中创建如上简单的网络,VM1和VM2属于default安全组。现在希望给VM1添加一个新的IP地址1.1.1.100,并且两个IP地址都能够用于与外界通信。
面临的问题
Neutron启用安全组时,会打开anti snoop功能,使VM的IP与 MAC进行绑定,这时新添加的IP不能与外界通信。
解决办法:
1. 在VM1中,添加新IP
sudoifconfig eth0:0 1.1.1.100/24
2. 在运行neutron-server的节点
1) 查看VM1的port-id:
neutron port-list| egrep "1.1.1.4"
返回结果的第一栏为port id=2d3c8078-b23c-43e5-a14d-6e8c7eaecf0b
2) 在neutron-server上运行命令更新此端口
neutronport-update 2d3c8078-b23c-43e5-a14d-6e8c7eaecf0b --allowed-address-pairstype=dict list=true ip_address=1.1.1.100
3) 添加IP后,可以看到allowed_address_pairs的信息
neutronport-show 2d3c8078-b23c-43e5-a14d-6e8c7eaecf0b
结果为:
此时,新添加的IP能够与外界通信。
附1:添加多IP的方式
需求:为VM添加四个IP 1.1.1.100 1.1.1.101 1.1.1.102 1.1.1.103
1.CLI方式
neutronport-update 2d3c8078-b23c-43e5-a14d-6e8c7eaecf0b --allowed-address-pairstype=dict list=true ip_address=1.1.1.100 ip_address=1.1.1.101ip_address=1.1.1.102 ip_address=1.1.1.103
或用API方式实现上述功能
1)获取token ID,用于下一步操作:
curl -ihttp://10.133.0.247:35357/v2.0/tokens -X POST -d '{"auth" : {"tenantName": "admin","passwordCredentials":{"username":"admin","password":"123"}}}'-H "Accept: application/json" -H "Content-Type:application/json"
2)使用如下API
curl-i http://10.133.0.247:9696/v2.0/ports/2d3c8078-b23c-43e5-a14d-6e8c7eaecf0b -XPUT -d '{"port" : {"allowed_address_pairs" : [{"ip_address":"1.1.1.100"},{"ip_address":"1.1.1.101"}, {"ip_address":"1.1.1.102"},{"ip_address":"1.1.1.103"} ]}}' -H "X-Auth-Token: f7b0e4adfd9b469e934ce3c3b06d8052"-H "Accept: application/json" -H "Content-Type:application/json"
2.在VM1中添加四个IP地址后,这四个IP可以直接与外界通信。
sudoifconfig eth0:0 1.1.1.100/24
sudoifconfig eth0:1 1.1.1.101/24
sudoifconfig eth0:2 1.1.1.102/24
sudoifconfig eth0:3 1.1.1.103/24
附2:更换VM的MAC
说明:当前没有环境使得一个VM对应的port拥有多个网卡,来进行多MAC的尝试。因此下面只给出更换VM的MAC的实验。
需求:修改VM1的MAC地址,并且VM1仍然能够与外界通信。
1.CLI方式(注意:如果要更改MAC地址,必须指定对应的IP,此IP可以是一个新的IP,这里使用原始IP进行试验):
neutronport-update 2d3c8078-b23c-43e5-a14d-6e8c7eaecf0b --allowed-address-pairstype=dict list=true ip_address=1.1.1.4,mac_address=fa:16:3f:11:11:11
或者API的方式:
curl-i http://10.133.0.247:9696/v2.0/ports/2d3c8078-b23c-43e5-a14d-6e8c7eaecf0b -XPUT -d '{"port" : {"allowed_address_pairs" : [{"ip_address":"1.1.1.4","mac_address":"fa:16:3f:11:11:11"}]}}' -H"X-Auth-Token: $token_id" -H "Accept: application/json" -H"Content-Type: application/json"
2.在VM1中修改MAC地址:
sudoip link set dev eth0 down
sudoip link set dev eth0 address fa:16:3f:11:11:11
sudoip link set dev eth0 up
VM1修改MAC地址后仍能够与外界通信。
附3:对VM放行所有IP
需求:给VM1添加任意的IP地址(选取三个192.168.100.1 10.0.0.1 172.16.0.5),使这些IP都能够与同子网下的VM2和不同子网下的VM3通信。
1. 在运行neutron-server的节点执行如下命令,放行所有IP
对于I版
neutronport-update 1f71d96e-8d93-4dcf-9673-67aeb4c4f68d --allowed-address-pairs type=dictlist=true ip_address=0.0.0.0/0
对于K版(不支持ip_address=0.0.0.0/0形式,执行上面的I版命令虽然不报错,但是iptables中的相应规则没有发生变化)
neutronport-update 1f71d96e-8d93-4dcf-9673-67aeb4c4f68d --allowed-address-pairstype=dict list=true ip_address=0.0.0.0/1 ip_address=128.0.0.0/1
2. 给VM1添加IP
sudoifconfig eth0:0 192.168.100.1
sudoifconfig eth0:1 10.0.0.1
sudoifconfig eth0:2 172.16.0.5
3. VM2如果想ping通VM1新添加的IP,需要在本地添加路由。
sudoroute add -net 192.168.100.0/24 dev eth0
sudoroute add -net 10.0.0.0/24 dev eth0
sudoroute add -net 172.16..0/24 dev eth0
4.VM3如果想ping通VM1新添加的IP,需要在网络节点上找到route的命名空间qrouter-ecc06269-41c0-4bed-a3c6-71f18e21230c,并添加路由。
ipnetns exec qrouter-ecc06269-41c0-4bed-a3c6-71f18e21230c route add -net192.168.100.0/24 dev qr-8eb7b70c-d0
ipnetns exec qrouter-ecc06269-41c0-4bed-a3c6-71f18e21230c route add -net 10.0.0.0/24dev qr-8eb7b70c-d0
ipnetns exec qrouter-ecc06269-41c0-4bed-a3c6-71f18e21230c route add -net172.16.0.0/24 dev qr-8eb7b70c-d0
- 允许VM拥有多个IP/MAC
- 获取电脑多个IP、MAC
- 设置ip地址,vm设置mac与ip
- OpenStack修改IP/MAC对VM通信影响
- OpenStack修改IP/MAC对VM通信影响
- ubuntu 启动时 设置多个ip 修改mac 网关 。。。
- 多个IP、端口、MAC地址的正则匹配
- 在Windows中取得多个网卡的MAC地址及多个IP地址
- 一对夫妇只允许拥有一套房子
- spring 配置允许多个实例
- Semaphore 允许多个线程同时访问
- mac 允许任何来源
- nova boot代码流程分析(五):VM启动从neutron-dhcp-agent获取IP与MAC
- vm安装mac
- VM安装mac问题
- vm virtualbox安装mac
- mac vm链接
- Mac安装VM虚拟机
- Maximum Depth of Binary Tree
- Xcode7自带的Instruments
- Scala坑六(抽象类)
- hibernate N+1问题
- 判断是手机端还是PC端的验证
- 允许VM拥有多个IP/MAC
- coreseek/sphinx文档摘要
- 观察者模式
- hdoj 4786 Fibonacci Tree
- VS 2010 opengl环境配置
- pg9.4利用pgAgent创建定时任务
- CityEngine CGA语法之偏移函数 offset
- Delete Node in a Linked List
- hdoj Another Sum Problem 2576 (数学题)