在更新后的11.11版本中,针对无线模块DIY,特别是网卡、路由器、光猫DIY教程,以及小主机、软路由、旁路由分享的主题,我们优化了相关规则。方法二已被证明足够稳定,不再需要方法一。以下是两种实现NAT回流的方法,它们都依赖于通过telnet连接到光猫本机。请确保将IP和端口替换为实际使用的值。
方法一:通过另一台机器如Ubuntu服务器远程执行telnet命令,并设置定时任务每天执行或在路由器重启后执行。
安装expect:
sudo apt-get update sudo apt-get install expect -y
编写expect脚本:
创建一个名为telnet_script.expect
的文件,并添加以下内容:#!/usr/bin/expect -f set timeout 20 spawn telnet 192.168.2.1 23 expect "Login:" send "root\r" expect "Password:" send "Zte521\r" expect "#" send "iptables -t nat -D PREROUTING -i br0 -p tcp --dport 23333 -j DNAT --to-destination 192.168.2.30\r" expect "#" send "iptables -t nat -D PREROUTING -i br0 -p udp --dport 23333 -j DNAT --to-destination 192.168.2.30\r" expect "#" send "iptables -t nat -D POSTROUTING -d 192.168.2.30 -p tcp --dport 23333 -j MASQUERADE\r" expect "#" send "iptables -t nat -D POSTROUTING -d 192.168.2.30 -p udp --dport 23333 -j MASQUERADE\r" expect "#" send "iptables -t nat -A PREROUTING -i br0 -p tcp --dport 23333 -j DNAT --to-destination 192.168.2.30\r" expect "#" send "iptables -t nat -A PREROUTING -i br0 -p udp --dport 23333 -j DNAT --to-destination 192.168.2.30\r" expect "#" send "iptables -t nat -A POSTROUTING -d 192.168.2.30 -p tcp --dport 23333 -j MASQUERADE\r" expect "#" send "iptables -t nat -A POSTROUTING -d 192.168.2.30 -p udp --dport 23333 -j MASQUERADE\r" expect "#" send "exit\r" expect eof
赋予脚本执行权限:
chmod +x telnet_script.expect
运行脚本:
./telnet_script.expect
方法二:通过光猫自带的openwrt执行telnet命令,但由于op无法安装expect插件,所以只能用nc命令执行。
- 根据教程进入光猫op环境。
进入root文件夹创建脚本:
cd /root vi 1.sh
添加以下内容:
#!/bin/bash HOST="192.168.2.1" PORT="23" USER="root" PASS="Zte521" ( sleep 1 echo $USER sleep 1 echo $PASS sleep 3 echo "iptables -t nat -A PREROUTING -i br0 -p tcp --dport 23333 -j DNAT --to-destination 192.168.2.30" sleep 1 echo "iptables -t nat -A PREROUTING -i br0 -p udp --dport 23333 -j DNAT --to-destination 192.168.2.30" sleep 1 echo "iptables -t nat -A POSTROUTING -p tcp -s 192.168.2.0/24 -o br0 --dport 23333 -j MASQUERADE" sleep 1 echo "iptables -t nat -A POSTROUTING -p udp -s 192.168.2.0/24 -o br0 --dport 23333 -j MASQUERADE" sleep 1 echo "exit" ) | nc $HOST $PORT
赋予脚本权限:
chmod 755 1.sh
尝试执行看是否成功:
./1.sh
最后添加到开机脚本里面:
vi /etc/rc.local
在
exit 0
上面插入:sleep 10 /root/1.sh
添加延迟是防止脚本处理过快,telnet和网络服务还未启动,然后保存退出,重启测试即可。
评论已关闭