大家知道,梅林固件中的WEB管理应用是不支持IPV6的。但是目前电信宽带基本都支持IPV6了,有些网友可能希望远程通过IPV6随时查看和修改K3路由器的配置。下面说一说具体的方法。大家琢磨一下,其实这个方法可以用于访问家里内网中的其他不支持IPV6的任何设备。
解决方案的核心是socat。用socat(梅林固件自带,位于/usr/sbin目录下,如果没有可以自己安装)做端口转发来实现。
1、设置socat 端口转发,并让其开机自启动
将如下命令放到开机启动脚本/jffs/script/firewall-start.sh(没有这个名字的脚本就自己创建一个,名字必须一致。自己新创建的话,注意要给脚本文件执行权限。这个脚本如果存在,将会在防火墙启动的时候自动执行)。
假设你的路由器内网IP地址为192.168.2.1,希望通过外网访问路由器8080端口来管理路由器,则可以在脚本中设置命令如下:
nohup /usr/sbin/socat TCP6-LISTEN:8080,reuseaddr,fork TCP4:192.168.2.1:80 >/dev/null 2>&1 &
执行这个脚本后,将会在路由器上启动一个IPV6监听端口8080,并建立这个端口到路由器内网ipv4地址80端口的映射。
你通过ipv6网络用http访问路由器的8080端口时,将自动转发到路由器内网的80端口上(路由器的管理地址)。
2、配置防火墙ipv6访问规则,允许远程通过ipv6访问路由器WAN口(一般是ppp0)。
梅林固件默认是禁止从WAN口访问路由器的,需要设置IPV6防火墙规则,这个规则也放到开机启动脚本/jffs/script/firewall-start.sh当中。命令如下:
ip6tables -I INPUT -i ppp0 -p tcp -m tcp --dport 8080 -j ACCEPT
另外,还要在K3路由器的防火墙设置页面,启用IPV6防火墙。不要管路由器管理界面上的防火墙的具体规则设置,没有用。只要将步骤2中的命令放到启动脚本中即可。
原则上,完成上述两步,重启路由器后。就可以通过ipv6网络远程管理路由器了。
3、IPV6动态域名让路由器管理更方便
当然,因为IPV6地址也是动态分配的,路由器重启后,IPV6地址会变化。要想方便管理路由器,还需要大家自行安装支持IPV6的动态域名解释,用域名来访问路由器。我自己用的是国外的dynv6.com动态域名解释服务,注册和使用非常方便,完全免费不花一分钱。(用腾讯dnspod和阿里DDNS,还要花几块钱买个最便宜的域名。)
这个网站上可以找到一个linux下自动更新IPV6地址的脚本示例,我参考这个脚本稍微更改了一下用到梅林固件中了。这个我会再发一个帖子给大家参考。
4、最后再多说两句
可以先用下面两条命令测试,测试通过后,再写入上面的自启动脚本。
ip6tables -I INPUT -i ppp0 -p tcp -m tcp --dport 8080 -j ACCEPT
socat TCP6-LISTEN:8080,reuseaddr,fork TCP4:192.168.2.1:80
脚本中几个特殊参数的含义:
1、nohup 意思是在系统后台不挂断地运行命令,退出终端也不会影响程序的运行。
2、>/dev/null 2>&1 意思是将nohup的日志输出全部重定向到虚拟设备/dev/null(nohup会自动输出运行日志到当前目录的 nohup.out 文件中,可以认为/dev/null是个无底洞,任何输入都会消失无踪),否则路由器的存储空间很容易被日志灌满。
3、最后一个& 表示让socat后台运行,否则一旦关闭当前终端窗口,进程就关闭了。
补充:添加权限chmod a+rx xxx.sh
来源:https://www.right.com.cn/forum/thread-4112473-1-1.html
如有冒犯,深表歉意,请及时联系站长删除。
大神,我梅林386的wan口不是ppp0,请问是br0还是vlan1这些呀?用ifconfig显示地址是192.168.2.1的这个是wan口是不?
在设置里看下wan口IP,然后ifconfig显示IP一致的应该是wan口的网卡名称了。
谢谢
我自己的r7000梅林386.4版本试了很久,script脚本开机不能自动运行。于是把那两行代码加入到了DDNS脚本中,得以解决问题。
今天试了下,华硕梅林改版也是不自动启动