diff --git a/network/blatto-daemon.py b/network/blatto-daemon.py index 59edca6fd27a1cb76272b7bfdf130a5185cb1e43..9f5c53325da5fbd84747311d173860e357466a21 100755 --- a/network/blatto-daemon.py +++ b/network/blatto-daemon.py @@ -79,20 +79,6 @@ while True: w = iwc[i["ifname"]] out["essid"] = w["essid"] interfaces[i["ifname"]] = out - if blatto_wg: - try: - autorouting = open("/run/wg-blatto/autorouting").read().strip() - current_routing = open("/run/wg-blatto/routing").read().strip() - wanted_routing = "no" if blatto else autorouting - p(f"blatto-wg routing: {current_routing} -> {wanted_routing}") - if wanted_routing != current_routing: - subprocess.run(["/etc/net/wg-blatto-route", wanted_routing]) - - current_routing = open("/run/wg-blatto/routing").read().strip() - blatto_wg["routing"] = current_routing - - except FileNotFoundError as e: - p(f"blatto-wg routing: {e}") send({"blatto-wg": blatto_wg, "blatto": blatto, "interfaces": interfaces}, "2a01:510:d504:751a::1" if blatto else "2a01:510:d504:751b::1") p("DONE") signal.sigtimedwait([signal.SIGHUP], 10) diff --git a/network/dhcpcd.enter-hook-defaults b/network/dhcpcd.enter-hook-defaults index 3554202d990198f86a65b32ea90f8d62bd358a1b..cf9b4d837770cb35fdf18314b1230411ce4924b0 100644 --- a/network/dhcpcd.enter-hook-defaults +++ b/network/dhcpcd.enter-hook-defaults @@ -8,7 +8,19 @@ fi if [ "$ifssid" == blatto-jk-5g ] || [ "$ifssid" == blatto-jk-2g ] then conntrack_hack - route6 default via 2a01:510:d504:751a::1 dev w metric 3004 + + route 10.12.11.0/24 dev $interface metric 300 table 12 + route default via 10.12.11.1 dev $interface metric 300 table 12 + route6 2a01:510:d504:751a::0/64 dev $interface metric 300 table 12 + route6 default via 2a01:510:d504:751a::1 dev $interface metric 300 table 12 + + for i in 2 3 4 + do + route default via 10.12.11.$i metric 300 table 12$i + route 10.12.11.0/24 dev $interface metric 300 table 12$i + done + + route6 default via 2a01:510:d504:751a::1 dev $interface metric 3004 fi if [ "$ifssid" == samet-5G ] @@ -21,7 +33,7 @@ then mtu 1340 if [ "$reason" == BOUND ] then - CDWIFI_IFACE=$interface cdwifi-autologin + CDWIFI_IFACE=$interface CDWIFI_CURL="direct curl" cdwifi-autologin fi fi if [ "$ifssid" == Onboard-WiFi ] diff --git a/network/hopik/scripts/con-sm b/network/hopik/scripts/con-sm index c24fbb2602e0c7a99709ac419dcfb1fada53454a..32b7b8bae6cb101716e751f5b6606247fd50065a 100755 --- a/network/hopik/scripts/con-sm +++ b/network/hopik/scripts/con-sm @@ -12,6 +12,19 @@ ip route add 10.12.0.0/16 via 10.12.11.1 dev $interface metric 1000 ip route add 2a01:510:d504:7500::0/56 via 2a01:510:d504:751a::1 dev wg-blatto metric 1000 ip route add default via 10.12.11.1 dev $interface metric 1000 ip route add default via 2a01:510:d504:751a::1 dev $interface metric 1000 + +ip route add 10.12.11.0/24 dev $interface metric 100 table 12 +ip route add default via 10.12.11.1 dev $interface metric 100 table 12 +ip -6 route add 2a01:510:d504:751a::0/64 dev $interface metric 100 table 12 +ip -6 route add default via 2a01:510:d504:751a::1 dev $interface metric 100 table 12 + +for i in 2 3 4 +do + ip route add route default via 10.12.11.$i metric 100 table 12$i + ip route add route 10.12.11.0/24 dev $interface metric 100 table 12$i +done + + (echo domain jk.blatto.eu; echo nameserver 10.12.11.1 ) | resolvconf -a $interface systemctl reload net-blatto-daemon diff --git a/network/wg-blatto b/network/wg-blatto index 89eb90b2bf16a35e792d72a635234500eecec048..04e93dca7447540169e91be4476354d6258c39c7 100755 --- a/network/wg-blatto +++ b/network/wg-blatto @@ -3,7 +3,9 @@ set -euo xtrace -o pipefail vlan_name=$1 id=$2 -default_routing=${3:-blatto} +adopt=false + +[ "${3:-no}" == adopt ] && adopt=true eval "$(ssh root@blatto.eu wg-get-metadata $vlan_name)" @@ -22,14 +24,15 @@ cat psk | ssh root@blatto.eu "wg-register $vlan_name $id $(hostname) $(cat $id.p mkdir -p /etc/net -cat <<AMEN > /etc/net/wg-blatto +( +cat <<AMEN #!/bin/sh set -o xtrace +do_route_flush=\${1:-false} + ip link del wg-blatto || true rm /run/wg-blatto/ || true -ip route flush table 12 -ip -6 route flush table 12 ip link add dev wg-blatto type wireguard ip addr add $v4net.$id/24 dev wg-blatto metric 100 @@ -39,85 +42,62 @@ wg set wg-blatto peer \$(cat /etc/wireguard/blatto/blattes.pub) preshared-key /e ip link set mtu 1432 dev wg-blatto ip link set wg-blatto up -ip route add throw 10.0.0.0/8 table 12 -ip route add throw 192.168.0.0/16 table 12 -ip route add throw 172.16.0.0/12 table 12 -ip route add $v4net.0/24 dev wg-blatto table 12 -ip rule add not to $blattes_ipv4 ipproto udp dport $port table 12 -ip -6 route add throw fe80::/10 table 12 -ip -6 route add throw fc00::/7 table 12 -ip -6 route add $v6net::/64 dev wg-blatto table 12 -ip -6 rule add table 12 - -mkdir /run/wg-blatto/ -if [ ${default_routing::5} = auto: ] -then - echo ${default_routing:5} > /run/wg-blatto/autorouting - /etc/net/wg-blatto-route no -else - /etc/net/wg-blatto-route $default_routing -fi AMEN -cat <<AMEN > /etc/net/wg-blatto-route -#!/bin/sh -set -o xtrace +for ups in $upstreams +do + ups_id=upstream_${ups}_id + ups_id=${!ups_id} + echo ip link del wg-blatto2$ups || true + echo ip link add wg-blatto2$ups type sit remote $ipv4_prefix.$vlid.$ups_id local any mode any + echo ip link set wg-blatto2$ups up + echo +done + +cat <<AMEN + +for ipv in 4 6 +do + for tind in 12 12{2,3,4} 612 612{2,3,4} + do + \$do_route_flush && ip -\$ipv route flush table \$tind + ip -\$ipv rule add fwmark \$tind table \$tind priority \$tind + done + ip -\$ipv rule add fwmark 6 table 612 priority 32666 +done + +ip route add default via $v4net.1 dev wg-blatto table 12 metric 1100 +ip route add default via $v6net::1 dev wg-blatto table 12 metric 1100 + +ip route add default dev wg-blatto2mn table 122 metric 1100 src $v4net.$id +ip route add default dev wg-blatto2awn table 123 metric 1100 src $v4net.$id +ip route add default dev wg-blatto2mul table 124 metric 1100 src $v4net.$id -blatto=del -default=del -adopt_blatto=del -adopt_default=del -adopt=del +mkdir /run/wg-blatto/ -if [ \$1 = no ] -then - true -elif [ \$1 = blatto ] -then - blatto=add -elif [ \$1 = all ] -then - blatto=add - default=add -elif [ \$1 = adopt_blatto ] -then - blatto=add - adopt_blatto=add - adopt=add -elif [ \$1 = adopt_all ] -then - blatto=add - default=add - adopt_blatto=add - adopt_default=add - adopt=add -else - echo usage: \$0 no/blatto/all/adopt_blatto/adopt_all - exit 1 -fi +echo $adopt > /run/wg-blatto/adopt +systemctl reload net-blatto-daemon +AMEN +if $adopt +then +cat <<AMEN +ip addr add $adopt_v4net.$id/32 dev wg-blatto metric 1000 +ip addr add $adopt_v6net::$id/128 dev wg-blatto metric 1000 -ip route \$blatto $ipv4_prefix.0.0/16 via $v4net.1 dev wg-blatto table 12 metric 100 -ip route \$blatto ${ipv6_prefix}00::0/56 via $v6net::1 dev wg-blatto table 12 metric 100 -ip route \$default default via $v4net.1 dev wg-blatto table 12 metric 100 -ip route \$default default via $v6net::1 dev wg-blatto table 12 metric 100 +ip route add default dev wg-blatto table 12 metric 1000 src $adopt_v4net.$id +ip route add default dev wg-blatto table 12 metric 1000 src $adopt_v6net::$id -ip addr \$adopt $adopt_v4net.$id/32 dev wg-blatto metric 1 -ip addr \$adopt $adopt_v6net::$id/128 dev wg-blatto metric 1 -ip route \$adopt_blatto $ipv4_prefix.0.0/16 dev wg-blatto table 12 metric 1 src $adopt_v4net.$id -ip route \$adopt_blatto ${ipv6_prefix}00::0/56 dev wg-blatto table 12 metric 1 src $adopt_v6net::$id -ip route \$adopt_default default dev wg-blatto table 12 metric 1 src $adopt_v4net.$id -ip route \$adopt_default default dev wg-blatto table 12 metric 1 src $adopt_v6net::$id +ip route add default dev wg-blatto2mn table 122 metric 1000 src $adopt_v4net.$id +ip route add default dev wg-blatto2awn table 123 metric 1000 src $adopt_v4net.$id +ip route add default dev wg-blatto2mul table 124 metric 1000 src $adopt_v4net.$id -if [ \$adopt = add ] -then - ip addr del $v4net.$id/24 dev wg-blatto metric 100 - ip addr add $v4net.$id/24 dev wg-blatto metric 100 +ip addr del $v4net.$id/24 dev wg-blatto metric 1100 +ip addr add $v4net.$id/24 dev wg-blatto metric 1100 +AMEN fi +) > /etc/net/wg-blatto -echo \$1 > /run/wg-blatto/routing - -systemctl reload net-blatto-daemon -AMEN +rm /etc/net/wg-blatto-route || true -chmod +x /etc/net/wg-blatto{,-route} +chmod +x /etc/net/wg-blatto