2014-09-28 21:39:15 +08:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
|
|
# route.sh -- set up ip route
|
|
|
|
|
#
|
|
|
|
|
# Copyright (C) 2014 Zeno Zeng <zenoofzeng@gmail.com>
|
|
|
|
|
# Copyright (C) 2014 Hexcles Ma <bob1211@gmail.com>
|
2014-09-28 21:59:48 +08:00
|
|
|
# Copyright (C) 2014 Senorsen Zhang <sen@senorsen.com>
|
2014-09-28 21:39:15 +08:00
|
|
|
#
|
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
# (at your option) any later version.
|
|
|
|
|
#
|
|
|
|
|
# This program is distributed in the hope that it will be useful, but
|
|
|
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
|
# General Public License for more details.
|
|
|
|
|
#
|
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
|
# along with this program. If not, see
|
|
|
|
|
# <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
2014-10-14 17:27:22 +08:00
|
|
|
ip route flush cache
|
|
|
|
|
|
2014-09-28 21:39:15 +08:00
|
|
|
ip_route_del() {
|
|
|
|
|
count=$(ip route show $1 | wc -l)
|
|
|
|
|
if [ "${count}" -gt "0" ]; then
|
|
|
|
|
ip route del $1
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
echo "[INFO] Setting up ip route."
|
|
|
|
|
|
|
|
|
|
gateway=$(ip route get 10.10.0.21 | grep via | awk '{print $3}')
|
|
|
|
|
|
2014-11-12 21:16:12 +08:00
|
|
|
# Recently VPN server 10.5.1.7 has the P-t-P: 172.172.172.2, after some updates.
|
2019-03-28 10:00:37 +08:00
|
|
|
# Mar 2019 Update: A new VPN server 10.0.2.27 has been set up.
|
|
|
|
|
devs_count=$(ip addr show | grep 'inet.*ppp' | grep ' 10.5.\|172.172.172.\|10.0.2.' | awk '{print $7}' | wc -l)
|
2014-09-28 21:39:15 +08:00
|
|
|
if [ "${devs_count}" -eq "0" ]; then
|
|
|
|
|
dev=$(ip route get 10.10.0.21 | head -n1 | awk '{print $5}')
|
|
|
|
|
|
|
|
|
|
ip_route_del 10.0.0.0/8
|
|
|
|
|
ip_route_del 10.50.200.245
|
|
|
|
|
ip_route_del 58.196.192.0/19
|
|
|
|
|
ip_route_del 58.196.224.0/20
|
|
|
|
|
ip_route_del 58.200.100.0/24
|
|
|
|
|
ip_route_del 210.32.0.0/20
|
|
|
|
|
ip_route_del 210.32.128.0/19
|
|
|
|
|
ip_route_del 210.32.160.0/21
|
|
|
|
|
ip_route_del 210.32.168.0/22
|
|
|
|
|
ip_route_del 210.32.172.0/23
|
|
|
|
|
ip_route_del 210.32.176.0/20
|
|
|
|
|
ip_route_del 222.205.0.0/17
|
|
|
|
|
ip_route_del 10.5.1.0/24
|
|
|
|
|
ip_route_del 10.10.0.0/24
|
|
|
|
|
|
|
|
|
|
ip route replace default via $gateway dev $dev
|
|
|
|
|
|
|
|
|
|
ip route
|
2014-10-13 21:18:58 +08:00
|
|
|
exit 0
|
|
|
|
|
#return
|
2014-09-28 21:39:15 +08:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
ip route replace 10.5.1.0/24 via $gateway # for LNS
|
|
|
|
|
ip route replace 10.10.0.0/24 via $gateway # for DNS
|
|
|
|
|
|
|
|
|
|
case "$gateway" in
|
|
|
|
|
10.189.*)
|
|
|
|
|
ip route replace 10.50.200.245 via $gateway
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
# 内网静态路由
|
|
|
|
|
# See also: #18 (thanks Hexcles Ma)
|
2014-09-30 18:11:45 +08:00
|
|
|
ip route replace 10.0.0.0/8 via $gateway
|
2014-09-28 21:39:15 +08:00
|
|
|
|
|
|
|
|
# Some classroom computers (especially East 6,7)
|
2014-09-30 18:11:45 +08:00
|
|
|
ip route replace 58.196.192.0/19 via $gateway
|
|
|
|
|
ip route replace 58.196.224.0/20 via $gateway
|
|
|
|
|
ip route replace 58.200.100.0/24 via $gateway
|
2014-09-28 21:39:15 +08:00
|
|
|
|
2014-11-12 21:16:12 +08:00
|
|
|
# The public CERNET IP of most ZJU servers, which can be reached directly in the Intranet through 10.0.0.0/8.
|
|
|
|
|
# If these servers are DNATed(have 210.32.*.* IP), we can't reach it through our gateway or VPN P-t-P.
|
|
|
|
|
# However these addresses also belong to Yu Quan Campus, our VPN, etc.,
|
|
|
|
|
# Which can be reached through our internal gateway.
|
2014-09-30 18:11:45 +08:00
|
|
|
ip route replace 210.32.0.0/20 via $gateway
|
|
|
|
|
ip route replace 210.32.128.0/19 via $gateway
|
|
|
|
|
ip route replace 210.32.160.0/21 via $gateway
|
|
|
|
|
ip route replace 210.32.168.0/22 via $gateway
|
|
|
|
|
ip route replace 210.32.172.0/23 via $gateway
|
|
|
|
|
ip route replace 210.32.176.0/20 via $gateway
|
|
|
|
|
ip route replace 222.205.0.0/17 via $gateway
|
2014-09-28 21:39:15 +08:00
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
# NEXTHOP
|
2014-11-12 21:16:12 +08:00
|
|
|
# Recently VPN server 10.5.1.7 has the P-t-P: 172.172.172.2, after some updates.
|
2019-03-28 10:00:37 +08:00
|
|
|
# Mar 2019 Update: A new VPN server 10.0.2.27 has been set up.
|
|
|
|
|
devs=$(ip addr show | grep 'inet.*ppp' | grep ' 10.5.\|172.172.172.\|10.0.2.' | awk '{print $7}')
|
2014-09-28 21:39:15 +08:00
|
|
|
cmd="ip route replace default"
|
|
|
|
|
for dev in $devs; do
|
|
|
|
|
cmd="${cmd} nexthop dev ${dev}"
|
|
|
|
|
done
|
|
|
|
|
|
2014-09-30 20:10:14 +08:00
|
|
|
case "$gateway" in
|
|
|
|
|
10.189.*)
|
|
|
|
|
# WLAN
|
2015-02-08 20:03:37 +08:00
|
|
|
zjuwlan_test_ip=10.202.68.46
|
2014-09-30 20:10:14 +08:00
|
|
|
ip route replace $zjuwlan_test_ip via ${gateway}
|
|
|
|
|
zjuwlan_status=`curl -s $zjuwlan_test_ip | grep net.zju.edu.cn | wc -l`
|
|
|
|
|
if [ $zjuwlan_status -eq 0 ]
|
|
|
|
|
then
|
|
|
|
|
cmd="${cmd} nexthop via ${gateway}"
|
|
|
|
|
fi
|
|
|
|
|
ip route del $zjuwlan_test_ip || true
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
2014-09-28 21:39:15 +08:00
|
|
|
$cmd
|
|
|
|
|
|
2014-10-01 04:10:17 +08:00
|
|
|
ip route
|
2014-10-14 17:27:22 +08:00
|
|
|
|
|
|
|
|
ip route flush cache
|