华硕ac68u 畅游 IPV6 您所在的位置:网站首页 上海电信ipv6设置 华硕ac68u 畅游 IPV6

华硕ac68u 畅游 IPV6

2024-07-12 04:50| 来源: 网络整理| 查看: 265

ipv6时代

公网IP不再是稀缺资源,IPV6和IPV4最本质上的区别。大量可用的IP地址,抛弃了NAT那一套,全程走通告,不再需要DHCP。(PS:特殊场景仍然有DHCP6用途)

拥抱IPV6

以AC68U机器为例(梅林固件、其它魔改梅林固件同理),其它ASUS系列机器同理。

一、开启路由器V6支持

进入192.168.0.1(你路由器地址),

高级设置栏目/IPV6

[email protected]

然后开启IPV6支持

[email protected]

二、测试IPV6是否工作正常

打开测试IPV6

如图,这样就算成功了

[email protected] 有了IPV6可以做什么?

1.内网存储(私有网盘)

通过使用Cloudnext 等一系列开源私有网盘工具,我们可以搭建自己的内网存储

远程ssh

其它WEB服务(注:80、443端口是需要备案才能使用的,最好不要开放这两个端口出去;大部分时候开放了也不能使用)

其它需要使用公网IP的场景

IPV6与安全

开启了IPV6 给予了我们方便,同时也带来了一些安全隐患。我们需要使用ASUS固件上的防火墙来增加安全防护。

1.开启IPV6防火墙

未正确配置会导致服务不能使用

如图,我们把IPV6防火墙启用

[email protected]

2.防火墙配置

点击左侧高级设置-IPv6 找到 “内部网络 IPv6 地址” 选项,复制右边的制

得到如:

2401:8262:f80:5555::1

我们在这串地址后面加上/64

变成了 2401:8262:f80:5555::1/64

3.开放端口(得到了内网网段地址,我们就可以去开放端口了)

回到高级设置-防火墙,拉到最下面

[email protected]

做完之后,我们点击 “应用本页面设置”,就可以在防火墙开启的情况下,正常访问我们允许的端口号了。

进阶DDNS

ps:虽然我们有了公网IP,但家庭宽带仍然不是固定的。所以我们需要使用DDNS,来绑定我们的域名。

推荐使用cloudflare

我们通过每5min跑一个脚本,通过cloudflare的 api 去上报我们最新IPV6地址,达到我们始终能通过域名正确解析的目的。

以下是脚本

安装 cloudflare sdk

sudo pip install cloudflare # coding: utf-8 # by longbob import json import os import CloudFlare CACHE_PATH = os.path.dirname(os.path.abspath(__file__)) + '/cloudfile' ZONE_NAME = '你的域名 如 baidu.com' UPDATE_ZONE_NAME = '主机名+域名 如 www.baidu.com' TOKEN = '你的CloudFlare TOKEN' EMAIL = '你的CloudFlare 邮箱' dataFile = CACHE_PATH + '/data' cf = CloudFlare.CloudFlare(token=TOKEN, email=EMAIL, debug=True) def set_cloud_file_d_dns(ipv6, dns_record_id, zone_id): dns_records = [ {'name': UPDATE_ZONE_NAME, 'type': 'AAAA', 'content': ipv6, 'proxied': False, 'ttl': 120}, ] for dns_record in dns_records: r = cf.zones.dns_records.put(zone_id, dns_record_id, data=dns_record) print('更新完成') def get_cloud_file_info(ipv6): if os.path.exists(CACHE_PATH): if os.path.isfile(dataFile): # 存在缓存数据 直接使用 fptr = open(dataFile, 'r') body = json.loads(fptr.read()) fptr.close() return body else: # create cache os.mkdir(CACHE_PATH, 755) # update zone_info = cf.zones.get(params={'name': ZONE_NAME}) zone_id = zone_info[0]['id'] dns_records = cf.zones.dns_records.get(zone_id, params={'name': UPDATE_ZONE_NAME}) dns_record_id = dns_records[0]['id'] res = {'zone_id': zone_id, 'dns_record_id': dns_record_id, 'ipv6': dns_records[0]['content']} with open(dataFile, 'w+') as p: p.write(json.dumps(res)) return res def get_Local_ipv6_address(): res = os.popen('curl -6 ip.sb') return res.read().strip("\n") if __name__ == '__main__': ip = get_Local_ipv6_address() info = get_cloud_file_info(ip) if ip == info['ipv6']: print('nothing to do') exit() set_cloud_file_d_dns(ip, info['dns_record_id'], info['zone_id'])

添加脚本到定时任务(5分钟执行一次)

cru a up_ipv6_ddns "5/* * * * * python {你的脚本路径}" #如需要加入开机启动创建crontab echo "cru a up_ipv6_ddns \"5/* * * * * python {你的脚本路径}\" " > /jffs/scripts/services-start

这样,你就可以在有IPV6的情况下,始终通过域名访问到你的路由器了。

测试域名是否正常解析

ping6 xxx.xxx.com 自动更新防火墙规则

由于上面所述的原因,我们并没有IPV6固定IP,所以我们的 IPV6内网地址会发生变化(前4位);导致我们在开启了防火墙的情况,不能正常的访问。

需要安装bash

#安装bash opkg update && opkg install bash

把下面的规则模板内容存为一个文件,如 ip6tables.tmpl

ip6tables 规则模板内容

Generated by ip6tables-save v1.4.15 on Wed Feb 3 21:03:42 2021 *mangle :PREROUTING ACCEPT [45593:41792202] :INPUT ACCEPT [5649:685720] :FORWARD ACCEPT [39727:41006577] :OUTPUT ACCEPT [5721:778530] :POSTROUTING ACCEPT [45463:41808923] -A FORWARD -o ppp0 -m hl --hl-gt 30 -m hl --hl-lt 254 -j HL --hl-set 64 -A FORWARD -o ppp0 -m hl --hl-eq 254 -j HL --hl-set 255 COMMIT # Completed on Wed Feb 3 21:03:42 2021 # Generated by ip6tables-save v1.4.15 on Wed Feb 3 21:03:42 2021 *filter :INPUT ACCEPT [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [5721:778530] :NSFW - [0:0] :PControls - [0:0] :UPNP - [0:0] :logaccept - [0:0] :logdrop - [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i br0 -m state --state NEW -j ACCEPT -A INPUT -i lo -m state --state NEW -j ACCEPT -A INPUT -m state --state INVALID -j DROP -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p ipv6-nonxt -m length --length 40 -j ACCEPT -A INPUT -i br0 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p udp -m udp --sport 547 --dport 546 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 1 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 2 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 3 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 4 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 128 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 129 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 130 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 131 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 132 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 133 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 134 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 135 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 136 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 141 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 142 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 143 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 148 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 149 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 151 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 152 -j ACCEPT -A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 153 -j ACCEPT -A INPUT -j DROP -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i br0 -o ppp0 -j ACCEPT -A FORWARD -i br0 -o br0 -j ACCEPT -A FORWARD -m state --state INVALID -j DROP -A FORWARD -p ipv6-nonxt -m length --length 40 -j ACCEPT -A FORWARD -p ipv6-icmp -m icmp6 --icmpv6-type 1 -j ACCEPT -A FORWARD -p ipv6-icmp -m icmp6 --icmpv6-type 2 -j ACCEPT -A FORWARD -p ipv6-icmp -m icmp6 --icmpv6-type 3 -j ACCEPT -A FORWARD -p ipv6-icmp -m icmp6 --icmpv6-type 4 -j ACCEPT -A FORWARD -p ipv6-icmp -m icmp6 --icmpv6-type 128 -j ACCEPT -A FORWARD -p ipv6-icmp -m icmp6 --icmpv6-type 129 -j ACCEPT -A FORWARD -d {IPV6SUF}::/64 -p tcp -m state --state NEW -m tcp --dport {你需要开放的端口1} -j ACCEPT -A FORWARD -d {IPV6SUF}::/64 -p tcp -m state --state NEW -m tcp --dport {你需要开放的端口2} -j ACCEPT -A FORWARD -d {IPV6SUF}::/64 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A FORWARD -d {IPV6SUF}::/64 -p tcp -m state --state NEW -m tcp --dport {你需要开放的端口3} -j ACCEPT -A FORWARD -j DROP -A PControls -j ACCEPT -A logaccept -m state --state NEW -j LOG --log-prefix "ACCEPT " --log-tcp-sequence --log-tcp-options --log-ip-options -A logaccept -j ACCEPT -A logdrop -m state --state NEW -j LOG --log-prefix "DROP " --log-tcp-sequence --log-tcp-options --log-ip-options -A logdrop -j DROP COMMIT # Completed on Wed Feb 3 21:03:42 2021" > /j

自动更新防火墙规则脚本

#!/bin/bash # 更新ip6tables 局域网网段防火墙规则 # 防止因局域网内网IP ISP运营商给变化后 不能访问 # create date 2020/02/03 ip6tablesDumpFile="./ip6tables.dump" ip6addr=$(ifconfig | grep -E -o "\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}::1/64") while IFS=':' read -ra ADDR; do #取前4位 ip6suf="${ADDR[0]}:${ADDR[1]}:${ADDR[2]}:${ADDR[3]}" done /jffs/scripts/services-start

晚安!第一次发这么长的技术文。有不懂的的地方,欢迎留言。

欢迎关注我的个人博客



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有