• 多公网IP配置

    背景

          面对某些客户做视频、网站类业务场景,一部分机器会因为流量过大,导致单个网卡流量打满,所以需要配置多个网卡,每个网卡配置一个公网IP地址,一般来说,eth0配置一个公网IP,eth1配置一个公网IP+一个内网IP。
    声明:由于业务需要绑定双网卡的同时,第一块网卡还存在ipv6地址,故此centos8系统可以使用nmcli 命令行形式进行配置;centos6和7因版本bug不兼容,使用配置文件形式进行处理。
    拓扑图:

     

    一、centos8系统

     
     

    0查看连接的网卡信息

    nmcli con show
    enp1s0f0  xxx  ethernet  enp1s0f0 
    enp1s0f1  xxx  ethernet  enp1s0f1 

    nmcli 命令是centos8网卡配置的常用命令,这里简单给大家介绍一下:

    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

    0配置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

    04 eth0网卡增加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=eth0UUID=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,后续也方便运维开发等人员进行监控和维护。
    «
    »
以专业成就每一位客户,让企业IT只为效果和安全买单

以专业成就每一位客户,让企业IT只为效果和安全买单