設置openwrt路由器的防火牆_允許從外網訪問內網的ipv6服務
轉載注明來源: 本文鏈接 來自osnosn的博客,寫於 2019-11-02.
參考文章:
現在家庭寬帶的運營商,都已經提供 ipv6 了。
當你撥號上網后,運營商給你的路由器分配一個 ipv6 的同時,還會給你分配一個 ipv6 的前綴。
這樣,你路由器后面的所有設備都會得到一個公網的 ipv6 地址。
但是,你會發現,內網的設備,雖然有公網ipv6地址,但無法從外網訪問它們。僅能從外網ping通它們。
這是因為路由器的缺省設置。為了保護內網設備,缺省沒有把內網設備暴露到公網上,僅僅允許從公網ping它們。
如果你內網有一台機器,提供了https或別的什么的服務,需要允許從公網訪問它。
就需要修改路由器防火牆的設置,允許從公網訪問這台機器的指定端口。
OpenWRT 的防火牆設置:
添加一個規則:
返回后,可以看到有一個"未命名的規則",編輯它:
按需設置:
- 內網設備的ipv6地址,
前半部分是ipv6前綴,是運營商分配的。重撥后會變化。
后半部分,如果不是eui64,就是隨機生成的,也會變。如果是eui64,則與mac地址相關,不會變化,除非換網卡。 - 如果整個ipv6都會變,防火牆規則就沒辦法寫了。除非全網放行(內網目標地址掩碼填
::/0
或any
)。 - 所以配置內網設備的ipv6地址為eui64,防火牆的內網目標地址掩碼填
::xxxx:xxxx:xxxx:xxxx/::FFFF:FFFF:FFFF:FFFF
, 這樣就比較安全了。
(ipv6地址掩碼比v4靈活,v6可以掩前面,也可以掩后面。v4就只能掩前面)
比如: 你的ipv6地址為,2408:ebcd:ebcd:ebcd:5678:5678:5678:5678
則目標地址掩碼填, 0:0:0:0:5678:5678:5678:5678/0:0:0:0:FFFF:FFFF:FFFF:FFFF
連續的 0 簡寫為兩個冒號,即,::5678:5678:5678:5678/::FFFF:FFFF:FFFF:FFFF
- 設置Linux的ipv6為eui64模式,請參考:(Linux ipv6 無狀態 設置為 eui64)
- 獲取本機ipv4/ipv6,更新ddns,請參考:(Linux中獲取本機的最新IPv6地址_更新ddns的腳本)
---end---