one-click-installation-script/network.sh
2022-12-17 19:14:15 +08:00

60 lines
2.1 KiB
Bash

#!/bin/bash
#by spiritlhl
#from https://github.com/spiritLHLS/one-click-installation-script
#version: 2022.12.17
# Try to ping Google.com
if ping -c 1 google.com; then
echo "Ping successful"
else
echo "Ping failed. Checking nameserver."
# Check current nameserver
nameserver=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
echo "Current nameserver: $nameserver"
# Try using Google's nameserver
echo "Trying Google's nameserver: 8.8.8.8"
sudo sed -i "s/$nameserver/8.8.8.8/g" /etc/resolv.conf
if ping -c 1 google.com; then
echo "Ping successful with Google's nameserver"
else
echo "Ping failed with Google's nameserver. Trying Cloudflare's nameserver."
# Try using Cloudflare's nameserver
echo "Trying Cloudflare's nameserver: 1.1.1.1"
sudo sed -i "s/8.8.8.8/1.1.1.1/g" /etc/resolv.conf
if ping -c 1 google.com; then
echo "Ping successful with Cloudflare's nameserver"
else
echo "Ping failed with Cloudflare's nameserver. Checking network configuration."
# Check IP type and network priority
ip_type=$(curl -s ip.sb | grep -oP '(?<=is )(.+)(?=\.)')
echo "IP type: $ip_type"
if [ "$ip_type" = "IPv4" ]; then
priority=$(cat /etc/gai.conf | grep -oP '(?<=precedence ::ffff:0:0\/96 )\d+')
else
priority=$(cat /etc/gai.conf | grep -oP '(?<=precedence ::/0 )\d+')
fi
echo "Network priority: $priority"
# Modify network priority if necessary
if [ "$ip_type" = "IPv4" ] && [ "$priority" -gt "100" ]; then
sudo sed -i 's/precedence ::ffff:0:0\/96 100/precedence ::ffff:0:0\/96 50/' /etc/gai.conf
elif [ "$ip_type" = "IPv6" ] && [ "$priority" -lt "100" ]; then
sudo sed -i 's/precedence ::\/0 50/precedence ::\/0 100/' /etc/gai.conf
else
echo "Network configuration is correct."
fi
# Try to ping again after modifying network priority
if ping -c 1 google.com; then
echo "Ping successful after modifying network priority"
else
echo "Network problem is not related to nameserver or network priority."
fi
fi
fi
fi