欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

服务器配置

Linux配置永久IP地址脚本

服务器配置 我的站长站 2023-03-09 共124人阅读

最近阿里云和腾讯云白嫖的两月左右,略有一点语言基础与了解。Linux各项配置挺繁琐、容错率低,加上设置IP可算的上常用项了。

各项配置甩手扑面,对新手来说,我是觉得有些强人所难了一些。为此,我的站长站做了一次一键简单配置IP脚本前做了个小调研,大家对Linux的IP配置是否觉得操作不便,上手不易?(出处: 吾爱破解论坛)。

准备工作

Linux 网卡配置比对

如果同时设置了动态获取IP和静态IP,那么静态IP将不再有效。系统会优先使用动态获取IP的配置。(试验机CentOS 8)

bootp 是一种比较老的协议,几乎已经过时了,dhcp 是 bootp 的一种扩展,与 bootp 兼容。

none 不禁用网卡,暂时也不用静态IP,如果指定静态IP就用静态的,我想是特殊装机环境。

系统出厂的ifconfig-eth0初始配置如下:

BOOTPROTO=dhcp 协议类型: dhcp bootp none
HWADDR=52:54:00:35:3a:ac mac地址
ONBOOT=yes 启动时是否激活 yes | no
PERSISTENT_DHCLIENT=yes 持久化选项,持续响应DHCP获取IP yes|no|1|0

TYPE=Ethernet 网卡类型为以太网

USERCTL=no 是否允许非root用户控制该设备 yes/no

nmcil添加IP、掩码、网关后,ifconfig-eth0生成的后续额外项

PROXY_METHOD=none dai理关闭
BROWSER_ONLY=no dai理只限于浏览器?yes or no
IPADDR=172.24.10.150
PREFIX=24 也可以写为(METMASK=255.255.255.0但是二者一般只写其中的一种)
GATEWAY=172.24.10.100
DNS1=172.24.10.254
DNS2=172.24.10.253
DEFROUTE=yes 默认路由开启,数据包的出口。
IPV4_FAILURE_FATAL=no 关闭错误检测
IPV6INIT=no ipv6关
IPV6_DEFROUTE=yes 开启ipv6默认路由设置
IPV6_FAILURE_FATAL=no 关闭错误检测
NAME="System eth0" 标识网络设备名称 (基于nmcil管理)
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 唯一表示码,可通过uuidgen eth0 生成

推测与分析

我在实验过程中发现 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
# nmcli c mod "System eth0" \
# ip4 172.24.10.150/24 \
# gw4 172.24.10.100 \
# ipv4.dns 172.24.10.254 \
# ipv4.method manual autoconnect yes
# rm -rf ~/.ssh/known_hosts && rm -rf ~/.ssh/known_hosts.old
# echo "192.168.0.1 255.255.255.0 192.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/24 192.168.0.11" > ${HOMEPATH}add_ip_net.txt
#************************************************
#********** 开始配置 network-scripts/ifcfg-eth0 *******************
echo -e "注意,该脚本适用于个人便利性及新手使用。 \n"
# 原则上是适配centos 8的,为了一定程度上的便利,将从network manager抓取设备名。
# 获取首行的网卡设备,提取到网卡设备别名。
# ifconfig -s、netstat -i 显示网卡清单
# nmcli device |awk 'NR==2{print $4,$5,$6}'
a_eth=$(nmcli device |awk 'NR==2{print $1}')
# sed 检查文本是否存在关键字,有则删除行
sudo sed -i '{/IPADDR=/d;/GATEWAY=/d;/PREFIX=/d;/METMASK=/d;}' "/etc/sysconfig/network-scripts/ifcfg-$a_eth"
# sed 匹配 “BOOTPROTO=dhcp”,整行替换
sudo sed -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.txt
if [ ! "$(cat ${HOMEPATH}add_ip_net.txt|grep '/')" ]; then
a_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}')
# 插入
sudo echo "
IPADDR=$a_ip
METMASK=$a_mask
GATEWAY=$a_gateway
" >> "/etc/sysconfig/network-scripts/ifcfg-$a_eth"
else
a_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}')
# 插入
sudo echo "
IPADDR=$a_ip
PREFIX=$a_prefix
GATEWAY=$a_gateway
" >> "/etc/sysconfig/network-scripts/ifcfg-$a_eth"
fi
rm -rf ${HOMEPATH}add_ip_net.txt
systemctl restart network
echo "修改成功。小推荐:yum install -y ipcalc (子网掩码换算器)"
echo '若将网络设置成自动获取,输入此条指令即可:nmcli con mod "System eth0" ipv4.method auto'
echo '若后续添加DNS,输入该指令生效:nmcli c mod "System eth0" ipv4.dns 1.1.1.1,223.5.5.5'


相关专题
Linux
Linux
2022-11-28 14

Linux全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统.Linux是服务器最热门且安全的系统,是站长必备的知识点.我的站长站为大家整理了各种类型的Linux教...

相关推荐
  • Linux配置
  • IP地址
  • Linux配置永久IP地址脚本

    最近阿里云和腾讯云白嫖的两月左右,略有一点语言基础与了解。Linux各项配置挺繁琐、容错率低,加上设置IP可算的上常用项了。各项配置甩手扑面,对新手来说,我是觉得有些强人所难了一些。为此,我的站长站做了一次一键简单配置IP脚本前做了个小调研,大家对Lin...

    服务器配置 124 1年前
  • 利用LAMP一键包来配置一台Linux服务器

    LNMP一键安装包是什么?LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Aliyun/Amazon、Debian/Ubuntu/Raspbian/Deepin/Mint Linux VPS或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/...

    服务器配置 319 5年前
  • wdcp一键配置linux服务器环境教程

    自己下载一个PuTTY,这里分享个华军的PuTTY下载地址:http://www.onlinedown.net/soft/2186.htm打开后输入自己的Ip地址端口号默认是22会跳出一个yes 跟no界面,点击yes会进入一个类似cmd界面直接输入root,然后会提示你输入password(密码是隐藏没有显示的,密...

    服务器配置 247 5年前
  • 阿里云如何切换Window系统为Linux
    阿里云如何切换Window系统为Linux

    所有的服务器商后台都可以切换服务器系统,前提是你以购买正版系统,这里以阿里云切换Window系统为Linux为例,接下来是图文介绍:首先登陆阿里云,进入阿里云ECS控制台,进入需要更换操作系统的实例操作界面...

    服务器配置 286 4年前
  • Linux宝塔面板开启waf防火墙方法
    Linux宝塔面板开启waf防火墙方法

    宝塔面板在 6.x 之前的版本中自带了Nginx 防火墙功能(Nginx管理 > 过滤器),到了 6.x 之后为了推行收费版的防火墙插件,宝塔官方把这个免费的防火墙入口给隐藏了。今天,就来说说如何开启这个隐藏的 Ngi...

    宝塔面板 433 4年前
  • IP地址修改器V5.0.5.8版本,修复导入配置功能,增加生成默认网关功能
    IP地址修改器V5.0.5.8版本,修复导入配置功能,增加生成默认网关功能

    软件介绍IP地址修改器V5.0.5.8版本,修复导入配置功能,增加生成默认网关功能。由kn007大神开发分享,使用Autoit编写。IP地址修改器截图V5.0.5.8版本修复上一版本“导入配置”中附加IP数据逻辑遗漏。...

    软件分享 80 1年前
  • 最新IP地址修改器V5.0.5.5版
    最新IP地址修改器V5.0.5.5版

    软件介绍最新IP地址修改器V5.0.5.5版,工具使用Autoit编写,无广告,无需安装,打开即用,个人人为是目前最好用的IP地址修改工具。IP地址修改器截图更新历史IPTools 5.0.5.5:修复应用“子网掩码计算器”中...

    软件分享 45 1年前
  • DEDECMS调用访问者ip地址

    DEDECMS调用访问者ip地址,在需要的位置放以下代码{dede:php} $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; function get_rea...

    织梦cms教程 115 4年前
  • 利用php记录网站攻击者桌面照片和ip地址
    利用php记录网站攻击者桌面照片和ip地址

    利用php记录网站攻击者桌面照片和ip地址,可以记录IP,顺手偷拍攻击对象,看看他长啥样!因为事先已经有了IP记录平台,所以方便省事,直接开始研究偷拍随手写了偷拍页面前端,伪造的受攻击验证(将就看,毕竟只...

    php教程 170 4年前
  • 织梦CMS显示用户ip地址方法

    织梦CMS显示用户ip地址代码,在需要的位置放以下代码{dede:php} $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; function get_r...

    织梦cms教程 90 4年前