讓 Squid 使用通過隧道連接的 IPv6 /48 塊
我有一個執行 Squid 的 Ubuntu 14.05 伺服器。它通過 Hurricane Electric 的服務提供 IPv6 連接。我正在嘗試從他們提供的 /48 讓每個 IP 都可用於伺服器。
我進行了大量搜尋,但沒有找到可行的解決方案。如果我在 /etc/network/interfaces 中單獨設置 IP,我可以使用 /48 中的任何地址,儘管嘗試全面添加 /48 沒有奏效。這是我的工作會議。
auto he-ipv6 iface he-ipv6 inet6 v4tunnel address 2xxx:xxx:xxx:0:0:0:0:1 netmask 64 endpoint xx.xx.xx.xx local xx.xx.xx.xx ttl 255 gateway 2xxx:xxx:xxxx:xxxx::1
在嘗試分配 /48 時,我嘗試將其附加到介面
post-up ip -6 addr add 2001:xx:xx::/48
這個問題建議使用 ipv6 非本地綁定選項,或者在本地介面上綁定,我嘗試了這個範例,儘管我不確定是否使用net.ipv6.ip_nonlocal_bind選項。
/sbin/ip -6 addr add 2001:db8::ffff:1/64 dev lo
使用 wget –bind-address 進行測試
$$ dress within range $$google.com 我得到以下資訊
--2017-02-04 15:07:26-- (try: 3) http://ipv6.google.com/ Connecting to ipv6.google.com (ipv6.google.com)|2a00:1450:4001:814::200e|:80... failed: Cannot assign requested address. Retrying.
沒有骰子。我是否以錯誤的方式看待這個問題?有人有建議嗎?
首先,您需要了解您從 HE 收到的三個前綴並不完全相同。
您已被分配一個
/64
連結前綴。這是您應該在隧道介面上使用的唯一前綴。您還被分配了兩個路由前綴一
/64
和一/48
。您可以在此問題中閱讀有關連結前綴和路由前綴之間區別的更多資訊: IPv6:“路由前綴”和“連結前綴”之間的區別?路由
/64
可以直接用作另一個連接的網路介面上的連結前綴。可以根據/48
需要細分為其他路由和連結前綴。如果您在單個主機上需要大量地址,您應該從您的一個路由前綴中分配一個本地前綴。我強烈建議不要使用比
/64
此目的更短的前綴。本地前綴可以長於/64
.添加本地路由的命令可能類似於以下範例:
ip -6 route add to local 2001:db8:f918:b1e2:086a:cee6::/96 dev lo
您可以在此問題中閱讀有關使用本地路由的更多資訊: Adding a whole IPv6 /64 block to an network interface on debian
偵聽的應用程序
::
將接收本地路由前綴中任何 IP 的流量。如果您需要顯式綁定到本地路由覆蓋的各個 IP 地址,則應用程序必須設置套接字選項。