Commit c10663bc authored by System Administrator's avatar System Administrator

router/update_z-i.sh: update routing config for igw (ipsec1, ogwroute table)

parent ca8f0e6e
...@@ -8,31 +8,58 @@ cd $(dirname "$(realpath "$0")") || exit #" ...@@ -8,31 +8,58 @@ cd $(dirname "$(realpath "$0")") || exit #"
SETNAME=rkz SETNAME=rkz
TMPNAME=rkz.ntmp TMPNAME=rkz.ntmp
MAXELEM=5000000 MAXELEM=5000000
IFACE=vmbr0 IFACE=eth0
VPNDEV=ipsec1
# hash:ip # hash:ip
IPSTYPE=hash:net IPSTYPE=hash:net
NBTABLE=ogwroute
NBGW=91.232.225.12
check_bgp_peer()
{
birdc show protocols | grep -q "bgp$1.*master.*up.*Established"
}
set_rules() set_rules()
{ {
# initial # initial
if ! iptables -L -t mangle | grep -q $SETNAME ; then if ! iptables -L -t mangle | grep -q $SETNAME ; then
iptables -t mangle -A PREROUTING -i $IFACE -m set --match-set $SETNAME dst -j MARK --set-mark 5 || exit iptables -t mangle -A PREROUTING -i $IFACE -m set --match-set $SETNAME dst -j MARK --set-mark 5 || exit
fi fi
if ! sysctl net.ipv4.conf.tun0.rp_filter | grep -q " = 2" ; then #if ! sysctl net.ipv4.conf.$VPNDEV.rp_filter | grep -q " = 2" ; then
sysctl -w net.ipv4.conf.tun0.rp_filter=2 # sysctl -w net.ipv4.conf.$VPNDEV.rp_filter=2
fi #fi
# see /etc/net/ifaces/ether3/ipv4route
if ! ip route show table openroute | grep -q "default dev tun0" ; then if [ -n "$NBGW" ] ; then
ip route replace default table openroute scope global nexthop dev tun0 || exit if ! ip route show table $NBTABLE | grep -q "default" ; then
ip route replace default table $NBTABLE via $NBGW || exit
fi
else
if ! ip route show table $NBTABLE | grep -q "default dev $VPNDEV" ; then
ip route replace default table $NBTABLE scope global nexthop dev $VPNDEV || exit
fi
fi fi
if ! ip rule | grep -q "fwmark 0x5" ; then
ip rule add fwmark 5 table openroute || exit #if ! check_bgp_peer AS35000 ; then
# NBTABLE=openroute
#fi
# force egw
#NBTABLE=openroute
if ! ip rule | grep -q "fwmark 0x5 lookup $NBTABLE" ; then
ip rule del fwmark 5
ip rule add fwmark 5 table $NBTABLE pref 3000 || exit
fi fi
# check for # check for
# -A POSTROUTING -o tun0 -j MASQUERADE # -A POSTROUTING -o $VPNDEV -j MASQUERADE
} }
...@@ -49,7 +76,8 @@ if [ "$1" = "--set-rules" ] ; then ...@@ -49,7 +76,8 @@ if [ "$1" = "--set-rules" ] ; then
fi fi
# download new list # download new list
./get_ips_z-i.sh | grep -v HASH > $0.list #./get_ips_z-i.sh > $0.list || exit
exit
if [ ! -s "$0.list" ] ; then if [ ! -s "$0.list" ] ; then
echo "$0.list is empty" echo "$0.list is empty"
...@@ -81,23 +109,33 @@ ipset -exist create $SETNAME $IPSTYPE maxelem $MAXELEM ...@@ -81,23 +109,33 @@ ipset -exist create $SETNAME $IPSTYPE maxelem $MAXELEM
# ipset add $SETNAME.tmp $ip # ipset add $SETNAME.tmp $ip
#done #done
if true ; then
# use previous results too
cp $0.list $0.list.human
[ -s "$0.list.old2" ] && cat $0.list.old2 >>$0.list
[ -s "$0.list.old1" ] && cat $0.list.old1 >>$0.list
mv $0.list $0.list.in
sort -u < $0.list.in >$0.list
fi
# clean before use # clean before use
ipset destroy $TMPNAME 2>/dev/null ipset destroy $TMPNAME 2>/dev/null
# Use single ipset run (see https://bugs.etersoft.ru/show_bug.cgi?id=12353) # Use single ipset run (see https://bugs.etersoft.ru/show_bug.cgi?id=12353)
( echo "create $TMPNAME $IPSTYPE hashsize 65536 maxelem $MAXELEM" ; \ ( echo "create $TMPNAME $IPSTYPE hashsize 65536 maxelem $MAXELEM" ; \
cat $0.list | grep -v "^$" | grep -v ":" | sed -e "s|^|add $TMPNAME |" ) | ipset -exist restore cat $0.list | grep -v "^#" | grep -v "^$" | grep -v ":" | sed -e "s|^|add $TMPNAME |" ) | ipset -exist restore
# remove skipped ip # remove skipped ip
cat a_no_egw.list | grep -v "^ *#" | while read ip ; do #cat a_no_egw.list | grep -v "^ *#" | while read ip ; do
ipset del $TMPNAME $ip # ipset del $TMPNAME $ip
done #done
ipset list $TMPNAME >$0.ipv4 ipset list $TMPNAME >$0.ipv4
ipset list $TMPNAME | wc -l >$0.count ipset list $TMPNAME | wc -l >$0.count
ipset list $TMPNAME | grep "/" >$0.subnet ipset list $TMPNAME | grep "/" >$0.subnet
cat $0.list | grep ":" >$0.skipped.ipv6 cat $0.list | grep ":" >$0.skipped.ipv6
ipset swap $TMPNAME $SETNAME ipset swap $TMPNAME $SETNAME || echo "Can't update to new ipset list!" >&2
mv $0.list $0.list.old mv $0.list $0.list.old
set_rules set_rules
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment