DeepthiMachiraju created CLOUDSTACK-9969: --------------------------------------------
Summary: Public IP acquired from additional public ranges which is static nat enabled is set to true post releasing the IP in VPC VR. Key: CLOUDSTACK-9969 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9969 Project: CloudStack Issue Type: Bug Security Level: Public (Anyone can view this level - this is the default.) Components: Virtual Router, VPC Affects Versions: 4.10.0.0 Reporter: DeepthiMachiraju Fix For: 4.10.0.0 Attachments: cloud.log, management-server.log - Create VPC and create multiple tiers within VPC. - Acquire IP from additional Public Range and ENable static nat on the IP. ============== rules created after the above step ============================= - Here eth4 : 10.x.203 , 10.x.204 are the acquired ip - 10.147.52.203 is static nat enabled. root@r-199-VM:~# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 0e:00:a9:fe:02:5f brd ff:ff:ff:ff:ff:ff inet 169.254.2.95/16 brd 169.254.255.255 scope global eth0 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 06:3b:84:00:00:0e brd ff:ff:ff:ff:ff:ff inet 10.147.30.113/24 brd 10.147.30.255 scope global eth1 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 02:00:06:b4:00:02 brd ff:ff:ff:ff:ff:ff inet 192.168.2.1/24 brd 192.168.2.255 scope global eth2 5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 02:00:05:12:00:02 brd ff:ff:ff:ff:ff:ff inet 192.168.1.1/24 brd 192.168.1.255 scope global eth3 6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 06:56:62:00:00:1f brd ff:ff:ff:ff:ff:ff inet 10.147.52.203/24 brd 10.147.52.255 scope global eth4 inet 10.147.52.204/24 brd 10.147.52.255 scope global secondary eth4 root@r-199-VM:/etc/cloudstack# cat forwardingrules.json { "10.147.52.203": [ { "internal_ip": "192.168.1.90", "public_ip": "10.147.52.203", "type": "staticnat" } ], "id": "forwardingrules" ===================== ips.json ================ root@r-199-VM:/etc/cloudstack# cat ips.json { "eth0": [ { "add": true, "broadcast": "169.254.255.255", "cidr": "169.254.2.95/16", "device": "eth0", "gateway": "None", "netmask": "255.255.0.0", "network": "169.254.0.0/16", "nic_dev_id": "0", "nw_type": "control", "one_to_one_nat": false, "public_ip": "169.254.2.95", "size": "16", "source_nat": false } ], "eth1": [ { "add": true, "broadcast": "10.147.30.255", "cidr": "10.147.30.113/24", "device": "eth1", "first_i_p": true, "gateway": "10.147.30.1", "netmask": "255.255.255.0", "network": "10.147.30.0/24", "new_nic": false, "nic_dev_id": 1, "nw_type": "public", "one_to_one_nat": false, "public_ip": "10.147.30.113", "size": "24", "source_nat": true, "vif_mac_address": "06:3b:84:00:00:0e" } ], "eth2": [ { "add": true, "broadcast": "192.168.2.255", "cidr": "192.168.2.1/24", "device": "eth2", "gateway": "192.168.2.1", "netmask": "255.255.255.0", "network": "192.168.2.0/24", "nic_dev_id": "2", "nw_type": "guest", "one_to_one_nat": false, "public_ip": "192.168.2.1", "size": "24", "source_nat": false } ], "eth3": [ { "add": true, "broadcast": "192.168.1.255", "cidr": "192.168.1.1/24", "device": "eth3", "gateway": "192.168.1.1", "netmask": "255.255.255.0", "network": "192.168.1.0/24", "nic_dev_id": "3", "nw_type": "guest", "one_to_one_nat": false, "public_ip": "192.168.1.1", "size": "24", "source_nat": false } ], "eth4": [ { "add": true, "broadcast": "10.147.52.255", "cidr": "10.147.52.204/24", "device": "eth4", "first_i_p": true, "gateway": "10.147.52.1", "netmask": "255.255.255.0", "network": "10.147.52.0/24", "new_nic": false, "nic_dev_id": 4, "nw_type": "public", "one_to_one_nat": false, "public_ip": "10.147.52.204", "size": "24", "source_nat": true, "vif_mac_address": "06:56:62:00:00:1f" }, { "add": true, "broadcast": "10.147.52.255", "cidr": "10.147.52.203/24", "device": "eth4", "first_i_p": false, "gateway": "10.147.52.1", "netmask": "255.255.255.0", "network": "10.147.52.0/24", "new_nic": false, "nic_dev_id": 4, "nw_type": "public", "one_to_one_nat": true, "public_ip": "10.147.52.203", "size": "24", "source_nat": false, "vif_mac_address": "06:56:62:00:00:1f" } ], "id": "ips" ============================================== - Both the acquired IP's are released from the UI. ============ logs post releasing ========================= - eth4 10.147.52.203 is still set to true in ips.json file. - IPtables are cleaned up. root@r-199-VM:/etc/cloudstack# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 0e:00:a9:fe:02:5f brd ff:ff:ff:ff:ff:ff inet 169.254.2.95/16 brd 169.254.255.255 scope global eth0 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 06:3b:84:00:00:0e brd ff:ff:ff:ff:ff:ff inet 10.147.30.113/24 brd 10.147.30.255 scope global eth1 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 02:00:06:b4:00:02 brd ff:ff:ff:ff:ff:ff inet 192.168.2.1/24 brd 192.168.2.255 scope global eth2 5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 02:00:05:12:00:02 brd ff:ff:ff:ff:ff:ff inet 192.168.1.1/24 brd 192.168.1.255 scope global eth3 root@r-199-VM:/etc/cloudstack# cat ips.json { "eth0": [ { "add": true, "broadcast": "169.254.255.255", "cidr": "169.254.2.95/16", "device": "eth0", "gateway": "None", "netmask": "255.255.0.0", "network": "169.254.0.0/16", "nic_dev_id": "0", "nw_type": "control", "one_to_one_nat": false, "public_ip": "169.254.2.95", "size": "16", "source_nat": false } ], "eth1": [ { "add": true, "broadcast": "10.147.30.255", "cidr": "10.147.30.113/24", "device": "eth1", "first_i_p": true, "gateway": "10.147.30.1", "netmask": "255.255.255.0", "network": "10.147.30.0/24", "new_nic": false, "nic_dev_id": 1, "nw_type": "public", "one_to_one_nat": false, "public_ip": "10.147.30.113", "size": "24", "source_nat": true, "vif_mac_address": "06:3b:84:00:00:0e" } ], "eth2": [ { "add": true, "broadcast": "192.168.2.255", "cidr": "192.168.2.1/24", "device": "eth2", "gateway": "192.168.2.1", "netmask": "255.255.255.0", "network": "192.168.2.0/24", "nic_dev_id": "2", "nw_type": "guest", "one_to_one_nat": false, "public_ip": "192.168.2.1", "size": "24", "source_nat": false } ], "eth3": [ { "add": true, "broadcast": "192.168.1.255", "cidr": "192.168.1.1/24", "device": "eth3", "gateway": "192.168.1.1", "netmask": "255.255.255.0", "network": "192.168.1.0/24", "nic_dev_id": "3", "nw_type": "guest", "one_to_one_nat": false, "public_ip": "192.168.1.1", "size": "24", "source_nat": false } ], "eth4": [ { "add": true, "broadcast": "10.147.52.255", "cidr": "10.147.52.203/24", "device": "eth4", "first_i_p": true, "gateway": "10.147.52.1", "netmask": "255.255.255.0", "network": "10.147.52.0/24", "new_nic": false, "nic_dev_id": 4, "nw_type": "public", "one_to_one_nat": true, "public_ip": "10.147.52.203", "size": "24", "source_nat": true, "vif_mac_address": "06:56:62:00:00:1f" }, { "add": false, "broadcast": "10.147.52.255", "cidr": "10.147.52.204/24", "device": "eth4", "first_i_p": true, "gateway": "10.147.52.1", "netmask": "255.255.255.0", "network": "10.147.52.0/24", "new_nic": false, "nic_dev_id": 4, "nw_type": "public", "one_to_one_nat": false, "public_ip": "10.147.52.204", "size": "24", "source_nat": true, "vif_mac_address": "06:56:62:00:00:1f" } ], "id": "ips" ======================================================== - BUt when a new IP is acquired from the same subnet and a rule is configured for that IP , the previous [203] IP which was deleted but set to true in IPs.json file is now observed in interfaces and iptables . root@r-199-VM:~# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 0e:00:a9:fe:02:11 brd ff:ff:ff:ff:ff:ff inet 169.254.2.17/16 brd 169.254.255.255 scope global eth0 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 06:3b:84:00:00:0e brd ff:ff:ff:ff:ff:ff inet 10.147.30.113/24 brd 10.147.30.255 scope global eth1 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 02:00:06:b4:00:02 brd ff:ff:ff:ff:ff:ff inet 192.168.2.1/24 brd 192.168.2.255 scope global eth2 5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 02:00:05:12:00:02 brd ff:ff:ff:ff:ff:ff inet 192.168.1.1/24 brd 192.168.1.255 scope global eth3 6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 06:f3:ba:00:00:1e brd ff:ff:ff:ff:ff:ff inet 10.147.52.202/24 brd 10.147.52.255 scope global eth4 inet 10.147.52.203/24 brd 10.147.52.255 scope global secondary eth4 <Newly Acquired IP 10.147.52.202 > root@r-199-VM:/etc/cloudstack# cat forwardingrules.json { "10.147.52.202": [ { "internal_ip": "192.168.2.233", "internal_ports": "22:22", "protocol": "tcp", "public_ip": "10.147.52.202", "public_ports": "22:22", "type": "forward" } ], "id": "forwardingrules" < old ip 10.X.203 in the iptables > root@r-199-VM:/etc/cloudstack# iptables -t nat -L Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT tcp -- anywhere 10.147.52.202 tcp dpt:ssh to:192.168.2.233:22 Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination DNAT tcp -- anywhere 10.147.52.202 tcp dpt:ssh to:192.168.2.233:22 Chain POSTROUTING (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere mark match 0x525 SNAT all -- 192.168.1.0/24 anywhere to:192.168.1.1 SNAT all -- 192.168.2.0/24 anywhere to:192.168.2.1 SNAT all -- anywhere anywhere to:10.147.30.113 SNAT all -- anywhere anywhere to:10.147.52.202 SNAT all -- anywhere anywhere to:10.147.52.203 SNAT tcp -- anywhere 10.147.52.202 tcp dpt:ssh to:192.168.2.233:22 Attached cloud.log and Ms log -- This message was sent by Atlassian JIRA (v6.4.14#64029)