mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Use tunnel when available as default route
This commit is contained in:
parent
fe1fbe26d4
commit
b2696685a7
4 changed files with 60 additions and 17 deletions
|
@ -17,7 +17,6 @@ uci -q batch <<-EOF >/dev/null
|
||||||
set network.glorytun.proto=dhcp
|
set network.glorytun.proto=dhcp
|
||||||
set network.glorytun.ip4table=vpn
|
set network.glorytun.ip4table=vpn
|
||||||
set network.glorytun.multipath=off
|
set network.glorytun.multipath=off
|
||||||
set network.glorytun.defaultroute=0
|
|
||||||
commit network
|
commit network
|
||||||
EOF
|
EOF
|
||||||
uci -q batch <<-EOF >/dev/null
|
uci -q batch <<-EOF >/dev/null
|
||||||
|
|
|
@ -6,18 +6,18 @@ set_route() {
|
||||||
INTERFACE=$1
|
INTERFACE=$1
|
||||||
PREVINTERFACE=$2
|
PREVINTERFACE=$2
|
||||||
multipath_config=$(uci -q get "network.$INTERFACE.multipath" || echo "off")
|
multipath_config=$(uci -q get "network.$INTERFACE.multipath" || echo "off")
|
||||||
multipath_current_config=$(multipath $INTERFACE | grep deactivated)
|
interface_if=$(uci -q get "network.$INTERFACE.ifname")
|
||||||
|
multipath_current_config=$(multipath $interface_if | grep deactivated)
|
||||||
if [ "$multipath_config" != "off" ] && [ "$SETROUTE" != true ] && [ "$INTERFACE" != "$PREVINTERFACE" ] && [ "$multipath_current_config" = "" ]; then
|
if [ "$multipath_config" != "off" ] && [ "$SETROUTE" != true ] && [ "$INTERFACE" != "$PREVINTERFACE" ] && [ "$multipath_current_config" = "" ]; then
|
||||||
#if [ "$multipath_config" != "off" ] && [ "$SETROUTE" != true ]; then
|
#if [ "$multipath_config" != "off" ] && [ "$SETROUTE" != true ]; then
|
||||||
#if [ "$multipath_config" != "off" ] && [ "$INTERFACE" != "$PREVINTERFACE" ] && [ "$SETROUTE" != true ]; then
|
#if [ "$multipath_config" != "off" ] && [ "$INTERFACE" != "$PREVINTERFACE" ] && [ "$SETROUTE" != true ]; then
|
||||||
interface_gw=$(uci -q get "network.$INTERFACE.gateway")
|
interface_gw=$(uci -q get "network.$INTERFACE.gateway")
|
||||||
if [ -z $interface_gw ]; then
|
if [ -z $interface_gw ]; then
|
||||||
$interface_gw=$(ubus call network.interface.$INTERFACE status | jsonfilter -e '@.route[0].nexthop' | tr -d "\d")
|
$interface_gw=$(ubus call network.interface.$INTERFACE status | jsonfilter -e '@.route[0].nexthop' | tr -d "\n")
|
||||||
fi
|
fi
|
||||||
if [ -z $interface_gw ]; then
|
if [ -z $interface_gw ]; then
|
||||||
$interface_gw=$(ubus call network.interface.$INTERFACE status | jsonfilter -e '@.inactive.route[0].nexthop' | tr -d "\d")
|
$interface_gw=$(ubus call network.interface.$INTERFACE status | jsonfilter -e '@.inactive.route[0].nexthop' | tr -d "\n")
|
||||||
fi
|
fi
|
||||||
interface_if=$(uci -q get "network.$INTERFACE.ifname")
|
|
||||||
if [ "$interface_gw" != "" ]; then
|
if [ "$interface_gw" != "" ]; then
|
||||||
_log "Replace default route by $interface_gw dev $interface_if"
|
_log "Replace default route by $interface_gw dev $interface_if"
|
||||||
ip route replace default scope global nexthop via $interface_gw dev $interface_if && SETROUTE=true
|
ip route replace default scope global nexthop via $interface_gw dev $interface_if && SETROUTE=true
|
||||||
|
@ -25,6 +25,24 @@ set_route() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_ss_route() {
|
||||||
|
local server_ip
|
||||||
|
config_get server_ip $1 server
|
||||||
|
if [ "$(ip route show dev $OMR_TRACKER_DEVICE | grep $server_ip | grep $OMR_TRACKER_DEVICE_GATEWAY)" = "" ]; then
|
||||||
|
_log "Set server route via $OMR_TRACKER_DEVICE"
|
||||||
|
ip route replace $server_ip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
del_ss_route() {
|
||||||
|
local server_ip
|
||||||
|
config_get server_ip $1 server
|
||||||
|
if [ "$(ip route show dev $OMR_TRACKER_DEVICE | grep $server_ip | grep $OMR_TRACKER_DEVICE_GATEWAY)" != "" ]; then
|
||||||
|
_log "Remove server route via $OMR_TRACKER_DEVICE"
|
||||||
|
ip route delete $server_ip via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
sleep `expr $RANDOM % 10`
|
sleep `expr $RANDOM % 10`
|
||||||
|
|
||||||
# Get the current multipath status
|
# Get the current multipath status
|
||||||
|
@ -45,20 +63,36 @@ if [ "$OMR_TRACKER_STATUS" = "ERROR" ]; then
|
||||||
multipath "$OMR_TRACKER_DEVICE" off
|
multipath "$OMR_TRACKER_DEVICE" off
|
||||||
if [ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]; then
|
if [ "$default_gw" = "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]; then
|
||||||
config_load network
|
config_load network
|
||||||
config_foreach set_route interface $OMR_TRACKER_DEVICE
|
config_foreach set_route interface $OMR_TRACKER_INTERFACE
|
||||||
|
fi
|
||||||
|
config_load shadowsocks-libev
|
||||||
|
config_foreach del_ss_route server
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$OMR_TRACKER_INTERFACE" = "glorytun" ]; then
|
||||||
|
if [ "$default_gw" != "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]; then
|
||||||
|
_log "Tunnel up : Replace default route by $current_interface_gw dev $OMR_TRACKER_DEVICE"
|
||||||
|
ip route replace default scope global nexthop via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE
|
||||||
fi
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
multipath_config=$(uci -q get "network.$OMR_TRACKER_INTERFACE.multipath" || echo "off")
|
multipath_config=$(uci -q get "network.$OMR_TRACKER_INTERFACE.multipath" || echo "off")
|
||||||
[ "$multipath_config" = "master" ] && [ "$multipath_status" = "on" ] && exit 0
|
|
||||||
[ "$multipath_status" = "$multipath_config" ] && exit 0
|
|
||||||
_log "$OMR_TRACKER_DEVICE switched to $multipath_config"
|
|
||||||
if [ "$multipath_config" = "master" ]; then
|
if [ "$multipath_config" = "master" ]; then
|
||||||
if [ "$default_gw" != "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]; then
|
if [ "$default_gw" != "$OMR_TRACKER_DEVICE_GATEWAY" ] || [ "$default_gw" = "" ]; then
|
||||||
_log "Master up : Replace default route by $current_interface_gw dev $OMR_TRACKER_INTERFACE"
|
if [ "$(ip route show default | grep -v metric | awk '/default/ {print $5}' | grep tun)" = "" ]; then
|
||||||
ip route replace default scope global nexthop via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_INTERFACE
|
_log "Master up : Replace default route by $current_interface_gw dev $OMR_TRACKER_DEVICE"
|
||||||
|
ip route replace default scope global nexthop via $OMR_TRACKER_DEVICE_GATEWAY dev $OMR_TRACKER_DEVICE
|
||||||
|
else
|
||||||
|
config_load shadowsocks-libev
|
||||||
|
config_foreach set_ss_route server
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
multipath_config="on"
|
multipath_config="on"
|
||||||
fi
|
fi
|
||||||
|
[ "$multipath_config" = "master" ] && [ "$multipath_status" = "on" ] && exit 0
|
||||||
|
[ "$multipath_status" = "$multipath_config" ] && exit 0
|
||||||
|
_log "Multipath $OMR_TRACKER_DEVICE switched to $multipath_config"
|
||||||
|
|
||||||
multipath "$OMR_TRACKER_DEVICE" "$multipath_config"
|
multipath "$OMR_TRACKER_DEVICE" "$multipath_config"
|
||||||
|
|
|
@ -31,7 +31,7 @@ _validate_section() {
|
||||||
|
|
||||||
_launch_tracker() {
|
_launch_tracker() {
|
||||||
case "$1" in
|
case "$1" in
|
||||||
loopback|lan*|if0*|glorytun*|tun*) return;;
|
loopback|lan*|if0*|tun*) return;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
local interface_type
|
local interface_type
|
||||||
|
@ -46,7 +46,7 @@ _launch_tracker() {
|
||||||
config_get multipath "$1" multipath
|
config_get multipath "$1" multipath
|
||||||
config_get gateway "$1" gateway
|
config_get gateway "$1" gateway
|
||||||
|
|
||||||
[ -z "$ifname" ] || [ -z "$multipath" ] || [ "$multipath" = "off" ] && return
|
[ -z "$ifname" ] || [ -z "$multipath" ] || [ "$multipath" = "off" ] && [ "$1" != "glorytun" ] && return
|
||||||
[ -z "$type" ] && type="ping"
|
[ -z "$type" ] && type="ping"
|
||||||
|
|
||||||
procd_open_instance
|
procd_open_instance
|
||||||
|
|
|
@ -5,13 +5,23 @@ uci -q batch <<-EOF >/dev/null
|
||||||
set qos.wan1=interface
|
set qos.wan1=interface
|
||||||
set qos.wan1.classgroup="Default"
|
set qos.wan1.classgroup="Default"
|
||||||
set qos.wan1.enabled="0"
|
set qos.wan1.enabled="0"
|
||||||
set qos.wan1.upload="128"
|
set qos.wan1.upload="256"
|
||||||
set qos.wan1.download="1024"
|
set qos.wan1.download="2048"
|
||||||
set qos.wan2=interface
|
set qos.wan2=interface
|
||||||
set qos.wan2.classgroup="Default"
|
set qos.wan2.classgroup="Default"
|
||||||
set qos.wan2.enabled="0"
|
set qos.wan2.enabled="0"
|
||||||
set qos.wan2.upload="128"
|
set qos.wan2.upload="256"
|
||||||
set qos.wan2.download="1024"
|
set qos.wan2.download="2048"
|
||||||
|
delete qos.@classify[-1]
|
||||||
|
add qos classify
|
||||||
|
set qos.@classify[-1].target='Express'
|
||||||
|
set qos.@classify[-1].ports='5600'
|
||||||
|
set qos.@classify[-1].comments='SIP'
|
||||||
|
add qos classify
|
||||||
|
set qos.@classify[-1].target='Express'
|
||||||
|
set qos.@classify[-1].portrange='27000-27050'
|
||||||
|
set qos.@classify[1].proto='udp'
|
||||||
|
set qos.@classify[-1].comments='Steam'
|
||||||
commit qos
|
commit qos
|
||||||
EOF
|
EOF
|
||||||
rm -f /tmp/luci-indexcache
|
rm -f /tmp/luci-indexcache
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue