Centos Stream 9 多IP 配置

邱秋 • 2024年08月17日 • 阅读:251 • linux centos

Centos Stream 9 配置多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"address{index}={_}/{ip_info['prefix']},{gateway}\n" index+=1 with open(conf_path, 'w') as f: f.write(conf)

执行脚本之后 得到 配置文件 ServerA.conf :

复制代码
address1=192.168.1.130/25,192.168.1.129 address2=192.168.1.131/25,192.168.1.129 address3=192.168.1.132/25,192.168.1.129 # 省略... address499=192.168.4.253/25,192.168.4.129 address500=192.168.4.254/25,192.168.4.129

查看网络接口

复制代码
ip route show

可以看到默认的网口为 eno1:

复制代码
default via 10x.xx.xx.1 dev eno1 onlink 10x.xx.xx.0/25 dev eno1 proto kernel scope link src 10x.xx.xx.x 10x.xx.xx.0/25 dev eno1 proto kernel scope link src 10x.xx.xx.x

此时, 我们到cd 到服务器 /etc/NetworkManager/system-connections/ 这个目录, 能看到以 .nmconnection 结尾的配置文件 一般就是以网口 如eno1 命名, 我们编辑这个文件eno1.nmconnection, 把上一步生成的内容 复制到对应的位置即可

复制代码
[connection] id=eno1 uuid=bd80f865-1819-32d6-80c7-c5ce2e79673e type=ethernet autoconnect-priority=-999 interface-name=eno1 [ethernet] [ipv4] address1=192.168.1.130/25,192.168.1.129 # 省略... address500=192.168.4.254/25,192.168.4.129 dns=8.8.8.8; method=manual [ipv6] addr-gen-mode=eui64 method=auto [proxy]

保存退出即可.

然后重启网络服务即可

复制代码
sudo systemctl restart NetworkManager

验证配置IP是否生效

复制代码
hostname -I

此时就能看到我们配置的500个IP.

我,秦始皇,打钱!