Oracle甲骨文实例多公网IP分配

目标为单台实例添加多个公网 IP 地址
实验环境：
ARM (A1) 实例
ubuntu 22.04(Debian Based)

前言：注意不同实例类型的 VNIC 分配上限不同，公网 IP 数量似乎也有限制。
误操作可能会导致机器失联，在输入命令时请保证参数正确且完整

1.OCI 添加 VNIC

没错，一个 VNIC 能添加多个 IPv4 的 VCN 地址，但是却只能绑定一个公网 IP，因此我们需要添加一个新的 VNIC（网卡）
为什么不新建一个 VNC？添加新的 VNC 是没有限制的，但是公共网关有，因此我们的新 VNIC 仍旧需要使用和主 VNIC 相同的 VCN 以使用相同网关

Compute/Instances/Instance details/Attached VNICs

1.1 新建 VNIC
点击 Create VNIC
VCN：选择和主 VNIC 相同的 VCN
Subnet：选择和主 VNIC 相同的 Subnet
无特殊需求创建 VNIC 即可

1.2 配置 VNIC
点击新建的 VNIC，选择 IPv4 Addresses，注册新 IPv4 地址
为新建的 IPv4 地址绑定一个公网 IP 地址，可以使用临时 IP (Ephemeral public IP) 或保留 IP (Reserved public IP)

至此 OCI 操作结束，请记住新 VNIC 的 MAC 地址和 IPv4 内网地址供下一步操作使用

2. 实例网卡配置

2.1 检查网卡
OCI 中添加 VNIC 后，若无异常实例应当自动添加新的网络接口
使用ifconfig来检查网络接口
对于 A1 实例，主 VNIC 应当对应 enp0s3，新 VNIC 应当对应 enp1s0，实际请依据 MAC 地址区分

2.2 为网络接口添加 IPv4 地址
作者实验时网络接口并没有自动添加新的 IPv4 地址，使用 dhclient 也无济于事，因此我选择手动添加，如果新的网络接口中已经出现正确的 IPv4 地址请忽略此步
ip addr add <内网地址> dev <网络接口名称>
EXP.ip addr add 10.0.0.10/24 dev enp1s0
再次检查网络接口应当出现新的 IPv4 地址
为了便于内部网络广播以及 ARP 传播，我们需要修改广播地址，对于网络 10.0.0.0/24 广播地址应为 10.0.0.255
ifconfig enp1s0 <内网地址> netmask 255.255.255.0 broadcast <广播地址>
EXP.ifconfig enp1s0 10.0.0.10 netmask 255.255.255.0 broadcast 10.0.0.255

2.3 为网络接口添加默认网关
由于新 VNIC 和主 VNIC 处于相同 VCN，应当使用相同的网关，首先应当获取网关地址。我们通过路由表检查主 VNIC 的网关配置
route -n

Copy
_Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
(略)
0.0.0.0 10.0.0.1 0.0.0.0 UG 100 0 0 enp0s3
(略)

由此可见对于网卡 enp0s3，其匹配 0.0.0.0/0 的目的地址都会路由到网关 10.0.0.1

我们可以使用新网卡来测试对该网关的访问
ping 10.0.0.1 -I enp1s0

接着我们为新网卡配置默认网关
route add default gw <网关地址> <网络接口名称>
EXP.route add default gw 10.0.0.1 enp1s0

再次检查路由表，我们会发现 enp1s0 拥有了一条新的路由信息

Copy
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 enp1s0
0.0.0.0 10.0.0.1 0.0.0.0 UG 100 0 0 e
(略)

至此，公网 IP 地址添加完成

3.(可选) 测试网络连通性

实例通过新地址访问外部网络
ping google.com -4 -I enp1s0
外部网络访问实例的新地址
'ping <新公网地址>'

4.(可选) 修改网络接口 MTU 与优先级

主网卡使用的 MTU 为 9000，如果需要降低网络层发包频率，可以修改为相同的 MTU
ifconfig enp1s0 mtu 9000

如果需要修改网络接口出口优先级，可以通过修改路由跳数来配置路由优先级
ifmetric enp1s0 0