配置IPv6公網地址DDNS並開放外網訪問端口


目前使用三大運營商寬帶服務都會下發公網IPv6地址,這樣我們想要在外網訪問家里的路由、NAS等設備就可以直接通過IPv6地址來訪問了。但是每次重新撥號后IPv6地址都會改變,而且IPv6的地址很長,這樣就引出了動態域名服務,即DDNS。

其實DDNS的原理就是將本地獲取到的公網IP地址告訴域名服務商,並且在IP地址發生變化時也會同步新的IP地址到域名服務器程序,這樣我們只需使用域名就可以隨時隨地去訪問家里的設備了。

為了安全起見,路由器的防火牆策略默認是禁止從外網主動訪問內網的設備的,我們需要將被訪問的設備上的服務對應的端口開放出來。

歸納起來其實就兩步:1)DDNS;2)開放端口。

下面我們就來實際操作一下吧

一、配置IPv6 DDNS

以下是兩種DDNS方法,任選其一即可

1.使用每步DDNS

首先去免費動態域名解析服務器IPV6內網穿透軟件監控源碼下載-青島每步 (meibu.com)這個網站注冊一個域名,如:xxxxxx.noip.cn,並且復制出注冊時設置的登陸密碼備用。

下載meibu.sh這個腳本,將第35行中xxxxxx.noip.cn和123456改為你自己申請的域名和登陸密碼。

 

將meibu.sh腳本使用WinSCP等工具上傳至需要做域名解析的設備中,此處以我的OpenWrt為例

SSH登陸設備

創建目錄

mkdir -p /usr/share/meibu

將腳本上傳至此目錄(/usr/share/meibu)

賦予腳本執行權限

chmod +x /usr/share/meibu/meibu.sh

執行腳本

/usr/share/meibu/meibu.sh

查看ip.txt文件內容

ll /usr/share/meibu
cat /usr/share/meibu/ip.txt

查看域名解析到的地址是否和ip.txt中的匹配

nslookup xxxxxx.noip.cn 8.8.8.8

如果兩個地址一致則表明解析成功

添加定時任務

crontab -e

添加以下內容

* * * * * /bin/sh /usr/share/meibu/meibu.sh

這樣每分鍾就會查詢一次IP地址,有變化時就將新的IP地址綁定到域名上

2.使用dynv6 DDNS

Free dynamic DNS for IPv6 (dynv6.com)這個網站注冊一下,使用郵箱確認(注:郵箱鏈接確認可能需要梯子)后登陸

dynv6這兒創建一個域名

 

創建好后切換到instructions標簽,如下圖,復制域名和token備用

 

下載dynv6.sh這個腳本文件

SSH登陸設備

創建目錄

mkdir -p /usr/share/dynv6

上傳腳本至/usr/share/dynv6目錄中

賦予腳本執行權限

chmod +x /usr/share/dynv6/dynv6.sh

輸入以下命令進行解析(注意將紅字部分替換為自己的token和域名)

token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /bin/sh /usr/share/dynv6/dynv6.sh xxxxxx.v6.navy

查看域名解析到的地址

nslookup xxxxxx.v6.navy 8.8.8.8
cat /usr/share/dynv6/.dynv6.addr6

兩個地址一致則域名解析成功

添加定時任務

crontab -e

添加以下內容

* * * * * token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /bin/sh /usr/share/dynv6/dynv6.sh xxxxxx.v6.navy

二、開放外網訪問端口

防火牆的設置都是在主路由上進行的,這里分別以主路由是Padavan和OpenWrt開放8088端口為例。

1.Padavan開啟IPv6外網訪問端口

(1)開啟路由器自身端口

ip6tables -A INPUT -p tcp --dport 8088 -j ACCEPT
ip6tables -A OUTPUT -p tcp --sport 8088 -j ACCEPT

(2)開啟局域網其他設備端口

ip6tables -A FORWARD -p tcp --dport 8088 -j ACCEPT

(3)開機自動開放端口

“高級設置”->“自定義設置”->“腳本”->“在防火牆規則啟動后執行:”最后添加以下內容

# 開啟路由器自身端口
ip6tables -A INPUT -p tcp --dport 8088 -j ACCEPT
ip6tables -A OUTPUT -p tcp --sport 8088 -j ACCEPT
# 開啟局域網其他設備端口
ip6tables -A FORWARD -p tcp --dport 8088 -j ACCEPT

點擊最下面的“應用本頁面設置”

2.OpenWrt開啟IPv6外網訪問端口

(1)開啟路由器自身端口

ip6tables -I INPUT -p tcp --dport 8088 -j ACCEPT
ip6tables -I OUTPUT -p tcp --sport 8088 -j ACCEPT

(2)開啟局域網其他設備端口

ip6tables -A zone_wan_forward -p tcp -m tcp --dport 8088 -m comment --comment Allow-8088 -j zone_lan_dest_ACCEPT

或者

ip6tables -I FORWARD -p tcp --dport 8088 -j ACCEPT

(3)開機自動開放端口

vim /etc/rc.local

在exit 0上面添加

# 開啟路由器自身端口
ip6tables -I INPUT -p tcp --dport 8088 -j ACCEPT
ip6tables -I OUTPUT -p tcp --sport 8088 -j ACCEPT
# 開啟局域網其他設備端口
ip6tables -I FORWARD -p tcp --dport 8088 -j ACCEPT

保存退出

附:使用socat轉發內網IPv4服務

如果不是訪問局域網NAS這類對傳輸速度要求特別高的設備,可以在主路由上使用socat來進行轉發,這樣就只需要在主路由上配置一次DDNS,然后想訪問局域網哪個設備只需配置socat轉發並開啟主路由自身的外網訪問端口即可,如外網訪問主路由的IPv6 8088端口時轉發至內網設備的192.168.2.110:80這個服務,只需執行以下命令即可:

nohup socat TCP6-LISTEN:8088,reuseaddr,fork TCP4:192.168.2.110:80 > /dev/null 2>&1 &

開機自動執行轉發

Padavan固件:找到“高級設置”->“自定義設置”->“腳本”->“在路由器啟動后執行:”,添加以下命令

nohup socat TCP6-LISTEN:8088,reuseaddr,fork TCP4:192.168.2.110:80 > /dev/null 2>&1 &

點擊最下面的“應用本頁面設置”

OpenWrt固件:將上面的命令添加到/etc/rc.local文件(exit 0上面)中,保存退出。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM