標籤:

Macbook Air在清華校內網的條件下如何使用ipv6?

參考了可以百度到的所有結果,包括使用腳本等(windows下ISATAP完全正常),但是在MAC下就是始終無法檢測到ip地址,有大神指點下嗎。。。(我是用WIFI路由上網)


考慮到真正Apple用戶的使用需要,在此再更新一版,深度優化用戶體驗TT...

  • 原版的回答附在最後...

新的解決方案:

  • 新版APP簡化了操作,第一次運行時,只需打開APP,輸入密碼即可;後續的使用只需打開,無需輸入密碼。
  • APP第二版下載鏈接https://pan.baidu.com/s/1o8716H0
  • 如果需要開機自動運行,按照如下步驟進行
  • 打開System Preferences -- Users Groups -- Login Items -- + -- StartIPV6_V2.app -- 即可登錄自動運行app

清華大學校內可以使用IPv6的網路:

  • 宿舍樓或實驗室的有線網口,通過不支持IPv6的路由器不行,但使用無線中繼或有線中繼模式則可以使用IPv6(中繼模式的特點是多個設備聯網都需要分別登錄)
  • 教室或實驗室的TsinghuaTsinghua-5G熱點(寢室的不行)
  • DIVI(這個熱點支持Windows、OS X、iOS、Android等系統直接獲取到IPv6地址,連接後都可以直接使用IPv6,無需以上腳本),DIVI-2不行
  • 據評論區同學說,12年以後的Macbook因為取消了網線插口,USB轉介面不支持IPv6,Thunderbolt轉介面支持IPv6
  • 暫時就這麼多了

關於安全性的聲明:

  • 第一版的安全性確實不高,管理員密碼被明文存儲在APP中的腳本內,他人想辦法打開腳本就能直接看到密碼,確實不太安全;
  • 第二版使用AppleScript來存儲密碼,位置在用戶根目錄,為隱藏文件;
  • 密碼的存儲形式為AppleScript腳本,這種存儲有一個特點就是直接打開或以文本形式打開AppleScript腳本文件都無法直接看到密碼,這可以看做一種簡單的加密,按理來說安全性有所提高;
  • 從理論上來說,想要把密碼存在電腦上,就沒法實現絕對的安全,哪怕加密,都能夠通過讀取程序的加密方法進行破解;
  • 請大家自行留意密碼安全,長時間離開電腦請鎖屏;
  • 密碼的本地存儲簡單來說就是為了方便,為什麼不每次打開都輸一遍密碼?因為這是按照我自己的需求來寫的,對我來說,便捷比安全重要;
  • 倘若大家想要每次打開都輸一遍密碼的安全版,可以回復,普遍有需求我可以改改;
  • 這是無償的工作,歡迎大家支持軟體學院志願者活動~

接下來是一波腳本,無關群眾可以離開了...

Shell腳本:

#!/bin/sh
while [ 1 ]
do
# 調用AppleScript獲取密碼
PASSWORD=$(osascript &<&

set pdPath to (path to home folder as string) ".IPv6"
script pdScpt
property pdText : ""
end script
try
set pdScpt to load script file pdPath
on error
try
set mydlg to display dialog "請輸入登錄密碼:" default answer ""
set pdText of pdScpt to text returned of mydlg
store script pdScpt in file pdPath
on error
return "c"
end try
end try
return pdText of pdScpt

EOF)
# 若點擊取消,則結束腳本
if [ "$PASSWORD" = "c" ]
then
exit
fi
# 清除IPV6路由表,判斷sudo執行許可權,循環獲取密碼
STATUS=$(echo $PASSWORD | sudo -S route delete -inet6 default)
if [ -n "$STATUS" ]; then
break
else
rm ~/.IPv6
fi
done
echo $PASSWORD | sudo -S ifconfig gif0 destroy
# 獲取區域網IP
myip="$(ifconfig | grep "inet.*netmask.*broadcast")"
lan_ip="$(echo $myip | awk "{print $2}")"
# 開啟gif
if [ -n "$lan_ip" ]
then
echo $PASSWORD | sudo -S ifconfig gif0 create
echo $PASSWORD | sudo -S ifconfig gif0 tunnel $lan_ip 166.111.21.1
echo $PASSWORD | sudo -S ipconfig set gif0 MANUAL-V6 2402:f000:1:1501:200:5efe:$lan_ip 64
echo $PASSWORD | sudo -S route add -inet6 ::/0 -interface gif0
fi


下面是原版回答...

Mac OS 10.11 有SIP系統保護,所以一些關鍵目錄就算使用root許可權也無法操作,不過,關閉SIP後完成整個教程的操作也還是無法開啟隧道。

最近發現http://ipv6.tsinghua.edu.cn更新的ipv6配置方法實際上是可行的,只不過傻傻的網管把&<終端方案&>的變數名寫錯了,而&<.sh方案&>使用的命令又獲取不到ipv4的IP。無奈,估計他們也沒拿Mac測試一下。

仔細看了看得到方案如下,先給出腳本,有興趣的同學可以自己優化優化,最後面有比較完美的解決方案:

Shell腳本:

#!/bin/sh
# 將password替換為你的密碼
PASSWORD="password"
# 打開 --System Preferences -- Users Groups -- Login Items --
# + -- StartIPV6.app -- 即可登錄自動運行app
# 清除IPV6路由表
echo $PASSWORD | sudo -S route delete -inet6 default
echo $PASSWORD | sudo -S ifconfig gif0 destroy
# 運行ifconfig獲取ip
myip="$(ifconfig | grep "inet.*netmask.*broadcast")"
# 獲取區域網IP
lan_ip="$(echo $myip | awk "{print $2}")"
# 獲取外網IP
public_ip="$(echo $myip | awk "{print $6}")"
# 開啟gif
if [ -n "$lan_ip" ]; then
echo "IP = ${lan_ip}"
echo $PASSWORD | sudo -S ifconfig gif0 create
echo $PASSWORD | sudo -S ifconfig gif0 tunnel $lan_ip 166.111.21.1
echo $PASSWORD | sudo -S ipconfig set gif0 MANUAL-V6 2402:f000:1:1501:200:5efe:$lan_ip 64
echo $PASSWORD | sudo -S route add -inet6 ::/0 -interface gif0
else
echo "No IP"
fi

比較完美的解決方案:

  • 我把以上腳本使用Automator打包成了一個APP,下載鏈接:http://pan.baidu.com/s/1boEnYhh。
  • 下載完StartIPV6.zip文件後,解壓,得到StartIPV6.app和ReadMe.txt。
  • 由於腳本運行需要root許可權,所以需要在APP中設置一下用戶密碼,具體流程可以參見ReadMe
    • 打開Automator(.app) -- File -- Open -- StartIPV6.app -- 按照說明將password替換為用戶密碼
  • 保存後,直接運行StartIPV6.app即可開啟IPV6通道。
  • 當然,想更方便一些的可以根據ReadMe文件來設置開機自啟
    • 打開System Preferences -- Users Groups -- Login Items -- + -- StartIPV6.app -- 即可登錄自動運行app
  • 以上操作步驟都是英文關鍵字,中文系統的請自行腦補一下...

這篇博客 Mac OSX通過ISATAP連接清華IPv6 說明了使用 isatap 的主要方法, 但是在 Mac OS 10.9+ 上卻無法運行成功, 原因在於 Mac OS 10.9 已經更改了 kext 的許可權機制, 系統默認不會載入未經過驗證的簽名的 kext, 所以 isatap.kext 無法載入成功, 具體原因可以參見 https://pikeralpha.wordpress.com/2013/06/13/kext-requirements-for-os-x-10-9-mavericks/ .

解決方案如下:

  1. 在前面博客的第四步之前, 從 cvad-mac.narod.ru 下載 kext utility, 運行. 初始化完畢之後, 將 isatap.kext 拖入其中, 等待其載入完畢
  2. 重啟電腦
  3. 打開 Terminal, 輸入以下命令

    cd /System/Library/Extensions/
    sudo kextload isatap.kext

    這個時候應該已經載入好了 isatap.kext, 輸入

    kextstat -l -b org.momose.kext.isatap

    就能夠看到 isatap.kext 已經在運行了

  4. 之後繼續前人的操作即可

推薦閱讀:

ping www.google.com 是 ipv6 地址,而 ping gmail 則成了 ipv4 的,怎麼回事?

TAG:Mac | macOS | IPv6 |