撰于 阅读 6

优化后的NAT回流方法:无线模块DIY与路由配置教程

在更新后的11.11版本中,针对无线模块DIY,特别是网卡、路由器、光猫DIY教程,以及小主机、软路由、旁路由分享的主题,我们优化了相关规则。方法二已被证明足够稳定,不再需要方法一。以下是两种实现NAT回流的方法,它们都依赖于通过telnet连接到光猫本机。请确保将IP和端口替换为实际使用的值。

方法一:通过另一台机器如Ubuntu服务器远程执行telnet命令,并设置定时任务每天执行或在路由器重启后执行。

  1. 安装expect:

    sudo apt-get update
    sudo apt-get install expect -y
  2. 编写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
  3. 赋予脚本执行权限:

    chmod +x telnet_script.expect
  4. 运行脚本:

    ./telnet_script.expect

方法二:通过光猫自带的openwrt执行telnet命令,但由于op无法安装expect插件,所以只能用nc命令执行。

  1. 根据教程进入光猫op环境。
  2. 进入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
  3. 赋予脚本权限:

    chmod 755 1.sh
  4. 尝试执行看是否成功:

    ./1.sh
  5. 最后添加到开机脚本里面:

    vi /etc/rc.local

    exit 0上面插入:

    sleep 10
    /root/1.sh

    添加延迟是防止脚本处理过快,telnet和网络服务还未启动,然后保存退出,重启测试即可。


评论已关闭