Linux脚本:设置永久IP地址
在Linux系统中,配置永久IP地址需要编辑网络配置文件。首先,打开终端,输入以下命令以编辑网络配置文件: ```bash sudo nano /etc/network/interfaces ``` 然后,找到与你要配置的网络接口相关的行(例如,eth0),并添加以下内容: ```bash iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 8.8.4.4 ``` 将上述内容中的`eth0`替换为你的网卡名称,将`address`、`netmask`、`gateway`和`dns-nameservers`替换为相应的值。最后,保存文件并
最近阿里云和腾讯云白嫖的两月左右,略有一点语言基础与了解。Linux各项配置挺繁琐、容错率低,加上设置IP可算的上常用项了。
各项配置甩手扑面,对新手来说,我是觉得有些强人所难了一些。为此,菜鸡源码做了一次一键简单配置IP脚本前做了个小调研,大家对Linux的IP配置是否觉得操作不便,上手不易?(出处: 吾爱破解论坛)。
准备工作
Linux 网卡配置比对
如果同时设置了动态获取IP和静态IP,那么静态IP将不再有效。系统会优先使用动态获取IP的配置。(试验机CentOS 8)
bootp 是一种比较老的协议,几乎已经过时了,dhcp 是 bootp 的一种扩展,与 bootp 兼容。
none 不禁用网卡,暂时也不用静态IP,如果指定静态IP就用静态的,我想是特殊装机环境。
系统出厂的ifconfig-eth0初始配置如下:
BOOTPROTO=dhcp协议类型:dhcpbootpnoneHWADDR=52:54:00:35:3a:acmac地址ONBOOT=yes启动时是否激活yes|noPERSISTENT_DHCLIENT=yes持久化选项,持续响应DHCP获取IPyes|no|1|0
TYPE=Ethernet 网卡类型为以太网
USERCTL=no 是否允许非root用户控制该设备 yes/no
nmcil添加IP、掩码、网关后,ifconfig-eth0生成的后续额外项
PROXY_METHOD=nonedai理关闭BROWSER_ONLY=nodai理只限于浏览器?yesornoIPADDR=172.24.10.150PREFIX=24也可以写为(METMASK=255.255.255.0但是二者一般只写其中的一种)GATEWAY=172.24.10.100DNS1=172.24.10.254DNS2=172.24.10.253DEFROUTE=yes默认路由开启,数据包的出口。IPV4_FAILURE_FATAL=no关闭错误检测IPV6INIT=noipv6关IPV6_DEFROUTE=yes开启ipv6默认路由设置IPV6_FAILURE_FATAL=no关闭错误检测NAME="Systemeth0"标识网络设备名称(基于nmcil管理)UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03唯一表示码,可通过uuidgeneth0生成
推测与分析
我在实验过程中发现 nmcli con mod "System eth0" ip4 10.10.10.10/24 gw4 10.10.10.1 重复输入几次的话,会一个网卡绑定多个IP。查阅51cto-快速上手Apache:如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,这样当用户请求访问不同的IP地址时,会访问到不同网站的页面资源。 再配置一遍动态DHCP时,难怪我就理解了,centos8只要存在DHCP项,下面的静态配置就失去了效果。
nmcli con mod "System eth0" ip4 10.10.10.10/24 gw4 10.10.10.1这条命令非常“智能”,我在实验过程中删掉了所有静态IP,在没重置网络的情况下,是能迅速恢复所有之前加入过的一条条静态IP配置的;反之,网络重载,就初始化了。
实际上多出来的这些参数是默认的,我们只保留 IPADDR、METMASK、GATEWAY、DNS2、DNS1 就好了。此外,Linux的网驱命名,NAME键值eth0可改为其他的命名,更改文件:/etc/udev/rules.d/70-persistent-net.rules
成形代码与效果图
基本上都是边学习,边分析的写代码,所以注释会很多。写源码时的网卡配置比对工作与查阅的资料,我单独从注释里拎出来,也方便大家查阅。
#**************调试代码************************#cat/etc/sysconfig/network-scripts/ifcfg-eth0#nmclicmod"Systemeth0"\#ip4172.24.10.150/24\#gw4172.24.10.100\#ipv4.dns172.24.10.254\#ipv4.methodmanualautoconnectyes#rm-rf~/.ssh/known_hosts&&rm-rf~/.ssh/known_hosts.old#echo"192.168.0.1255.255.255.0192.168.0.11">${HOMEPATH}add_ip_net.txt#echo"192.168.0.1,255.255.255.0,192.168.0.11">${HOMEPATH}add_ip_net.txt#echo"192.168.0.1/24192.168.0.11">${HOMEPATH}add_ip_net.txt#************************************************#**********开始配置network-scripts/ifcfg-eth0*******************echo-e"注意,该脚本适用于个人便利性及新手使用。\n"#原则上是适配centos8的,为了一定程度上的便利,将从networkmanager抓取设备名。#获取首行的网卡设备,提取到网卡设备别名。#ifconfig-s、netstat-i显示网卡清单#nmclidevice|awk'NR==2{print$4,$5,$6}'a_eth=$(nmclidevice|awk'NR==2{print$1}')#sed检查文本是否存在关键字,有则删除行sudosed-i'{/IPADDR=/d;/GATEWAY=/d;/PREFIX=/d;/METMASK=/d;}'"/etc/sysconfig/network-scripts/ifcfg-$a_eth"#sed匹配“BOOTPROTO=dhcp”,整行替换sudosed-i's/BOOTPROTO=dhcp/BOOTPROTO=none/g'"/etc/sysconfig/network-scripts/ifcfg-$a_eth"echo-e"支持192.168.0.1/24格式,可空格或逗号分段:IP子网掩码网关\n"read-p"请输入IP、子网掩码、网关:"add_ip_net#传入到文本进行分割取值echo"$add_ip_net">${HOMEPATH}add_ip_net.txtif[!"$(cat${HOMEPATH}add_ip_net.txt|grep'/')"];thena_ip=$(cat${HOMEPATH}add_ip_net.txt|awk-F"[,'']"'{print$1}')a_mask=$(cat${HOMEPATH}add_ip_net.txt|awk-F"[,'']"'{print$2}')a_gateway=$(cat${HOMEPATH}add_ip_net.txt|awk-F"[,'']"'{print$3}')#插入sudoecho"IPADDR=$a_ipMETMASK=$a_maskGATEWAY=$a_gateway">>"/etc/sysconfig/network-scripts/ifcfg-$a_eth"elsea_ip=$(cat${HOMEPATH}add_ip_net.txt|awk-F"[,/'']"'{print$1}')a_prefix=$(cat${HOMEPATH}add_ip_net.txt|awk-F"[,/'']"'{print$2}')a_gateway=$(cat${HOMEPATH}add_ip_net.txt|awk-F"[,/'']"'{print$3}')#插入sudoecho"IPADDR=$a_ipPREFIX=$a_prefixGATEWAY=$a_gateway">>"/etc/sysconfig/network-scripts/ifcfg-$a_eth"firm-rf${HOMEPATH}add_ip_net.txtsystemctlrestartnetworkecho"修改成功。小推荐:yuminstall-yipcalc(子网掩码换算器)"echo'若将网络设置成自动获取,输入此条指令即可:nmcliconmod"Systemeth0"ipv4.methodauto'echo'若后续添加DNS,输入该指令生效:nmclicmod"Systemeth0"ipv4.dns1.1.1.1,223.5.5.5'