From 23242d824fb9d42ffb536f848fd9f0e725746736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=B5=E4=BA=8C?= <66155308+miaoermua@users.noreply.github.com> Date: Mon, 10 Jun 2024 14:16:15 +0800 Subject: [PATCH] Update catnd --- cattools.sh | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) diff --git a/cattools.sh b/cattools.sh index 33f821b..d33c239 100644 --- a/cattools.sh +++ b/cattools.sh @@ -29,6 +29,7 @@ show_menu() { echo "2. Debug - 抓取日志" echo "3. catwrt_update - 检查更新" echo "4. use_repo - 启用软件源" + echo "5. diagnostics - 网络诊断" echo "0. Exit - 退出" echo "----------------------------------------------------------" echo -n "请输入数字并回车(Please enter your choice): " @@ -235,6 +236,160 @@ use_repo(){ opkg update } +# catnd + +catnd(){ + echo "$(date) - Starting CatWrt Network Diagnostics" + echo " " + + # Ping & PPPoE + ping -c 3 223.5.5.5 > /dev/null + if [ $? -eq 0 ]; then + echo "[Ping] Network connection succeeded!" + echo " " + else + ping -c 3 119.29.29.99 > /dev/null + if [ $? -eq 0 ]; then + echo "[Ping] Network connection succeeded,But there may be problems!" + echo " " + else + pppoe_config=$(grep 'pppoe' /etc/config/network) + if [ ! -z "$pppoe_config" ]; then + echo "[PPPoE] Please check if your PPPoE account and password are correct." + echo " " + fi + exit 1 + fi + fi + + # DNS + valid_dns="1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 223.6.6.6 223.5.5.5 180.76.76.76 208.67.222.222 208.67.220.220 119.29.29.99" + + dns_config=$(grep 'option dns' /etc/config/network) + dns_servers=$(echo $dns_config | awk -F "'" '{print $2}') + + for ip in $dns_servers; do + if ! [[ $valid_dns =~ (^|[ ])$ip($|[ ]) ]]; then + echo "[DNS] Recommended to delete DNS $ip" + echo " " + exit 1 + fi + done + + # Bad DNS + echo "[DNS] DNS configuration looks good!" + echo " " + + bad_dns="114.114.114.114 114.114.115.115 119.29.29.29" + if [[ $dns_config =~ $bad_dns ]]; then + echo "[DNS] DNS may be polluted or unreliable" + echo " " + fi + + # nslookup + nslookup bilibili.com > /dev/null + if [ $? -ne 0 ]; then + nslookup www.miaoer.xyz > /dev/null + if [ $? -eq 0 ]; then + echo "[DNS] DNS resolution succeeded" + echo " " + else + echo "[DNS] NS resolution failed for 'www.miaoer.xyz'" + echo "[DNS] Your DNS server may have issues" + echo " " + fi + fi + + # Public IP + echo CatWrt IPv4 Addr: $(curl --silent --connect-timeout 5 4.ipw.cn ) + echo " " + + curl 6.ipw.cn --connect-timeout 5 > /dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "[IPv6] IPv6 network connection timed out" + echo " " + else + echo CatWrt IPv6 Addr: $(curl --silent 6.ipw.cn) + echo " " + fi + + # IPv6 + resp=$(curl --silent test.ipw.cn) + + if echo "$resp" | grep -q -E '240e|2408|2409|2401'; then + echo "[IPv6] IPv6 access is preferred" + echo " " + else + echo "[IPv6] IPv4 access is preferred" + echo " " + fi + + # Default IP + ipaddr_config=$(grep '192.168.1.4' /etc/config/network) + + if [ -z "$ipaddr_config" ]; then + echo "[Default-IP] address is not the catwrt default 192.168.1.4" + echo "Please configure your network at 'https://www.miaoer.xyz/posts/network/quickstart-catwrt'" + echo " " + fi + + # Bypass Gateway + wan_config=$(grep 'config interface' /etc/config/network | grep 'wan') + + if [ -z "$wan_config" ]; then + echo "[Bypass Gateway] No config for 'wan' interface found in /etc/config/network" + echo "Please check if your device is set as a Bypass Gateway" + echo " " + fi + + # Rotuer Mode(PPPoE) + pass_config=$(grep 'password' /etc/config/network) + user_config=$(grep 'username' /etc/config/network) + pppoe_config=$(grep 'pppoe' /etc/config/network) + + if [ -n "$pass_config" ] && [ -n "$user_config" ] && [ -n "$pppoe_config" ]; then + echo "[PPPoE] PPPoE Rotuer Mode" + echo " " + else + echo "[PPPoE] DHCP protocol detected in WAN interface" + echo "The device may not be in PPPoE Rotuer Mode" + echo " " + fi + + # IPv6 WAN6 + grep 'config interface' /etc/config/network | grep 'wan6' > /dev/null + if [ $? -ne 0 ]; then + echo "[wan6] Your IPv6 network may have issues" + echo " " + fi + + grep 'dhcpv6' /etc/config/network > /dev/null + if [ $? -ne 0 ]; then + echo "[wan6] Your IPv6 network may have issues" + echo " " + fi + + # Tcping + echo "[Tcping] Testing..." + + tcping -q -c 1 cn.bing.com + [ $? -ne 0 ] && echo "Failed: cn.bing.com" + + tcping -q -c 1 bilibili.com + [ $? -ne 0 ] && echo "Failed: bilibili.com" + + tcping -q -c 1 github.com + [ $? -ne 0 ] && echo "Failed: github.com" + + tcping -q -c 1 google.com.hk + [ $? -ne 0 ] && echo "Failed: google.com.hk" + + echo " " + echo "$(date) - Network check completed!" + echo " " + echo "CatWrt Network Diagnostics by @miaoermua" +} + while true; do show_menu read choice @@ -251,6 +406,9 @@ while true; do 4) use_repo ;; + 5) + catnd + ;; 0) echo "Exiting..." break