ProxmoxVE(pve)里设置阿里云DDNS动态ipv6,互联网访问家庭pve

  • 安装ifconfig

    apt-get install net-tools

    然后用ifconfig命令查看自己的ipv6地址:

    root@pve:~# ifconfig vmbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.3.16 netmask 255.255.255.0 broadcast 192.168.3.255 inet6 240e:335:5a01:bc20:1290:27ff:fee9:f623 prefixlen 64 scopeid 0x0<global> inet6 fe80::1290:27ff:fee9:f623 prefixlen 64 scopeid 0x20<link> ether 10:90:27:e9:f6:23 txqueuelen 1000 (Ethernet) RX packets 107758 bytes 10287539 (9.8 MiB) RX errors 0 dropped 7 overruns 0 frame 0 TX packets 125186 bytes 24211909 (23.0 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    我的ipv6为240e:335:5a01:bc20:1290:27ff:fee9:f623

  • 用自己pve的ipv6先试着访问(不要用我的,要用自己的):https://[240e:335:5a01:bc20:1290:27ff:fee9:f623]:8006能访问就不能这一步。不能访问就用这一步。设置ipv6能够访问pve,先用route -6命令查看ipv6分配:

    root@pve:~# route -6 Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If ip6-localhost/128 [::] U 256 2 0 lo 240e:335:5a01:bc20::/64 [::] UAe 256 2 0 vmbr0 fe80::/64 [::] U 256 1 0 vmbr0 [::]/0 fe80::1 UGDAe 1024 4 0 vmbr0 ip6-localhost/128 [::] Un 0 7 0 lo 240e:335:5a01:bc20::/128 [::] Un 0 3 0 vmbr0 240e:335:5a01:bc20:1290:27ff:fee9:f623/128 [::] Un 0 4 0 vmbr0 fe80::/128 [::] Un 0 3 0 vmbr0 fe80::1290:27ff:fee9:f623/128 [::] Un 0 4 0 vmbr0 ip6-mcastprefix/8 [::] U 256 3 0 vmbr0 [::]/0 [::] !n -1 1 0 lo 

    注意第4行显示: 240e:335:5a01:bc20::/64,然后用代码:

    ip -6 ro add 240e:335:5a01:bcff::/64 dev vmbr0 ip -6 ro add default via 240e:335:5a01:bcff:ff:ff:ff:ff dev vmbr0

    注意前四组地址的变化,第四组末两位变成ff,后面都是ff ,再编辑:/etc/sysctl.conf文件:

    vi /etc/sysctl.conf

    在末尾加上下面几行(如果没有下面几行的话):

    #开启bbr,内核需要是 4.9 以上,可以使用 uname -r 命令查看 net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr # 开启 ipv4 路由转发 net.ipv4.ip_forward=1 # 开启 ipv6 相关参数,其中 vmbr0 改成对应的主网口名称 net.ipv6.conf.vmbr0.accept_ra=2 # IPv6 Packet Forwarding and Proxy NDP net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.all.forwarding = 1 net.ipv6.conf.default.proxy_ndp = 1 net.ipv6.conf.all.proxy_ndp = 1 

    保存后,执行以下命令使设置生效 :

    sysctl -p

    重新启动电脑后,发现 https://[240e:335:5a01:bc20:1290:27ff:fee9:f623]:8006能访问了。

  • 将以下代码保存为/root/ipv6.sh

    #!/bin/sh aliddns_name=”你的域名前缀” aliddns_domain=”你的域名” aliddns_ak=”你的AccessKeyId” aliddns_sk=”你的AccessKeySecret” ####获取本地ipv6并与以前保存的ipv6比较 ##获取本地ipv6,我这边有两个ipv6,一个是240e开头的互联网能互相访问的, #一个是fe80开头的本地ipv6,应该舍弃 #得筛选出那个互联网能够互访的ipv6 ip=$(/sbin/ifconfig vmbr0 | grep 'inet6') #####获取本地保存的已经解析过的ipv6 #### oldip=$(cat /root/ip.txt 2>&1) echo 本地保存的旧ipv6是:$oldip if [ -n "$oldip" ] then echo "有旧ipv6$oldip" result=$(echo $ip | grep "$oldip") if [ -n "$result" ] then echo 跟以前保存的一样,没必要解析,退出。 exit 0 fi fi #将本机ipv6保存进数组 OLD_IFS="$IFS" IFS=" " array=([$ip]) IFS=$OLD_IFS ##取掉fe80开头的ipv6,留下能互访问的ipv6 for var in ${array[@]} do result=$(echo $var | grep "fe80") echo var是$var if [[ "$result" != "" ]] then echo 是内网ipv6退出 continue fi length=${#var} ipv6num=16 if [[ $length -gt $ipv6num ]]; then echo 是可以互访的ipv6,退出选择 ip=$var break else echo 长度太小 continue fi done ip=`echo $ip` echo $ip ###正确ip echo $ip >/root/ip.txt ##把ip替换到文件中 echo "数组元素个数为: ${#array[*]}" ###安装阿里云cli cg=$(aliyun version 2>&1) cg=${cg:0:1} if ! [[ "$cg" -gt 0 ]] 2>/dev/null then echo 下载阿里cli wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz echo 解压 tar xzvf aliyun-cli-linux-latest-amd64.tgz echo 复制到系统文件夹 cp aliyun /usr/local/bin echo cli初始化设置 aliyun configure set \ --profile akProfile \ --mode AK \ --region cn-hangzhou \ --access-key-id $aliddns_ak \ --access-key-secret $aliddns_sk echo 安装阿里云cli结束 fi ###得到解析id get_recordid() { grep -Eo '"RecordId": "[0-9]+"' | cut -d':' -f2 | tr -d '"' } ###向阿里云域名cli获取解析id query_recordid() { aliddns_record_id=`aliyun alidns DescribeDomainRecords --DomainName $aliddns_domain --RRKeyWord $aliddns_name --Type AAAA` echo -n $aliddns_record_id } ####修改解析 update_record() { aliyun alidns UpdateDomainRecord --RR $aliddns_name --RecordId $1 --Type AAAA --Value $ip } ###添加解析 add_record() { aliyun alidns AddDomainRecord --DomainName $aliddns_domain --RR $aliddns_name --Type AAAA --Value $ip } if [ "$aliddns_record_id" = "" ] then aliddns_record_id=`query_recordid | get_recordid` echo $aliddns_record_id fi if [ "$aliddns_record_id" = "" ] then aliddns_record_id=`add_record | get_recordid` echo "added record $aliddns_record_id" else update_record $aliddns_record_id echo "updated record $aliddns_record_id" fi

    运行:sh /root/ipv6.sh

    sh /root/ipv6.sh

    我的是https://pve.cpsj.pub:8006/能访问了。我的pve经常会关闭,只有需要时才远程控制打开。我打算写远程控制家里电脑的一系列文章。请关注我的博客。

  • 原文链接:https://blog.csdn.net/shyshyshy33/article/details/104440242?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168466843816800182184030%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=168466843816800182184030&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-22-104440242-null-null.blog_rank_default&utm_term=NAS%E3%80%81%E7%BE%A4%E6%99%96%E3%80%81%E9%98%BF%E9%87%8C%E4%BA%91%E3%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E3%80%81%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E3%80%81ipv6%E3%80%81ddns%E3%80%81%E8%BD%BB%E9%87%8F%E7%BA%A7%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E9%93%81%E5%A8%81%E9%A9%AC%E3%80%81%E5%A8%81%E8%81%94%E9%80%9A%E3%80%81DSM%E3%80%81DSM6.0%E3%80%81%E7%BE%A4%E6%99%96nas%E3%80%81%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85%E3%80%81%E9%BB%91%E7%BE%A4%E6%99%96%E3%80%81docker%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81%E5%9F%9F%E5%90%8D%E6%B3%A8%E5%86%8C%E3%80%81%E5%AE%9D%E5%A1%94%E3%80%81%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E3%80%81nginx%E3%80%81frp%E3%80%81%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90

    © 版权声明
    THE END
    喜欢就支持一下吧
    点赞0 分享