5154

Good Luck To You!

修改网关和DNS的脚本

网关和DNS的脚本需用管理员权限,通过命令行或

修改网关和DNS的脚本

在网络配置中,网关和DNS(域名系统)起着至关重要的作用,网关是网络连接的枢纽,负责在不同网络之间转发数据包;而DNS则负责将域名解析为对应的IP地址,使我们能够通过域名访问互联网资源,我们可能需要根据网络环境的变化或特定需求来修改网关和DNS设置,本文将详细介绍如何编写一个用于修改网关和DNS的脚本,以实现自动化配置。

脚本编写前的准备

(一)了解操作系统

不同的操作系统具有不同的网络配置命令和脚本语法,以下是常见操作系统及其相关特点: |操作系统|网络配置命令|脚本语言| |||| |Windows|netsh命令用于配置网络接口、网关和DNS等|批处理脚本(.bat)或PowerShell脚本(.ps1)| |Linux|ifconfig(旧版本)或ip命令用于配置网络接口,route命令用于配置网关,修改DNS通常通过编辑/etc/resolv.conf文件|Bash脚本(.sh)| |macOS|与Linux类似,使用ifconfigroute命令及编辑/etc/resolv.conf文件|Bash脚本(.sh)|

(二)确定网关和DNS地址

在进行脚本编写之前,需要明确要设置的网关和DNS地址,网关地址通常是路由器在局域网内的IP地址,例如168.1.1,DNS地址可以选择公共DNS服务器,如谷歌的8.8.88.4.4,或者根据网络服务提供商的要求设置特定的DNS地址。

Windows系统下修改网关和DNS的脚本

(一)批处理脚本(.bat)

以下是一个示例批处理脚本,用于修改Windows系统的网关和DNS:

修改网关和DNS的脚本

@echo off
REM 设置网关
netsh interface ip set address name="Local Area Connection" source=static addr=192.168.1.100 mask=255.255.255.0 gateway=192.168.1.1
REM 设置DNS
netsh interface ip set dns name="Local Area Connection" source=static addr=8.8.8.8

在这个脚本中:

  • @echo off:关闭命令回显,使脚本执行时只显示命令的输出结果,而不显示命令本身。
  • REM:用于添加注释,对脚本进行说明,方便理解和维护。
  • netsh interface ip set address:用于设置网络接口的IP地址、子网掩码和网关。name="Local Area Connection"指定了要配置的网络接口名称,根据实际情况可能需要修改为其他接口名称,如无线网络接口名称等。source=static表示使用静态IP地址配置,addr=192.168.1.100是设置的本机IP地址,mask=255.255.255.0是子网掩码,gateway=192.168.1.1是网关地址。
  • netsh interface ip set dns:用于设置网络接口的DNS服务器地址,同样,name="Local Area Connection"指定了网络接口名称,source=static表示使用静态DNS配置,addr=8.8.8.8是设置的DNS服务器地址。

(二)PowerShell脚本(.ps1)

PowerShell提供了更强大的脚本功能和对象模型,以下是对应的PowerShell脚本示例:

# 设置网关
$interface = GetNetAdapter Name "Local Area Connection"
SetNetIPAddress InterfaceIndex $interface.InterfaceIndex IPAddress 192.168.1.100 PrefixLength 24 Gateway 192.168.1.1
# 设置DNS
SetDnsClientServerAddress InterfaceIndex $interface.InterfaceIndex ServerAddresses 8.8.8.8

在PowerShell脚本中:

  • $interface = GetNetAdapter Name "Local Area Connection":获取指定名称的网络接口对象,并将其赋值给变量$interface
  • SetNetIPAddress:用于设置网络接口的IP地址、子网掩码和网关。InterfaceIndex参数指定了网络接口的索引号,通过$interface.InterfaceIndex获取。IPAddress设置本机IP地址,PrefixLength设置子网掩码(24表示255.255.255.0),Gateway设置网关地址。
  • SetDnsClientServerAddress:用于设置网络接口的DNS服务器地址。InterfaceIndex指定网络接口索引号,ServerAddresses设置DNS服务器地址列表。

Linux系统下修改网关和DNS的脚本

(一)Bash脚本(.sh)

以下是一个示例Bash脚本,用于修改Linux系统的网关和DNS:

修改网关和DNS的脚本

#!/bin/bash
# 设置网关
sudo route add default gw 192.168.1.1
# 设置DNS
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
echo "nameserver 8.8.4.4" | sudo tee a /etc/resolv.conf

在这个脚本中:

  • #!/bin/bash:指定脚本解释器为Bash。
  • sudo route add default gw 192.168.1.1:使用route命令添加默认网关,sudo表示以超级用户权限执行该命令,因为修改网络路由需要管理员权限。
  • echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf:将DNS服务器地址写入/etc/resolv.conf文件。echo命令输出DNS服务器地址,sudo tee命令将输出内容写入文件并覆盖原有内容。tee命令会将标准输入复制到标准输出和指定文件,这里使用sudo确保有权限写入文件。
  • echo "nameserver 8.8.4.4" | sudo tee a /etc/resolv.conf:与上一行类似,但使用了a选项,表示追加内容到/etc/resolv.conf文件,这样可以添加多个DNS服务器地址。

脚本的执行与测试

(一)执行脚本

  • Windows批处理脚本:将批处理脚本文件(.bat)复制到需要执行的计算机上,双击运行即可,如果脚本需要在系统启动时自动执行,可以将其放置在系统的启动文件夹中(如C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup)。
  • Windows PowerShell脚本:将PowerShell脚本文件(.ps1)复制到需要执行的计算机上,在PowerShell中,需要设置执行策略允许运行脚本,可以通过以下命令设置执行策略为RemoteSigned(允许运行本地创建的脚本和从受信任的源下载的签名脚本):
    SetExecutionPolicy RemoteSigned

    在PowerShell窗口中导航到脚本所在的目录,输入脚本名称并回车即可执行脚本。

  • Linux Bash脚本:将Bash脚本文件(.sh)复制到Linux系统中,使用chmod +x命令为脚本文件赋予执行权限,
    chmod +x modify_network.sh

    在终端中输入脚本名称并回车即可执行脚本,如果需要以超级用户权限执行脚本(如修改网络配置时),可以在命令前加上sudo

    sudo ./modify_network.sh

(二)测试网络配置

执行脚本后,需要测试网络配置是否正确,可以通过以下方式进行测试:

修改网关和DNS的脚本

  • 检查IP地址和网关
    • Windows:在命令提示符中输入ipconfig命令,查看网络接口的IP地址、子网掩码和网关是否正确设置。
    • Linux:在终端中输入ifconfig(旧版本)或ip addr(新版本)命令,查看网络接口的IP地址和子网掩码,输入route n命令查看网关信息。
  • 检查DNS解析
    • Windows:在命令提示符中输入nslookup www.google.com命令,检查是否能正确解析域名为IP地址。
    • Linux:在终端中输入dig www.google.comnslookup www.google.com命令,检查DNS解析是否正常。

相关问题与解答

(一)问题一:如何在脚本中添加多个DNS服务器地址?

解答

  • Windows批处理脚本:可以使用多个netsh interface ip set dns命令来添加多个DNS服务器地址。
    @echo off
    REM 设置网关
    netsh interface ip set address name="Local Area Connection" source=static addr=192.168.1.100 mask=255.255.255.0 gateway=192.168.1.1
    REM 设置DNS
    netsh interface ip set dns name="Local Area Connection" source=static addr=8.8.8.8
    netsh interface ip set dns name="Local Area Connection" source=static addr=8.8.4.4
  • Windows PowerShell脚本:在SetDnsClientServerAddress命令中,将多个DNS服务器地址用逗号分隔放在ServerAddresses参数中。
    # 设置网关
    $interface = GetNetAdapter Name "Local Area Connection"
    SetNetIPAddress InterfaceIndex $interface.InterfaceIndex IPAddress 192.168.1.100 PrefixLength 24 Gateway 192.168.1.1
    # 设置DNS
    SetDnsClientServerAddress InterfaceIndex $interface.InterfaceIndex ServerAddresses 8.8.8.8,8.8.4.4
  • Linux Bash脚本:在向/etc/resolv.conf文件写入DNS服务器地址时,使用多个echo命令或者在一条echo命令中用换行符分隔多个地址。
    #!/bin/bash
    # 设置网关
    sudo route add default gw 192.168.1.1
    # 设置DNS
    echo "nameserver 8.8.8.8
    nameserver 8.8.4.4" | sudo tee /etc/resolv.conf

(二)问题二:如果脚本执行后网络出现异常,如何恢复原来的网络配置?

解答

  • Windows系统
    • 批处理脚本:如果在执行脚本前备份了原来的网络配置,可以通过再次运行一个批处理脚本来恢复配置,假设之前将原来的配置保存在backup.bat文件中,可以直接双击运行该文件来恢复配置,如果没有备份,可以尝试手动重新配置网络接口的IP地址、子网掩码、网关和DNS服务器地址,或者使用系统自带的网络修复工具(如在命令提示符中输入netsh winsock resetnetsh int ip reset命令重置网络设置)。
    • PowerShell脚本:同样,如果有备份的配置文件,可以通过编写相应的PowerShell脚本来恢复配置,如果没有备份,可以手动在网络适配器的属性中重新设置IP地址、子网掩码、网关和DNS服务器地址,也可以使用PowerShell命令重置网络设置,如ResetNetAdapter命令(可能需要以管理员权限运行)。
  • Linux系统
    • 如果之前备份了网络配置文件(如/etc/resolv.conf和网络接口的IP地址配置文件),可以将备份文件复制回原来的位置来恢复配置,假设备份的/etc/resolv.conf文件为resolv.conf.bak,可以使用以下命令恢复:
      sudo cp resolv.conf.bak /etc/resolv.conf

      对于网络接口的IP地址配置,可以使用ifconfigip命令重新设置。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年8月    »
123
45678910
11121314151617
18192021222324
25262728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.