单网络接口多IP设置
今天买的VPS另外送了一个IP,我该怎么绑定2个IP到一个网络接口上面呢?答:使用IP alias实现。
默认情况下一个网络接口只能绑定一个IPV4地址。这个"Main IP"能在VPS商家的控制面板中设置。如果拥有多个IP,想都用在这机器上,创建IP别名即可达到目的。
IP别名类似于Openwrt单线多拨叠加带宽的原理,都是一个网络接口虚拟出多个IP,就是少了拨号和负载均衡两个步骤而已。
假设我的IP情况如下
- 主IP: 66.66.66.66/27
- 副IP: 111.111.111.111/25
别名
查看默认网卡接口名字
ifconfig
名字一般是eth0之类的,我的ubuntu 16.04显示的是ens3
那么别名就是ens3:0,也就是在原网络接口后面加上冒号,数字即可。
可以创建多个别名例如ens3:1, ens3:2。直接ifconfig。
ifconfig ens3:0 111.111.111.111/25 up
本机貌似是ping不通这个111.111.111.111的。用另一机子ping它看看是否正常响应ICMP
ping 111.111.111.111
若有ICMP回复,那么基本上完成了。可以使用主IP和副IP访问VPS了。
不知道为什么出现了这个现象:两个IP的TCP数据包畅行无阻,对于UDP数据包则被本地链路全部丢弃。
我的ss开启了UDP转发,不可能就这么阉割udp部份吧。。。如果遇到UDP被丢弃的情况,可以做NAT
对副IP做UDP-NAT
因为副IP相对于主IP可以看作是内网IP,因此做DNAT操作。
举例,我要做一个对从111.111.111.111传入的UDP数据包进行DNAT
iptables -t nat -A PREROUTING -p udp --dst 111.111.111.111 -j DNAT --to-destination 66.66.66.66
测试无误,可以将IP Alias和iptables命令,写入到系统自启的脚本文件里面。ubuntu是这里
vi /etc/rc.local
参考博文
使用 MAC VLANs 创建 MAC 地址不同的虚拟网卡:另一种不同于IP alias的方法
分配多个公网IP到2台KVM机子上面:教你如何做iptables NAT
清华大学_金枪鱼之夜:坏人的 iptables小讲堂:非常清晰明了的iptables入门教程,社团形质的录像