You need to enable JavaScript to run this app. 如何通过PHP/HTML提交表单修改Linux系统网卡接口的静态IP地址
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP/HTML提交表单修改Linux系统网卡接口的静态IP地址

网卡IP修改功能实现方案

1. 核心权限配置(必须先完成)

修改网卡属于Linux系统级操作,默认web服务运行用户(通常为www-data、apache、nginx)无对应权限,需要单独配置免密sudo权限,且要严格限制可执行命令范围,避免权限溢出:

  • 执行visudo编辑sudoers配置文件,添加如下内容(示例网卡为eth0/eth1,web运行用户为www-data,可根据实际情况替换):
www-data ALL=(ALL) NOPASSWD: /usr/bin/nmcli con mod eth0 ipv4.addresses *, /usr/bin/nmcli con up eth0, /usr/bin/nmcli con mod eth1 ipv4.addresses *, /usr/bin/nmcli con up eth1
  • 配置完成后先手动执行一次网卡修改命令,确认命令可正常生效后再进行后续开发。
    注意:不同发行版的网络管理工具不同,CentOS7+默认用NetworkManager的nmcli命令,Ubuntu20.04+默认用netplan,老版本Linux用ifcfg配置文件,可根据自己的系统替换对应可执行命令路径

2. 前端HTML页面代码

直接编写两个表单分别对应两个网卡,加基础IP格式校验:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>网卡IP配置工具</title>
</head>
<body>
    <h3>修改eth0网卡IP</h3>
    <form method="post" action="modify_ip.php">
        <input type="hidden" name="interface" value="eth0">
        <input type="text" name="ip" placeholder="格式示例:10.1.1.10/24" required pattern="((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\/(3[0-2]|[12]?\d)">
        <button type="submit">提交修改</button>
    </form>

    <h3>修改eth1网卡IP</h3>
    <form method="post" action="modify_ip.php">
        <input type="hidden" name="interface" value="eth1">
        <input type="text" name="ip" placeholder="格式示例:192.168.1.20/24" required pattern="((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\/(3[0-2]|[12]?\d)">
        <button type="submit">提交修改</button>
    </form>
</body>
</html>

输入IP必须带子网掩码后缀,否则网卡配置会失效

3. 后端PHP处理逻辑

编写modify_ip.php处理表单提交请求,严格做参数校验避免命令注入:

<?php
// 允许修改的网卡白名单,禁止放开其他网卡权限
$allow_interfaces = ['eth0', 'eth1'];
$interface = trim($_POST['interface'] ?? '');
$ip = trim($_POST['ip'] ?? '');

// 第一层校验:网卡合法性
if (!in_array($interface, $allow_interfaces)) {
    die("错误:不允许修改该网卡");
}
// 第二层校验:IP格式合法性(后端二次校验,避免绕过前端校验)
if (!preg_match('/((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\/(3[0-2]|[12]?\d)/', $ip)) {
    die("错误:IP格式不正确,请输入带掩码的合法IP,例如10.1.1.10/24");
}

// 执行修改命令(以下为nmcli示例,netplan/ifcfg方案可自行替换对应命令)
$exec_command = "sudo nmcli con mod {$interface} ipv4.addresses {$ip} ipv4.method manual && sudo nmcli con up {$interface}";
exec($exec_command, $output, $return_code);

if ($return_code === 0) {
    echo "修改成功:{$interface} 网卡新IP为 {$ip}";
} else {
    echo "修改失败,错误详情:" . implode("<br>", $output);
}
?>

4. 注意事项

  • 该功能仅可在内网可信环境使用,绝对禁止暴露到公网,建议额外加HTTP基础认证或登录校验限制访问
  • 如果你修改的是当前访问网页用的网卡IP,提交后会直接断开连接,需要用新IP重新访问页面
  • 不要放开web用户的全量sudo权限,仅配置需要用到的网卡修改命令即可

内容的提问来源于stack exchange,提问作者serolx2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 01:15:03