diff --git a/ipv6 b/ipv6 index f6fb27e..d4784ca 100644 --- a/ipv6 +++ b/ipv6 @@ -1,52 +1,42 @@ #!/bin/bash -echo "=== IPv6 专业检测工具 ===" +echo "=== Ubuntu IPv6 基础检测 ===" -# 颜色定义 -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -NC='\033[0m' # No Color +# 检查系统版本 +echo "1. 系统信息:" +lsb_release -d 2>/dev/null || echo " Ubuntu $(uname -r)" -# 检测函数 -check_with_color() { - if $1 &> /dev/null; then - echo -e "${GREEN}✓ $2${NC}" - return 0 - else - echo -e "${RED}✗ $2${NC}" - return 1 - fi -} - -echo "正在执行IPv6检测..." - -# 1. 内核支持检测 -check_with_color "test -f /proc/net/if_inet6" "内核IPv6支持" - -# 2. IPv6地址检测 -echo -e "\nIPv6地址信息:" -ip -6 addr show | grep "inet6" | head -5 | while read line; do - echo -e " ${YELLOW}$line${NC}" -done - -# 3. 连通性测试 -echo -e "\n连通性测试:" -check_with_color "ping6 -c 1 -W 3 2001:4860:4860::8888" "Google IPv6 DNS" -check_with_color "ping6 -c 1 -W 3 2606:4700:4700::1111" "Cloudflare IPv6 DNS" - -# 4. 路由检测 -echo -e "\nIPv6路由表:" -ip -6 route show | head -5 | while read line; do - echo -e " ${YELLOW}$line${NC}" -done - -# 5. 总结报告 -echo -e "\n=== 检测总结 ===" -if ip -6 addr show | grep -q "inet6" && ping6 -c 1 -W 2 2001:4860:4860::8888 &> /dev/null; then - echo -e "${GREEN}✅ 系统IPv6功能完整正常${NC}" -elif ip -6 addr show | grep -q "inet6"; then - echo -e "${YELLOW}⚠️ 系统有IPv6地址但无法访问外网${NC}" +# 检查NetworkManager状态(Ubuntu默认) +echo "2. 网络管理器状态:" +if systemctl is-active NetworkManager >/dev/null 2>&1; then + echo " ✓ NetworkManager 运行中" else - echo -e "${RED}❌ 系统未启用IPv6${NC}" + echo " ⚠ NetworkManager 未运行" +fi + +# 检查IPv6内核参数 +echo "3. IPv6内核参数:" +if [[ $(cat /proc/sys/net/ipv6/conf/all/disable_ipv6 2>/dev/null) -eq 0 ]]; then + echo " ✓ IPv6已启用" +else + echo " ✗ IPv6被禁用" +fi + +# 检查网络接口 +echo "4. 网络接口IPv6状态:" +for iface in $(ip -o link show | awk -F': ' '{print $2}'); do + ipv6_status=$(cat /proc/sys/net/ipv6/conf/$iface/disable_ipv6 2>/dev/null) + if [[ $ipv6_status -eq 0 ]]; then + echo " ✓ $iface: IPv6已启用" + else + echo " ✗ $iface: IPv6被禁用" + fi +done + +# 测试连通性 +echo "5. IPv6连通性测试:" +if ping6 -c 2 -W 3 2001:4860:4860::8888 >/dev/null 2>&1; then + echo " ✓ IPv6外网连通正常" +else + echo " ✗ IPv6外网连通失败" fi