问题
在实际网络搭建过程中,大家有可能会遇到在局域网范围内,在自己本机上搭建一个网站或者应用时,其他设备通过本机的IP地址无法访问的问题,这个问题可以通过设置IP映射来解决,但是通过netsh interface命令设置的IP映射,在机器重启后会失效,本博客主要讲述从各个方面更有效解决这个问题的一种方法。
方法
设置白名单
对于很多网站或者应用而言,特别安全等级要求略高的网站或者应用,都会要求设置远程访问的白名单,如果你在本地搭建的网站或者应用有类似的安全设置,此时则需要将本地局域网的IP地址在对应网站或者应用进行设置。下面以本地搭建NextCloud云盘为例:
<?php
$CONFIG = array ('instanceid' => '************','passwordsalt' => '************','secret' => '************','trusted_domains' =>array (0 => 'localhost',1 => '192.168.0.245',),'datadirectory' => '/var/www/html/nextcloud/data','dbtype' => 'mysql','version' => '************','overwrite.cli.url' => '************','dbname' => 'nextcloud','dbhost' => '************','dbport' => '','dbtableprefix' => 'oc_','dbuser' => '************','dbpassword' => '************','mysql.utf8mb4' => true,'installed' => true,
);
设置防火墙的入站规则
通过"Win+R"快捷键打开 “运行”,输入“control”命令,打开控制面板
点击“Windows Defender 防火墙”
点击“高级设置”打开 高级安全 Windows Defender防火墙
点击“入站规则”,点击右侧的“新建规则”
选择“端口”
开放 80,443端口
余下的步骤,一直点击“下一页”,最后添加“规则名称”即可,最后点击“完成”。
设置IP映射并每次登录后生效
编写批处理脚本
@echo off
cd /d %~dp0
netsh interface portproxy delete v4tov4 listenport={监听端口} listenaddress={本地IP地址}
netsh interface portproxy add v4tov4 listenport={监听端口} listenaddress={本地IP地址} connectport=80 connectaddress=127.0.0.1
命名为xxxx.bat,并放置在本机指定的目录。
设置开机启动计划任务
通过"Win+R"快捷键打开 “运行”,输入“taskschd.msc”命令,打开任务计划程序
点击右侧面板"创建任务"按钮打开创建任务界面
设置“名称”,以及选中“只在用户登录时运行”和“使用最高权限运行”。
点击"触发器"Tab页,点击触发器页左下角的“新建”,设置登录时触发
点击"操作"Tab页,点击操作页左下角的“新建”,设置之前编写的批处理脚本文件
最后点击“确定”即可完成设置。
总结
上述方法并非最好的办法,但是该方法不用关闭防火墙,360安全卫士、360杀毒不会报警,至少对于我个人而言,现阶段是一个最好的解决办法,如果大家有更好的解决办法,请给我留言,谢谢!