多公網IP配置,你學會了嗎?
背景
面對某些客戶做視頻、網站類業務場景,一部分機器會因為流量過大,導致單個網卡流量打滿,所以需要配置多個網卡,每個網卡配置一個公網IP地址,一般來說,eth0配置一個公網IP,eth1配置一個公網IP+一個內網IP。
聲明:由于業務需要綁定雙網卡的同時,第一塊網卡還存在ipv6地址,故此centos8系統可以使用nmcli 命令行形式進行配置;centos6和7因版本bug不兼容,使用配置文件形式進行處理。
網絡拓撲圖:
一、centos8系統
01查看連接的網卡信息
nmcli con show
enp1s0f0 xxx ethernet enp1s0f0
enp1s0f1 xxx ethernet enp1s0f1
nmcli network #查看networkmanager是否接入網絡配置,如返回結果為enabled則表示接入
nmcli n #縮寫
接入networkmanager命令
nmcli n on
取消接入
nmcli n off
顯示networkmanager狀態
nmcli g s #這里直接用縮寫比較方便
查看當前網卡連接狀態(簡單來說就是你配置了幾塊在運行的網卡)
nmcli con show
刪除網卡
nmcli con del xxx(網卡名稱或uuid)
添加網卡
nmcli connection add ifname 網卡名 autoconnect yes type ethernet ipv4.addresses ip地址/子網掩碼 ipv4.gateway 網關
重啟網絡配置文件
nmcli con reload
重啟網卡
nmcli con up 網卡名
修改網卡配置信息:
# 修改指定網卡的ip地址和子網掩碼
nmcli connection modify 網卡名 ipv4.addresses ip地址/子網掩碼
# 修改指定網卡的ip地址和子網掩碼以及網關
nmcli connection modify 網卡名 ipv4.addresses ip地址/子網掩碼 ipv4.gateway 網關
# 修改指定網卡的ip地址和子網掩碼、網關以及DNS
nmcli connection modify 網卡名 ipv4.addresses ip地址/子網掩碼 ipv4.gateway 網關 ipv4.dns dns地址
# 添加第二個ip
nmcli connection modify eth1 +ipv4.addresses ip地址/子網掩碼
# 刪除第二個ip
nmcli connection modify eth1 -ipv4.addresses ip地址/子網掩碼
# 添加第二個DNS
nmcli connection modify eth1 +ipv4.dns dns地址
# 刪除第二個DNS
nmcli connection modify eth1 +ipv4.dns dns地址
# 修改為靜態配置,默認是 auto
nmcli c m eth1 ipv4.method manual
# 將 IPv6 禁用
nmcli c m ens22 ipv6.method disabled
# 開機啟動
nmcli c m ens22 connection.autoconnect yes
02刪除所有配置
(注意,此處會斷網,所以操作的時候對兩個網卡分別操作,或者在遠程控制臺操作)
nmcli con del xxx #第一塊網卡
nmcli con del xxx #第二塊網卡
注意:確認在云上的oss外網地址綁定的是第幾塊網卡,如果是第一塊網卡,建議先刪除第二塊網卡,等到第二塊網卡綁定成功后,遠程可以登陸,在對一塊網卡進行刪除操作
03新創建兩個網卡,其中網卡2包含兩個ip
(ipv4)
nmcli con add type ethernet con-name xxx ifname xxx ipv4.method manual ipv4.address 198.xxx/24 ipv4.gateway 198.xxx ipv4.dns 1.1.1.1
nmcli con add type ethernet con-name xxx ifname xxx ipv4.method manual ipv4.addresses 51.xxx/27,192.xxx/24 ipv4.dns 8.8.8.8
注意:這里ifname前后的網卡名稱并不一樣,不要寫錯了,要根據實際情況通過命令ip a查看具體網卡信息在操作
04對網卡2分別增加路由表以及對應策略路由
(+ 是新增加配置,-是減少配置,無符號這是替代)
nmcli con modify 網卡名 +ipv4.routes "192.168.0.0/16 192.168.xxx.1,0.0.0.0/0 網卡2ip地址 table=100 src=xxx"
nmcli con modify 網卡名 +ipv4.routing-rules "priority 100 from 51.xxx/27 table 100"
注意:這里的table 100 指的是(table_id) 路由表,如果不指定就會加入到默認路由表中
05加載配置
nmcli con reload
06重新激活對應的網卡
nmcli con up 網卡1名稱
nmcli con up 網卡2名稱
07查看默認路由信息
ip route show
192.168.0.0/16 via 192.168.xxx.1 dev xxx proto static metric 104
08查看路由表100的路由信息
ip route show table 100
default via 51.xxx dev 網卡2名稱 proto static src 網卡2ip地址 metric 104
51.xxx dev 網卡2名稱 proto static scope link src 網卡2ip地址 metric 104
09查看策略路由信息
ip rule show
100: from 51.xxx/27 lookup 100
10配置第一塊網卡 ipv6地址
[root@xxx network-scripts]# cat ifcfg-ethxx
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=198.xxx
PREFIX=24
GATEWAY=198.xxx
DNS1=1.1.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=xxx
UUID=xxx
DEVICE=xxx
ONBOOT=yes
NS1=2001:xxx
IPV6ADDR=xxx/64
IPV6INIT=yes
IPV6_DEFAULTGW=2001:xxx:00ff
11重啟網卡1
nmcli con reload
nmcli con up 網卡1名稱
12測試ipv6 地址是否生效
[root@xxx network-scripts]# ping6 2001:xxx:00ff
PING 2001:xxx:00ff(2001:xxx:ff) 56 data bytes
64 bytes from 2001:xxx:ff: icmp_seq=1 ttl=64 time=0.577 ms
64 bytes from 2001:xxx:ff: icmp_seq=2 ttl=64 time=0.534 ms
64 bytes from 2001:xxx:ff: icmp_seq=3 ttl=64 time=0.747 ms
^C
--- 2001:xxx:00ff ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2070ms
rtt min/avg/max/mdev = 0.534/0.619/0.747/0.094 ms
二、centos6和7系統
內?IP: 192.168.xxx
內??關: 192.168.xxx.1
公?ip: 15.xxx
公???: 255.255.255.192
公??關: 15.xxx
01配置eth1多ip,公網+內網 ip地址(ipv4)
cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=192.168.xxx
IPADDR1=15.xxx
NETMASK=255.255.255.0
NETMASK1=255.255.255.192
ONBOOT=yes
02配置路由(ipv4)
cat /etc/sysconfig/network-scripts/route-eth1
default via 15.xxx dev eth1 src 15.xxx table wan1
192.168.0.0/16 via 192.168.xxx.1
03配置路由策略(ipv4)
cat /etc/sysconfig/network-scripts/rule-eth1
from 15.xxx table wan1 pref 100
04eth0網卡增加IPv6配置
[root@xxx network-scripts]# cat ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=static
DEVICE=eth0
HWADDR=0C:xxx:44
ONBOOT=yes
STARTMODE=auto
TYPE=Ethernet
USERCTL=no
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
UUID=xxx
IPADDR=145.xxx
NETMASK=255.255.255.0
GATEWAY=145.xxx
DNS1=1.1.1.1
NS1=2001:41d0:xxx::1
IPV6ADDR=2001:xxx::/64
IPV6INIT=yes
#IPV6_DEFAULTGW=2001:xxxx:00ff #注釋掉ipv6網關
05配置eth0 ipv6路由
[root@xxx network-scripts]# cat route6-eth0
2001:xxxx:00ff dev eth0
default via 2001:xxxx:00ff
06關閉NetworkManager,重啟network
因centos6和7的系統和centos8系統使用nmcli 命令配置默認網關0.0.0.0/0 地址有bug,不支持/0掩碼,故關閉NetworkManager,使用network
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl restart network
07測試網卡配置是否生效
[root@xxx network-scripts]# ping6 2001:xxx:00ff
PING 2001:xxx:00ff (2001:xxx:00ff ) 56 data bytes
64 bytes from 2001:xxx:00ff: icmp_seq=1 ttl=64 time=0.904 ms
64 bytes from 2001:xxx:00ff: icmp_seq=2 ttl=64 time=1.24 ms
64 bytes from 2001:xxx:00ff: icmp_seq=3 ttl=64 time=0.670 ms
^C
--- 2001:xxx:00ff ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.670/0.940/1.246/0.236 ms
使用測試工具測試IPV6地址是否有效 :https://ipw.cn/ipv6ping/
三、總結
多公網IP的優勢主要包括:
提高了網絡安全性:多公網IP可以將不同的網絡設備分別使用不同的公網IP,從而增強了網絡安全性,也防止了黑客攻擊和網絡入侵。
保障了業務連續性:尤其是在做網站或者視頻類的業務場景,多公網IP極大的避免了當某個IP出現故障時,可以使用備用的公網IP,保障業務的連續性。
提高網絡質量:多公網IP可以更充分的分配網絡流量,從而減少網絡擁堵,提高用戶的觀看體驗。
便于管理:可根據不同的業務需求進行資源的分配和管理,比如視頻業務用IP1,音頻類業務用IP2,后續也方便運維開發等人員進行監控和維護。