在Linux系统中,修改IP地址、DNS和网关通常是在网络接口配置文件中进行的。具体操作取决于你使用的Linux发行版。以下是一些常见的方法,以CentOS/RHEL和Ubuntu为例:
CentOS/RHEL 7及更高版本
使用nmcli或直接编辑/etc/sysconfig/network-scripts/ifcfg-ethX文件。
使用nmcli:
#!/bin/bash
# 设置变量
INTERFACE="eth0"
IP_ADDRESS="192.168.1.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS_SERVERS="192.168.1.1 8.8.8.8"
# 修改IP地址和子网掩码
nmcli connection modify $INTERFACE ipv4.addresses $IP_ADDRESS/$NETMASK
# 修改网关
nmcli connection modify $INTERFACE ipv4.gateway $GATEWAY
# 修改DNS服务器
nmcli connection modify $INTERFACE ipv4.dns $DNS_SERVERS
# 重启网络服务使更改生效
nmcli connection down $INTERFACE
nmcli connection up $INTERFACE
直接编辑配置文件:
#!/bin/bash
# 设置变量
INTERFACE="eth0"
IP_ADDRESS="192.168.1.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS_SERVERS="192.168.1.1 8.8.8.8"
# 编辑配置文件
sed -i "s/^IPADDR=.*/IPADDR=$IP_ADDRESS/" /etc/sysconfig/network-scripts/ifcfg-$INTERFACE
sed -i "s/^PREFIX=.*/PREFIX=$(echo $NETMASK | awk '{print 32 - (length($0) - length(sub(/./,"",$0))) * 8}')/" /etc/sysconfig/network-scripts/ifcfg-$INTERFACE
sed -i "s/^GATEWAY=.*/GATEWAY=$GATEWAY/" /etc/sysconfig/network-scripts/ifcfg-$INTERFACE
# 添加DNS服务器到resolv.conf
echo "nameserver $DNS_SERVERS" > /etc/resolv.conf
# 重启网络服务使更改生效
service network restart
Ubuntu
使用netplan工具。
创建或编辑/etc/netplan/01-netcfg.yaml:
#!/bin/bash
# 设置变量
INTERFACE="eth0"
IP_ADDRESS="192.168.1.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS_SERVERS="192.168.1.1 8.8.8.8"
# 创建或编辑netplan配置文件
cat <<EOF > /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
$INTERFACE:
dhcp4: no
addresses: [$IP_ADDRESS/$(echo $NETMASK | awk '{print 32 - (length($0) - length(sub(/./,"",$0))) * 8}') ]
gateway4: $GATEWAY
nameservers:
addresses: [$DNS_SERVERS]
EOF
# 应用netplan配置
netplan apply