Centos 7 多IP 配置
Centos7 配置多IP
我有500个IP ,要绑定在同一台linux机器上, OS为Centos9 .
假如这500个IP分为4个C段.
192.168.1.128/25
192.168.2.128/25
192.168.3.128/25
192.168.4.128/25
通过计算我们可以得出 192.168.1.128/25
的网关为192.168.1.129
,掩码为255.255.255.128
,第一个可用IP为192.168.1.130
,最后一个可用IP为 192.168.1.254
, 那么可用IP为 125个 .
下面的pyhotn 脚本可以计算
import os
import ipaddress
def get_ip(ip: str):
# demo ip 198.23.190.202/29
# 定义网络
network = ipaddress.IPv4Network(ip, strict=False)
# 计算Netmask
netmask = network.netmask
# 计算Network Address
network_address = network.network_address
# 计算Broadcast Address
broadcast_address = network.broadcast_address
# 计算Gateway Address (通常是网络地址的下一个地址)
gateway_address = network_address + 1
# 计算First Usable Address (通常是网络地址的下一个地址)
first_usable_address = network_address + 1
# 计算Last Usable Address (广播地址的前一个地址)
last_usable_address = broadcast_address - 1
# 计算Usable Addresses
usable_addresses = list(network.hosts())
ip_list = list(map(lambda x: str(x), usable_addresses))
# 第一个是网关, 要干掉
ip_list.pop(0)
return {
"netmask": str(netmask), # 掩码
"gateway": str(gateway_address), # 网关
"usable_addresses": ip_list, # 可用IP列表
"first_usable_address": str(first_usable_address), # 第一个可用IP
"last_usable_address": str(last_usable_address), # 最后一个可用IP
"prefix": str(network.prefixlen), #掩码长度
}
假设我们有200台服务器 ,每台服务器要配置500个IP , 那么我们利用脚本计算:
import os
list_map = {
"ServerA": [
'192.168.1.128/25',
'192.168.2.128/25',
'192.168.3.128/25',
'192.168.4.128/25',
],
...
}
for key in list_map:
_list = list_map[key]
conf = ""
index = 1
for ip in _list:
conf_path = os.path.join(os.path.abspath('.'), 'racknerd_conf', f'{key}.conf')
ip_info = get_ip(ip)
gateway = ip_info['gateway']
ip_map = ip_info['usable_addresses']
for _ in ip_map:
conf += f"IPADDR{index}={_}\nPREFIX{index}={ip_info['prefix']}\n"
index += 1
with open(conf_path, 'w') as f:
f.write(conf)
执行脚本之后 得到 配置文件 ServerA.conf
:
IPADDR1=192.168.1.130
PREFIX1=25
IPADDR2=192.168.1.131
PREFIX2=25
# 省略...
IPADDR500=192.168.4.254
PREFIX500=25
查看网络接口
ip route show
可以看到默认的网口为 eno1:
default via 10x.xx.xx.1 dev eno1 proto static metric 100
10x.xx.xx.0/25 dev eno1 proto kernel scope link src 10x.xx.xx.x metric 100
10x.xx.xx.0/25 dev eno1 proto kernel scope link src 10x.xx.xx.x metric 100
此时, 我们到cd 到服务器 /etc/sysconfig/network-scripts
这个目录, 能看到以 ifcfg-
开头的配置文件 一般就是以网口 如eno1
命名,
我们编辑这个文件ifcfg-eno1
, 把上一步生成的内容 复制到对应的位置即可
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eno1"
UUID="606d2649-fab8-4fd9-886a-ed535b862cef"
DEVICE="eno1"
ONBOOT="yes"
IPADDR="192.168.8.210"
PREFIX="29"
GATEWAY="192.168.8.209"
DNS1="8.8.8.8"
# 直接加在这里
IPADDR1=192.168.1.130
PREFIX1=25
IPADDR2=192.168.1.131
PREFIX2=25
# 省略...
IPADDR500=192.168.4.254
PREFIX500=25
保存退出即可.
然后重启网络服务即可
sudo systemctl restart NetworkManager
# or
sudo systemctl restart network
验证配置IP是否生效
hostname -I
此时就能看到我们配置的500个IP.