设置静态IP


设置静态IP

1、centos7

  1. 打开终端并以root用户身份登录。
  2. 编辑网络配置文件。使用以下命令打开网络配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-eth0

注意:如果您的网络接口不是eth0,请相应地更改文件名。

  1. 在文件中,找到并修改以下行:
BOOTPROTO=static
   ONBOOT=yes

将BOOTPROTO的值更改为static,将ONBOOT的值更改为yes。

  1. 添加以下行来定义您的IP地址、子网掩码、网关和DNS服务器:
IPADDR=your_ip_address
   NETMASK=your_netmask
   GATEWAY=your_gateway
   DNS1=your_dns_server1
   DNS2=your_dns_server2

将"your_ip_address"替换为您想要设置的固定IP地址,将"your_netmask"替换为子网掩码,将"your_gateway"替换为网关的IP地址,将"your_dns_server1"和"your_dns_server2"替换为您的DNS服务器的IP地址。

  1. 保存并关闭文件。
  2. 重启网络服务以使更改生效。使用以下命令重启网络服务:
systemctl restart network

现在您的CentOS 7系统应该已经设置了固定IP地址。

请注意,这些步骤假设您正在使用以太网接口eth0。如果您使用的是其他网络接口,请相应地更改文件名和接口名称。

脚本自动修改

#!/usr/bin/env python
# -*- coding:utf8 -*-

import os
import re

local_ipv4_checker = re.compile(
    "(?:(?:10(?:(?:\\.1[0-9][0-9])|(?:\\.2[0-4][0-9])|(?:\\.25[0-5])|(?:\\.[1-9][0-9])|(?:\\.[0-9])))|(?:172("
    "?:\\.(?:1[6-9])|(?:2[0-9])|(?:3[0-1])))|(?:192\\.168))(?:(?:\\.1[0-9][0-9])|(?:\\.2[0-4][0-9])|(?:\\.25["
    "0-5])|(?:\\.[1-9][0-9])|(?:\\.[0-9])){2}")


def configure_ifcfg_ens33():
    # 获取本机以192开头的IP地址
    def get_local_ip():
        ips = os.popen("ip -o -f inet addr show | awk '$4 ~ /192/ {print $4}'").readlines()
        return ips[0].strip().split('/')[0]

    ip = get_local_ip()
    ip_prefix = ip[:ip.rfind(".") + 1]
    if IP is not None:
        ip = ip_prefix + IP
    if not local_ipv4_checker.match(ip):
        print("IP地址不合法:%s,放弃修改" % ip)
        return
    backup_file = "/etc/sysconfig/network-scripts/ifcfg-%s.bak" % interface_name
    exist = os.path.exists(backup_file)
    if exist and not force:
        print("备份文件已存在,不再执行")
        return
    if not exist:
        # 备份原始文件
        os.system("cp /etc/sysconfig/network-scripts/ifcfg-%s %s" % (interface_name, backup_file))
        print("备份成功,原始文件已保存为%s" % backup_file)
    # 读取原始文件内容
    with open(backup_file, "r") as f:
        content = f.read()
    # 修改BOOTPROTO为static
    content = re.sub(r"BOOTPROTO=dhcp", "BOOTPROTO=static", content)
    # 追加IPADDR、NETMASK、GATEWAY和DNS1
    content += "\nIPADDR=%s\n" % ip
    content += "NETMASK=255.255.255.0\n"
    content += "GATEWAY=%s.1\n" % ip_prefix
    content += "DNS1=%s.1\n" % ip_prefix
    content += "DNS2=223.5.5.5\n"

    # 修改文件内容
    with open("/etc/sysconfig/network-scripts/ifcfg-ens33", "w") as f:
        f.write(content)
    print("修改成功,修改后的文件为/etc/sysconfig/network-scripts/ifcfg-%s" % interface_name)


if __name__ == "__main__":
    IP = None
    force = False
    interface_name = "ens33"
    configure_ifcfg_ens33()
    print("配置网卡成功")
    if os.system("service  network restart"):
        print("重启网络服务失败")
    else:
        print("重启网络服务成功")

2、ubuntu

测试使用的是ubuntu 20.04.6

研究了半天,ubuntu使用netplan管理网络

参考:

https://ubuntu.com/server/docs/network-configuration

https://www.51cto.com/article/721393.html

先备份原来的设置

mv /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak

创建新的配置

cat >/etc/netplan/99_config.yaml <<'EOF'
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:   # 注意这个是网卡名称
      addresses:
        - 192.168.31.90/24
      routes:
        - to: default
          via: 192.168.31.1
      nameservers:
              #search: [mydomain, otherdomain]
          addresses: [114.114.114.114, 192.168.31.1]
EOF

原文中有个search字段,我不知道是啥,就注释了,感觉也没影响

然后执行

sudo netplan apply

生效!一开始,我没有移除原有的配置,执行后网卡获取到了两个IP。