#!/bin/bash function add_public_ip { local vpc_name="${1}" local public_ip="${2}" local private_ip="${3}" local host_ip="${4}" ip -n "${vpc_name}" a add "${public_ip}/32" dev br-public ip r add "${public_ip}" dev br-public scope link ip -n "${vpc_name}" r add "${host_ip}" dev br-public scope link ip -n "${vpc_name}" r add default via "${host_ip}" ip netns exec "${vpc_name}" iptables -t nat -A PREROUTING -d "${public_ip}/32" -j DNAT --to-destination "${private_ip}" ip netns exec "${vpc_name}" iptables -t nat -A POSTROUTING -s "${private_ip}/32" -o br-public -j SNAT --to-source "${public_ip}" } function delete_public_ip { local vpc_name="${1}" local public_ip="${2}" local private_ip="${3}" ip -n "${vpc_name}" a del "${public_ip}/32" dev br-public ip r del "${public_ip}" dev br-public ip netns exec "${vpc_name}" iptables -t nat -D PREROUTING -d "${public_ip}/32" -j DNAT --to-destination "${private_ip}" ip netns exec "${vpc_name}" iptables -t nat -D POSTROUTING -s "${private_ip}/32" -o br-public -j SNAT --to-source "${public_ip}" }