From a0f0172da15848f9dd023c62da5086f515b63f70 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 27 Oct 2020 17:18:47 +0100 Subject: [PATCH 1/8] Add bc depend for tcpping --- openmptcprouter/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openmptcprouter/Makefile b/openmptcprouter/Makefile index a1329b98f..3928493ae 100644 --- a/openmptcprouter/Makefile +++ b/openmptcprouter/Makefile @@ -14,7 +14,8 @@ PKG_RELEASE:=1 include $(INCLUDE_DIR)/package.mk MY_DEPENDS := \ - omr-tracker + omr-tracker \ + bc define Package/$(PKG_NAME) SECTION:=OMR From 97100ee3be55d4d727ce2bb4a54766083526a645 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 27 Oct 2020 17:19:30 +0100 Subject: [PATCH 2/8] Fix issue with MLVPN and error in v2ray check --- openmptcprouter/files/etc/init.d/openmptcprouter-vps | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index 65a7d4f11..33383f44e 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -668,6 +668,7 @@ _set_vpn_ip() { vpnip_remote=$(ip -4 r list dev ${vpnifname} | grep via | grep -v default | grep -v / | grep -v metric | awk '{print $1}' | tr -d "\n") [ -z "$vpnip_remote" ] && vpnip_remote=$(ip -4 r list dev ${vpnifname} | grep kernel | awk '{print $1}' | tr -d "\n") [ -z "$vpnip_remote" ] && vpnip_remote=$(ip -4 r list dev ${vpnifname} | grep "proto static src" | awk '{print $3}' | tr -d "\n") + [ -z "$vpnip_remote" ] && vpnip_remote=$(ifstatus omrvpn | jsonfilter -e '@.route[0].nexthop') ula="$(uci -q get network.globals.ula_prefix)" ula_current="$(echo "$vps_config" | jsonfilter -q -e '@.ip6in4.ula')" if [ "$vpnip_remote" != "" ] && [ "$vpnip_local" != "" ] && ([ "$vpnip_remote" != "$vpnip_remote_current" ] || [ "$vpnip_local" != "$vpnip_local_current" ] || [ "$ula" != "$ula_current" ]); then @@ -724,7 +725,7 @@ _vps_firewall_redirect_port() { #uci -q delete firewall.$1 #return fi - [ "$(v2ray.main.enabled)" = "0" ] && v2ray="0" + [ "$(uci -q get v2ray.main.enabled)" = "0" ] && v2ray="0" [ "$proto" = "all" ] && proto="tcp udp" [ "$proto" = "" ] && proto="tcp udp" [ "$src" = "vpn" ] && [ -n "$proto" ] && [ -n "$src_dport" ] && [ "$enabled" != "0" ] && { From afe5fd135b43834d7d3213861b150499246d4d05 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 28 Oct 2020 13:08:50 +0100 Subject: [PATCH 3/8] Force stop/start on MLVPN reload --- mlvpn/files/etc/init.d/mlvpn | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mlvpn/files/etc/init.d/mlvpn b/mlvpn/files/etc/init.d/mlvpn index 6591792d7..ef0ff6ec5 100755 --- a/mlvpn/files/etc/init.d/mlvpn +++ b/mlvpn/files/etc/init.d/mlvpn @@ -4,7 +4,6 @@ START=88 SERVICE_DAEMONIZE=1 #SERVICE_SIG="KILL" - interface_multipath_settings() { local mode port local config="$1" @@ -71,3 +70,8 @@ start() { stop() { service_stop /usr/sbin/mlvpn } + +reload() { + stop + start +} \ No newline at end of file From 0f5b06a31ae3762a5a774d2df69ec07bc5ff7396 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 28 Oct 2020 13:09:26 +0100 Subject: [PATCH 4/8] Block QUIC by default --- .../files/etc/uci-defaults/1980-omr-firewall | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall b/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall index 5dfb44313..aed1164e8 100755 --- a/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall +++ b/openmptcprouter/files/etc/uci-defaults/1980-omr-firewall @@ -131,6 +131,26 @@ if [ "$(uci -q get firewall.fwlantovpn)" = "" ]; then commit firewall EOF fi + +if [ "$(uci -q get firewall.blockquicproxy)" = "" ]; then + uci -q batch <<-EOF >/dev/null + set firewall.blockquicproxy=rule + set firewall.blockquicproxy.name='Block QUIC Proxy' + set firewall.blockquicproxy.proto='udp' + set firewall.blockquicproxy.dest_port='443' + set firewall.blockquicproxy.target='DROP' + set firewall.blockquicproxy.src='lan' + set firewall.blockquicall=rule + set firewall.blockquicall.name='Block QUIC All' + set firewall.blockquicall.proto='udp' + set firewall.blockquicall.src='*' + set firewall.blockquicall.dest='*' + set firewall.blockquicall.dest_port='443' + set firewall.blockquicall.target='DROP' + commit firewall + EOF +fi + uci -q batch <<-EOF >/dev/null set firewall.@zone[0].mtu_fix='1' set firewall.zone_vpn.mtu_fix='1' From 7c34900a7dad7246a761f617da3bd7452ea4a430 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 28 Oct 2020 14:39:42 +0100 Subject: [PATCH 5/8] Add cake for glorytun udp --- glorytun-udp/init | 3 +++ 1 file changed, 3 insertions(+) diff --git a/glorytun-udp/init b/glorytun-udp/init index 1a3273e33..638736017 100755 --- a/glorytun-udp/init +++ b/glorytun-udp/init @@ -80,6 +80,9 @@ start_instance() { procd_close_instance + tc qdisc replace dev ${dev} root cake + + #ip link set $dev txqlen 100 #config_load network #config_foreach add_glorytun_path interface From f54e40b7e8c3ec43047db8d4280d4d6e04d17133 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 28 Oct 2020 14:40:09 +0100 Subject: [PATCH 6/8] remove bc depend because busybox bc is used --- openmptcprouter/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/openmptcprouter/Makefile b/openmptcprouter/Makefile index 3928493ae..a1329b98f 100644 --- a/openmptcprouter/Makefile +++ b/openmptcprouter/Makefile @@ -14,8 +14,7 @@ PKG_RELEASE:=1 include $(INCLUDE_DIR)/package.mk MY_DEPENDS := \ - omr-tracker \ - bc + omr-tracker define Package/$(PKG_NAME) SECTION:=OMR From 701c0339defdd5617d551f915879b790a30b0911 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 28 Oct 2020 15:22:29 +0100 Subject: [PATCH 7/8] Fix add interface in wizard --- luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 369c7ffc1..4d5e73e4b 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -93,7 +93,7 @@ function wizard_add() ucic:foreach("network", "interface", function(s) local sectionname = s[".name"] if sectionname:match("^wan(%d+)$") then - i = i + 1 + i = tonumber(string.match(sectionname, '(%d+)$')) + 1 end if ucic:get("network",sectionname,"multipath") == "master" then multipath_master = true From 34caf3ee143cfec911c8ac6bd8ebe8875371cdaa Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 28 Oct 2020 15:22:58 +0100 Subject: [PATCH 8/8] Fix metric and txqueuelen --- mptcp/files/etc/init.d/mptcp | 40 ++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/mptcp/files/etc/init.d/mptcp b/mptcp/files/etc/init.d/mptcp index 2e5518319..9f0db4286 100755 --- a/mptcp/files/etc/init.d/mptcp +++ b/mptcp/files/etc/init.d/mptcp @@ -46,25 +46,39 @@ interface_macaddr_count() { [ "$macaddr" = "$dmacaddr" ] && nbmac=$((nbmac+1)) } +interface_max_metric() { + local config="$1" + config_get metric "$config" metric + if [ "$metric" = "$count" ]; then + count=$((count+1)) + config_set "$config" metric $count + fi + if [ "$metric" -gt "$count" ]; then + count=$metric + fi +} + interface_multipath_settings() { - local mode iface proto + local mode iface proto metric local config="$1" local intf="$2" local enabled config_get enabled "$config" auto "1" config_get iface "$config" ifname + config_get txqueuelen "$config" txqueuelen [ -z "$iface" ] && iface=$(ifstatus "$config" | jsonfilter -q -e '@["l3_device"]') if [ "$(uci -q get openmptcprouter.${config}.metric)" = "" ]; then - count=$(($count+1)) + count=$((count+1)) + metric=$count else - count="$(uci -q get openmptcprouter.${config}.metric)" + metric="$(uci -q get openmptcprouter.${config}.metric)" fi - config_set "$config" metric $count - uci -q set network.${config}.metric=$count - uci -q set openmptcprouter.${config}.metric=$count + config_set "$config" metric $metric + uci -q set network.${config}.metric=$metric + uci -q set openmptcprouter.${config}.metric=$metric config_get mode "$config" multipath - id=$count + id=$metric [ "$mode" = "" ] && { mode="$(uci -q get openmptcprouter.${config}.multipath)" [ -n "$mode" ] && uci -q set network.${config}.multipath="$mode" @@ -221,11 +235,11 @@ interface_multipath_settings() { #echo "ip route replace default via $gateway dev $iface" ip route replace default via $gateway dev $iface } - [ "$mode" = "off" ] && { - ifconfig $iface txqueuelen 50 > /dev/null 2>&1 - } || { + if [ "$txqueuelen" != "" ]; then + ifconfig $iface txqueuelen $txqueuelen > /dev/null 2>&1 + else ifconfig $iface txqueuelen 100 > /dev/null 2>&1 - } + fi fi if [ "$(uci -q get openmptcprouter.settings.disable_ipv6)" != "1" ] && [ "$config" != "omr6in4" ]; then # IPv6 Updates: @@ -398,6 +412,10 @@ start_service() { mptcpintf="" master="" + count="0" + config_load openmptcprouter + config_foreach interface_max_metric interface + config_load network #config_foreach remove route #config_foreach remove route6