AX1800 路由器折腾记录

 

开启并固化ssh

参考其它教程

自动重启

每天 4:30 自动重启。

$ vi /userdisk/auto_reboot.sh
echo "[$(date)] Doing auto reboot" >> /userdisk/reboot.log
/sbin/reboot
$ crontab -e
30 4 * * * /userdisk/auto_reboot.sh

端口映射

目标:公网访问 29182 -> 22,29188 -> 80,支持 IPv4 / IPv6。

结果:

  • IPv6:教育网内外均可使用2001:DA8:8000::/482403:d400::/32下的 IPv6 地址访问。
  • IPv4:交大校园网内可使用111.186.0.0/19下的 IPv4 地址访问,非交大校园网不可访问。

配置

允许路由器管理员页面接受外部连接

$ vi /etc/nginx/miwifi-webinitrd.conf
找到 set $finalvar "$canproxy $isluci";
在它的上一句插入 set $isluci "1";

IPv4

插入/etc/config/firewall末尾:

config redirect 'MIWEBATWAN'
        option src 'wan'
        option src_dport '29188'
        option target 'DNAT'
        option dest_port '80'
        option proto 'tcp'

config redirect 'MISSHATWAN'
        option src 'wan'
        option src_dport '29182'
        option target 'DNAT'
        option dest_port '22'
        option proto 'tcp'

重启防火墙:

/etc/init.d/firewall restart

IPv6

为nginx补充IPv6上的监听:

$ vi /etc/nginx/nginx.conf
listen       80;
listen       [::]:80;
listen       8098;
listen       [::]:8098;
$ /usr/sbin/nginx -s reload

如果希望映射后的端口和本机监听的端口一致,直接将下面两条规则加入/etc/config/firewall即可。

config rule
    option name 'Allow-IPv6-HTTP'
    option src 'wan'
    option dest_port '80'
    option proto 'tcp'
    option family 'ipv6'
    option target 'ACCEPT'

config rule
    option name 'Allow-IPv6-SSH'
    option src 'wan'
    option dest_port '22'
    option proto 'tcp'
    option family 'ipv6'
    option target 'ACCEPT'

否则,不要添加以上两条规则,而是使用ip6tables命令手动实现转发。

$ vi /etc/firewall.user

# 清理
ip6tables -t mangle -D PREROUTING -p tcp --dport 29188 -j MARK --set-mark 0x80 2>/dev/null
ip6tables -t nat -D PREROUTING -p tcp --dport 29188 -j REDIRECT --to-ports 80 2>/dev/null
ip6tables -D input_rule -p tcp --dport 80 -m mark --mark 0x80 -j ACCEPT 2>/dev/null

# 在包进入 NAT 前打上 0x80 的内核标记
ip6tables -t mangle -I PREROUTING -p tcp --dport 29188 -j MARK --set-mark 0x80
# 执行端口转发
ip6tables -t nat -I PREROUTING -p tcp --dport 29188 -j REDIRECT --to-ports 80
# 在 INPUT 链仅放行带有 0x80 标记的发往 80 端口的包
ip6tables -I input_rule -p tcp --dport 80 -m mark --mark 0x80 -j ACCEPT


ip6tables -t mangle -D PREROUTING -p tcp --dport 29182 -j MARK --set-mark 0x22 2>/dev/null
ip6tables -t nat -D PREROUTING -p tcp --dport 29182 -j REDIRECT --to-ports 22 2>/dev/null
ip6tables -D input_rule -p tcp --dport 22 -m mark --mark 0x22 -j ACCEPT 2>/dev/null

ip6tables -t mangle -I PREROUTING -p tcp --dport 29182 -j MARK --set-mark 0x22
ip6tables -t nat -I PREROUTING -p tcp --dport 29182 -j REDIRECT --to-ports 22
ip6tables -I input_rule -p tcp --dport 22 -m mark --mark 0x22 -j ACCEPT

两种方案完成后均要/etc/init.d/firewall restart

自动给iOS应用续签

TODO