Improve IP check
- Instead of finding the server's public IP, use the IP address on the default route if it is not a private IP. This makes VPN setup slightly faster by skipping IP detection. - Add a fallback URL for finding the server's public IP. - Cleanup
This commit is contained in:
parent
6ba4618351
commit
32faed40d5
@ -862,7 +862,7 @@ To customize IKEv2 or client options, run this script without arguments.
|
||||
|
||||
```bash
|
||||
PUBLIC_IP=$(dig @resolver1.opendns.com -t A -4 myip.opendns.com +short)
|
||||
[ -z "$PUBLIC_IP" ] && PUBLIC_IP=$(wget -t 3 -T 15 -qO- http://ipv4.icanhazip.com)
|
||||
[ -z "$PUBLIC_IP" ] && PUBLIC_IP=$(wget -t 2 -T 10 -qO- http://ipv4.icanhazip.com)
|
||||
printf '%s\n' "$PUBLIC_IP"
|
||||
```
|
||||
|
||||
|
@ -864,7 +864,7 @@ View example steps for manually configuring IKEv2 with Libreswan.
|
||||
|
||||
```bash
|
||||
PUBLIC_IP=$(dig @resolver1.opendns.com -t A -4 myip.opendns.com +short)
|
||||
[ -z "$PUBLIC_IP" ] && PUBLIC_IP=$(wget -t 3 -T 15 -qO- http://ipv4.icanhazip.com)
|
||||
[ -z "$PUBLIC_IP" ] && PUBLIC_IP=$(wget -t 2 -T 10 -qO- http://ipv4.icanhazip.com)
|
||||
printf '%s\n' "$PUBLIC_IP"
|
||||
```
|
||||
|
||||
|
@ -107,19 +107,30 @@ get_server_address() {
|
||||
|
||||
show_welcome() {
|
||||
cat <<EOF
|
||||
Welcome! Use this script to change this IKEv2 VPN server's address. A new server
|
||||
certificate will be generated if necessary.
|
||||
Welcome! Use this script to change this IKEv2 VPN server's address.
|
||||
A new server certificate will be generated if necessary.
|
||||
|
||||
Current server address: $server_addr_old
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
get_default_ip() {
|
||||
def_ip=$(ip -4 route get 1 | sed 's/ uid .*//' | awk '{print $NF;exit}' 2>/dev/null)
|
||||
if check_ip "$def_ip" \
|
||||
&& ! printf '%s' "$def_ip" | grep -Eq '^(10|127|172\.(1[6-9]|2[0-9]|3[0-1])|192\.168|169\.254)\.'; then
|
||||
public_ip="$def_ip"
|
||||
fi
|
||||
}
|
||||
|
||||
get_server_ip() {
|
||||
bigecho "Trying to auto discover IP of this server..."
|
||||
public_ip=${VPN_PUBLIC_IP:-''}
|
||||
check_ip "$public_ip" || get_default_ip
|
||||
check_ip "$public_ip" && return 0
|
||||
check_ip "$public_ip" || public_ip=$(dig @resolver1.opendns.com -t A -4 myip.opendns.com +short)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 3 -T 15 -qO- http://ipv4.icanhazip.com)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 2 -T 10 -qO- http://ipv4.icanhazip.com)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 2 -T 10 -qO- http://ip1.dynupdate.no-ip.com)
|
||||
}
|
||||
|
||||
enter_server_address() {
|
||||
|
@ -157,7 +157,7 @@ confirm_or_abort() {
|
||||
show_header() {
|
||||
cat <<'EOF'
|
||||
|
||||
IKEv2 Script Copyright (c) 2020-2022 Lin Song 10 Sept 2022
|
||||
IKEv2 Script Copyright (c) 2020-2022 Lin Song 24 Sept 2022
|
||||
|
||||
EOF
|
||||
}
|
||||
@ -361,11 +361,22 @@ get_export_dir() {
|
||||
fi
|
||||
}
|
||||
|
||||
get_default_ip() {
|
||||
def_ip=$(ip -4 route get 1 | sed 's/ uid .*//' | awk '{print $NF;exit}' 2>/dev/null)
|
||||
if check_ip "$def_ip" \
|
||||
&& ! printf '%s' "$def_ip" | grep -Eq '^(10|127|172\.(1[6-9]|2[0-9]|3[0-1])|192\.168|169\.254)\.'; then
|
||||
public_ip="$def_ip"
|
||||
fi
|
||||
}
|
||||
|
||||
get_server_ip() {
|
||||
bigecho2 "Trying to auto discover IP of this server..."
|
||||
public_ip=${VPN_PUBLIC_IP:-''}
|
||||
check_ip "$public_ip" || get_default_ip
|
||||
check_ip "$public_ip" && return 0
|
||||
check_ip "$public_ip" || public_ip=$(dig @resolver1.opendns.com -t A -4 myip.opendns.com +short)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 3 -T 15 -qO- http://ipv4.icanhazip.com)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 2 -T 10 -qO- http://ipv4.icanhazip.com)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 2 -T 10 -qO- http://ip1.dynupdate.no-ip.com)
|
||||
}
|
||||
|
||||
get_server_address() {
|
||||
@ -1317,7 +1328,7 @@ EOF
|
||||
check_swan_update() {
|
||||
base_url="https://github.com/hwdsl2/vpn-extras/releases/download/v1.0.0"
|
||||
swan_ver_url="$base_url/upg-$os_type-$os_ver-swanver"
|
||||
swan_ver_latest=$(wget -t 3 -T 15 -qO- "$swan_ver_url" | head -n 1)
|
||||
swan_ver_latest=$(wget -t 2 -T 10 -qO- "$swan_ver_url" | head -n 1)
|
||||
if printf '%s' "$swan_ver_latest" | grep -Eq '^([3-9]|[1-9][0-9]{1,2})(\.([0-9]|[1-9][0-9]{1,2})){1,2}$' \
|
||||
&& [ -n "$swan_ver" ] && [ "$swan_ver" != "$swan_ver_latest" ] \
|
||||
&& printf '%s\n%s' "$swan_ver" "$swan_ver_latest" | sort -C -V; then
|
||||
|
@ -265,7 +265,7 @@ run_setup() {
|
||||
if tmpdir=$(mktemp --tmpdir -d vpn.XXXXX 2>/dev/null); then
|
||||
if ( set -x; wget -t 3 -T 30 -q -O "$tmpdir/vpn.sh" "$setup_url1" \
|
||||
|| wget -t 3 -T 30 -q -O "$tmpdir/vpn.sh" "$setup_url2" \
|
||||
|| curl -fsL "$setup_url1" -o "$tmpdir/vpn.sh" 2>/dev/null ); then
|
||||
|| curl -m 30 -fsL "$setup_url1" -o "$tmpdir/vpn.sh" 2>/dev/null ); then
|
||||
VPN_IPSEC_PSK="$VPN_IPSEC_PSK" VPN_USER="$VPN_USER" \
|
||||
VPN_PASSWORD="$VPN_PASSWORD" \
|
||||
VPN_PUBLIC_IP="$VPN_PUBLIC_IP" VPN_L2TP_NET="$VPN_L2TP_NET" \
|
||||
|
@ -161,7 +161,7 @@ run_setup() {
|
||||
if tmpdir=$(mktemp --tmpdir -d vpn.XXXXX 2>/dev/null); then
|
||||
if ( set -x; wget -t 3 -T 30 -q -O "$tmpdir/vpnup.sh" "$setup_url1" \
|
||||
|| wget -t 3 -T 30 -q -O "$tmpdir/vpnup.sh" "$setup_url2" \
|
||||
|| curl -fsL "$setup_url1" -o "$tmpdir/vpnup.sh" 2>/dev/null ); then
|
||||
|| curl -m 30 -fsL "$setup_url1" -o "$tmpdir/vpnup.sh" 2>/dev/null ); then
|
||||
VPN_UPDATE_SWAN_VER="$SWAN_VER" /bin/bash "$tmpdir/vpnup.sh" || status=1
|
||||
else
|
||||
status=1
|
||||
|
@ -72,7 +72,7 @@ get_swan_ver() {
|
||||
swan_ver_cur=4.7
|
||||
base_url="https://github.com/hwdsl2/vpn-extras/releases/download/v1.0.0"
|
||||
swan_ver_url="$base_url/upg-v1-$os_type-$os_ver-swanver"
|
||||
swan_ver_latest=$(wget -t 3 -T 15 -qO- "$swan_ver_url" | head -n 1)
|
||||
swan_ver_latest=$(wget -t 2 -T 10 -qO- "$swan_ver_url" | head -n 1)
|
||||
if printf '%s' "$swan_ver_latest" | grep -Eq '^([3-9]|[1-9][0-9]{1,2})(\.([0-9]|[1-9][0-9]{1,2})){1,2}$'; then
|
||||
swan_ver_cur="$swan_ver_latest"
|
||||
fi
|
||||
|
@ -55,7 +55,7 @@ get_swan_ver() {
|
||||
swan_ver_cur=4.7
|
||||
base_url="https://github.com/hwdsl2/vpn-extras/releases/download/v1.0.0"
|
||||
swan_ver_url="$base_url/upg-v1-amzn-2-swanver"
|
||||
swan_ver_latest=$(wget -t 3 -T 15 -qO- "$swan_ver_url" | head -n 1)
|
||||
swan_ver_latest=$(wget -t 2 -T 10 -qO- "$swan_ver_url" | head -n 1)
|
||||
if printf '%s' "$swan_ver_latest" | grep -Eq '^([3-9]|[1-9][0-9]{1,2})(\.([0-9]|[1-9][0-9]{1,2})){1,2}$'; then
|
||||
swan_ver_cur="$swan_ver_latest"
|
||||
fi
|
||||
|
@ -88,7 +88,7 @@ get_swan_ver() {
|
||||
swan_ver_cur=4.7
|
||||
base_url="https://github.com/hwdsl2/vpn-extras/releases/download/v1.0.0"
|
||||
swan_ver_url="$base_url/upg-v1-$os_type-$os_ver-swanver"
|
||||
swan_ver_latest=$(wget -t 3 -T 15 -qO- "$swan_ver_url" | head -n 1)
|
||||
swan_ver_latest=$(wget -t 2 -T 10 -qO- "$swan_ver_url" | head -n 1)
|
||||
if printf '%s' "$swan_ver_latest" | grep -Eq '^([3-9]|[1-9][0-9]{1,2})(\.([0-9]|[1-9][0-9]{1,2})){1,2}$'; then
|
||||
swan_ver_cur="$swan_ver_latest"
|
||||
fi
|
||||
|
@ -78,7 +78,7 @@ get_swan_ver() {
|
||||
swan_ver_cur=4.7
|
||||
base_url="https://github.com/hwdsl2/vpn-extras/releases/download/v1.0.0"
|
||||
swan_ver_url="$base_url/upg-v1-$os_type-$os_ver-swanver"
|
||||
swan_ver_latest=$(wget -t 3 -T 15 -qO- "$swan_ver_url" | head -n 1)
|
||||
swan_ver_latest=$(wget -t 2 -T 10 -qO- "$swan_ver_url" | head -n 1)
|
||||
if printf '%s' "$swan_ver_latest" | grep -Eq '^([3-9]|[1-9][0-9]{1,2})(\.([0-9]|[1-9][0-9]{1,2})){1,2}$'; then
|
||||
swan_ver_cur="$swan_ver_latest"
|
||||
fi
|
||||
|
@ -265,7 +265,7 @@ run_setup() {
|
||||
if tmpdir=$(mktemp --tmpdir -d vpn.XXXXX 2>/dev/null); then
|
||||
if ( set -x; wget -t 3 -T 30 -q -O "$tmpdir/vpn.sh" "$setup_url1" \
|
||||
|| wget -t 3 -T 30 -q -O "$tmpdir/vpn.sh" "$setup_url2" \
|
||||
|| curl -fsL "$setup_url1" -o "$tmpdir/vpn.sh" 2>/dev/null ); then
|
||||
|| curl -m 30 -fsL "$setup_url1" -o "$tmpdir/vpn.sh" 2>/dev/null ); then
|
||||
VPN_IPSEC_PSK="$VPN_IPSEC_PSK" VPN_USER="$VPN_USER" \
|
||||
VPN_PASSWORD="$VPN_PASSWORD" \
|
||||
VPN_PUBLIC_IP="$VPN_PUBLIC_IP" VPN_L2TP_NET="$VPN_L2TP_NET" \
|
||||
|
@ -171,11 +171,22 @@ install_setup_pkgs() {
|
||||
) || exiterr2
|
||||
}
|
||||
|
||||
get_default_ip() {
|
||||
def_ip=$(ip -4 route get 1 | sed 's/ uid .*//' | awk '{print $NF;exit}' 2>/dev/null)
|
||||
if check_ip "$def_ip" \
|
||||
&& ! printf '%s' "$def_ip" | grep -Eq '^(10|127|172\.(1[6-9]|2[0-9]|3[0-1])|192\.168|169\.254)\.'; then
|
||||
public_ip="$def_ip"
|
||||
fi
|
||||
}
|
||||
|
||||
detect_ip() {
|
||||
bigecho "Trying to auto discover IP of this server..."
|
||||
public_ip=${VPN_PUBLIC_IP:-''}
|
||||
check_ip "$public_ip" || get_default_ip
|
||||
check_ip "$public_ip" && return 0
|
||||
bigecho "Trying to auto discover IP of this server..."
|
||||
check_ip "$public_ip" || public_ip=$(dig @resolver1.opendns.com -t A -4 myip.opendns.com +short)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 3 -T 15 -qO- http://ipv4.icanhazip.com)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 2 -T 10 -qO- http://ipv4.icanhazip.com)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 2 -T 10 -qO- http://ip1.dynupdate.no-ip.com)
|
||||
check_ip "$public_ip" || exiterr "Cannot detect this server's public IP. Define it as variable 'VPN_PUBLIC_IP' and re-run this script."
|
||||
}
|
||||
|
||||
@ -225,8 +236,8 @@ get_swan_ver() {
|
||||
SWAN_VER=4.7
|
||||
base_url="https://github.com/hwdsl2/vpn-extras/releases/download/v1.0.0"
|
||||
swan_ver_url="$base_url/v1-$os_type-$os_ver-swanver"
|
||||
swan_ver_latest=$(wget -t 3 -T 15 -qO- "$swan_ver_url" 2>/dev/null | head -n 1)
|
||||
[ -z "$swan_ver_latest" ] && swan_ver_latest=$(curl -fsL "$swan_ver_url" 2>/dev/null | head -n 1)
|
||||
swan_ver_latest=$(wget -t 2 -T 10 -qO- "$swan_ver_url" | head -n 1)
|
||||
[ -z "$swan_ver_latest" ] && swan_ver_latest=$(curl -m 10 -fsL "$swan_ver_url" 2>/dev/null | head -n 1)
|
||||
if printf '%s' "$swan_ver_latest" | grep -Eq '^([3-9]|[1-9][0-9]{1,2})(\.([0-9]|[1-9][0-9]{1,2})){1,2}$'; then
|
||||
SWAN_VER="$swan_ver_latest"
|
||||
fi
|
||||
|
@ -154,11 +154,22 @@ install_setup_pkgs() {
|
||||
) || exiterr2
|
||||
}
|
||||
|
||||
get_default_ip() {
|
||||
def_ip=$(ip -4 route get 1 | sed 's/ uid .*//' | awk '{print $NF;exit}' 2>/dev/null)
|
||||
if check_ip "$def_ip" \
|
||||
&& ! printf '%s' "$def_ip" | grep -Eq '^(10|127|172\.(1[6-9]|2[0-9]|3[0-1])|192\.168|169\.254)\.'; then
|
||||
public_ip="$def_ip"
|
||||
fi
|
||||
}
|
||||
|
||||
detect_ip() {
|
||||
bigecho "Trying to auto discover IP of this server..."
|
||||
public_ip=${VPN_PUBLIC_IP:-''}
|
||||
check_ip "$public_ip" || get_default_ip
|
||||
check_ip "$public_ip" && return 0
|
||||
bigecho "Trying to auto discover IP of this server..."
|
||||
check_ip "$public_ip" || public_ip=$(dig @resolver1.opendns.com -t A -4 myip.opendns.com +short)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 3 -T 15 -qO- http://ipv4.icanhazip.com)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 2 -T 10 -qO- http://ipv4.icanhazip.com)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 2 -T 10 -qO- http://ip1.dynupdate.no-ip.com)
|
||||
check_ip "$public_ip" || exiterr "Cannot detect this server's public IP. Define it as variable 'VPN_PUBLIC_IP' and re-run this script."
|
||||
}
|
||||
|
||||
@ -239,8 +250,8 @@ get_swan_ver() {
|
||||
SWAN_VER=4.7
|
||||
base_url="https://github.com/hwdsl2/vpn-extras/releases/download/v1.0.0"
|
||||
swan_ver_url="$base_url/v1-amzn-2-swanver"
|
||||
swan_ver_latest=$(wget -t 3 -T 15 -qO- "$swan_ver_url" 2>/dev/null | head -n 1)
|
||||
[ -z "$swan_ver_latest" ] && swan_ver_latest=$(curl -fsL "$swan_ver_url" 2>/dev/null | head -n 1)
|
||||
swan_ver_latest=$(wget -t 2 -T 10 -qO- "$swan_ver_url" | head -n 1)
|
||||
[ -z "$swan_ver_latest" ] && swan_ver_latest=$(curl -m 10 -fsL "$swan_ver_url" 2>/dev/null | head -n 1)
|
||||
if printf '%s' "$swan_ver_latest" | grep -Eq '^([3-9]|[1-9][0-9]{1,2})(\.([0-9]|[1-9][0-9]{1,2})){1,2}$'; then
|
||||
SWAN_VER="$swan_ver_latest"
|
||||
fi
|
||||
|
@ -202,11 +202,22 @@ install_setup_pkgs() {
|
||||
) || exiterr2
|
||||
}
|
||||
|
||||
get_default_ip() {
|
||||
def_ip=$(ip -4 route get 1 | sed 's/ uid .*//' | awk '{print $NF;exit}' 2>/dev/null)
|
||||
if check_ip "$def_ip" \
|
||||
&& ! printf '%s' "$def_ip" | grep -Eq '^(10|127|172\.(1[6-9]|2[0-9]|3[0-1])|192\.168|169\.254)\.'; then
|
||||
public_ip="$def_ip"
|
||||
fi
|
||||
}
|
||||
|
||||
detect_ip() {
|
||||
bigecho "Trying to auto discover IP of this server..."
|
||||
public_ip=${VPN_PUBLIC_IP:-''}
|
||||
check_ip "$public_ip" || get_default_ip
|
||||
check_ip "$public_ip" && return 0
|
||||
bigecho "Trying to auto discover IP of this server..."
|
||||
check_ip "$public_ip" || public_ip=$(dig @resolver1.opendns.com -t A -4 myip.opendns.com +short)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 3 -T 15 -qO- http://ipv4.icanhazip.com)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 2 -T 10 -qO- http://ipv4.icanhazip.com)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 2 -T 10 -qO- http://ip1.dynupdate.no-ip.com)
|
||||
check_ip "$public_ip" || exiterr "Cannot detect this server's public IP. Define it as variable 'VPN_PUBLIC_IP' and re-run this script."
|
||||
}
|
||||
|
||||
@ -339,8 +350,8 @@ get_swan_ver() {
|
||||
SWAN_VER=4.7
|
||||
base_url="https://github.com/hwdsl2/vpn-extras/releases/download/v1.0.0"
|
||||
swan_ver_url="$base_url/v1-$os_type-$os_ver-swanver"
|
||||
swan_ver_latest=$(wget -t 3 -T 15 -qO- "$swan_ver_url" 2>/dev/null | head -n 1)
|
||||
[ -z "$swan_ver_latest" ] && swan_ver_latest=$(curl -fsL "$swan_ver_url" 2>/dev/null | head -n 1)
|
||||
swan_ver_latest=$(wget -t 2 -T 10 -qO- "$swan_ver_url" | head -n 1)
|
||||
[ -z "$swan_ver_latest" ] && swan_ver_latest=$(curl -m 10 -fsL "$swan_ver_url" 2>/dev/null | head -n 1)
|
||||
if printf '%s' "$swan_ver_latest" | grep -Eq '^([3-9]|[1-9][0-9]{1,2})(\.([0-9]|[1-9][0-9]{1,2})){1,2}$'; then
|
||||
SWAN_VER="$swan_ver_latest"
|
||||
fi
|
||||
|
@ -221,11 +221,22 @@ install_setup_pkgs() {
|
||||
) || exiterr2
|
||||
}
|
||||
|
||||
get_default_ip() {
|
||||
def_ip=$(ip -4 route get 1 | sed 's/ uid .*//' | awk '{print $NF;exit}' 2>/dev/null)
|
||||
if check_ip "$def_ip" \
|
||||
&& ! printf '%s' "$def_ip" | grep -Eq '^(10|127|172\.(1[6-9]|2[0-9]|3[0-1])|192\.168|169\.254)\.'; then
|
||||
public_ip="$def_ip"
|
||||
fi
|
||||
}
|
||||
|
||||
detect_ip() {
|
||||
bigecho "Trying to auto discover IP of this server..."
|
||||
public_ip=${VPN_PUBLIC_IP:-''}
|
||||
check_ip "$public_ip" || get_default_ip
|
||||
check_ip "$public_ip" && return 0
|
||||
bigecho "Trying to auto discover IP of this server..."
|
||||
check_ip "$public_ip" || public_ip=$(dig @resolver1.opendns.com -t A -4 myip.opendns.com +short)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 3 -T 15 -qO- http://ipv4.icanhazip.com)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 2 -T 10 -qO- http://ipv4.icanhazip.com)
|
||||
check_ip "$public_ip" || public_ip=$(wget -t 2 -T 10 -qO- http://ip1.dynupdate.no-ip.com)
|
||||
check_ip "$public_ip" || exiterr "Cannot detect this server's public IP. Define it as variable 'VPN_PUBLIC_IP' and re-run this script."
|
||||
}
|
||||
|
||||
@ -276,8 +287,8 @@ get_swan_ver() {
|
||||
SWAN_VER=4.7
|
||||
base_url="https://github.com/hwdsl2/vpn-extras/releases/download/v1.0.0"
|
||||
swan_ver_url="$base_url/v1-$os_type-$os_ver-swanver"
|
||||
swan_ver_latest=$(wget -t 3 -T 15 -qO- "$swan_ver_url" 2>/dev/null | head -n 1)
|
||||
[ -z "$swan_ver_latest" ] && swan_ver_latest=$(curl -fsL "$swan_ver_url" 2>/dev/null | head -n 1)
|
||||
swan_ver_latest=$(wget -t 2 -T 10 -qO- "$swan_ver_url" | head -n 1)
|
||||
[ -z "$swan_ver_latest" ] && swan_ver_latest=$(curl -m 10 -fsL "$swan_ver_url" 2>/dev/null | head -n 1)
|
||||
if printf '%s' "$swan_ver_latest" | grep -Eq '^([3-9]|[1-9][0-9]{1,2})(\.([0-9]|[1-9][0-9]{1,2})){1,2}$'; then
|
||||
SWAN_VER="$swan_ver_latest"
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user