From bbf41d33aed4ee20f571211e2bbd82c81c9f594e Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Tue, 9 Mar 2021 10:15:15 +0100 Subject: [PATCH] Fix to allow many IPs on VPS --- .../luasrc/view/openmptcprouter/wizard.htm | 2 +- omr-tracker/files/bin/omr-tracker-gre | 2 +- .../files/etc/init.d/openmptcprouter-vps | 112 +++++++++--------- .../files/etc/uci-defaults/1920-omr-network | 4 + 4 files changed, 62 insertions(+), 58 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index f5f028568..23e9864f5 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -945,7 +945,7 @@ end end for _, ifacea in ipairs(net:get_networks()) do - if not (ifacea:name() == "loopback" or ifacea:name() == "lan" or ifacea:name() == "omr6in4" or ifacea:name() == "omrvpn" or ifacea:name():match("^omrip.*")) then + if not (ifacea:name() == "loopback" or ifacea:name() == "lan" or ifacea:name() == "omr6in4" or ifacea:name() == "omrvpn" or ifacea:name():match("^oip.*")) then %> <% diff --git a/omr-tracker/files/bin/omr-tracker-gre b/omr-tracker/files/bin/omr-tracker-gre index 89041bbc4..0d0e8ff27 100755 --- a/omr-tracker/files/bin/omr-tracker-gre +++ b/omr-tracker/files/bin/omr-tracker-gre @@ -25,7 +25,7 @@ _ping_tunnel() { config_get gateway $1 gateway config_get ifname $1 ifname config_get disabled $1 disabled - [ "$(echo $ifname | grep omrip)" != "" ] && [ -n "$gateway" ] && [ "$disabled" != "1" ] && { + [ "$(echo $ifname | grep oip)" != "" ] && [ -n "$gateway" ] && [ "$disabled" != "1" ] && { _ping_server $gateway } } diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index f5e2c977e..2e623ac34 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -489,34 +489,34 @@ _get_gre_tunnel() { peeraddr="$(echo $tunnel | jsonfilter -q -e '@.remote_ip')" ipaddr="$(echo $tunnel | jsonfilter -q -e '@.local_ip')" publicaddr="$(echo $tunnel | jsonfilter -q -e '@.public_ip')" - if [ "$peeraddr" != "" ] && [ "$ipaddr" != "" ] && [ "$publicaddr" != "" ] && ([ "$(uci -q get network.omrip${i}.ipaddr)" != "$peeraddr" ] || [ "$(uci -q get network.omrip${i}.ipaddr)" != "$ipaddr" ] || [ "$(uci -q get network.omrip${i}gre.ipaddr)" != "$vpnip_local" ]); then + if [ "$peeraddr" != "" ] && [ "$ipaddr" != "" ] && [ "$publicaddr" != "" ] && ([ "$(uci -q get network.oip${i}.ipaddr)" != "$peeraddr" ] || [ "$(uci -q get network.oip${i}.ipaddr)" != "$ipaddr" ] || [ "$(uci -q get network.oip${i}gre.ipaddr)" != "$vpnip_local" ]); then uci -q batch <<-EOF >/dev/null - set network.omrip${i}gre=interface - set network.omrip${i}gre.label="GRE tunnel for $publicaddr" - set network.omrip${i}gre.proto=gre - set network.omrip${i}gre.nohostroute='1' - set network.omrip${i}gre.ipv6='0' - set network.omrip${i}gre.defaultroute='0' - set network.omrip${i}gre.multipath='off' - set network.omrip${i}gre.peerdns='0' - set network.omrip${i}gre.ttl='255' - set network.omrip${i}gre.ip4table='vpn' - set network.omrip${i}gre.peeraddr="$publicaddr" - set network.omrip${i}gre.ipaddr="$vpnip_local" - set network.omrip${i}=interface - set network.omrip${i}.label="Tunnel for $publicaddr" - set network.omrip${i}.proto=static - set network.omrip${i}.nohostroute='1' - set network.omrip${i}.ifname="@omrip${i}gre" - set network.omrip${i}.ipv6='0' - set network.omrip${i}.defaultroute='0' - set network.omrip${i}.multipath='off' - set network.omrip${i}.peerdns='0' - set network.omrip${i}.ip4table='vpn' - set network.omrip${i}.gateway="$ipaddr" - set network.omrip${i}.ipaddr="$peeraddr" - set network.omrip${i}.netmask="255.255.255.252" - set network.omrip${i}.lookup="667${i}" + set network.oip${i}gre=interface + set network.oip${i}gre.label="GRE tunnel for $publicaddr" + set network.oip${i}gre.proto=gre + set network.oip${i}gre.nohostroute='1' + set network.oip${i}gre.ipv6='0' + set network.oip${i}gre.defaultroute='0' + set network.oip${i}gre.multipath='off' + set network.oip${i}gre.peerdns='0' + set network.oip${i}gre.ttl='255' + set network.oip${i}gre.ip4table='vpn' + set network.oip${i}gre.peeraddr="$publicaddr" + set network.oip${i}gre.ipaddr="$vpnip_local" + set network.oip${i}=interface + set network.oip${i}.label="Tunnel for $publicaddr" + set network.oip${i}.proto=static + set network.oip${i}.nohostroute='1' + set network.oip${i}.ifname="@oip${i}gre" + set network.oip${i}.ipv6='0' + set network.oip${i}.defaultroute='0' + set network.oip${i}.multipath='off' + set network.oip${i}.peerdns='0' + set network.oip${i}.ip4table='vpn' + set network.oip${i}.gateway="$ipaddr" + set network.oip${i}.ipaddr="$peeraddr" + set network.oip${i}.netmask="255.255.255.252" + set network.oip${i}.lookup="667${i}" commit network EOF allintf=$(uci -q get firewall.zone_vpn.network) @@ -525,39 +525,39 @@ _get_gre_tunnel() { uci -q add_list firewall.zone_vpn.network=$intf done uci -q batch <<-EOF >/dev/null - add_list firewall.zone_vpn.network="omrip${i}gre" - add_list firewall.zone_vpn.network="omrip${i}" + add_list firewall.zone_vpn.network="oip${i}gre" + add_list firewall.zone_vpn.network="oip${i}" commit firewall EOF ssport="$(echo $tunnel | jsonfilter -q -e '@.shadowsocks_port')" uci -q batch <<-EOF >/dev/null - set shadowsocks-libev.omrip${i}server=server - set shadowsocks-libev.omrip${i}server.label="Server with public IP $publicaddr" - set shadowsocks-libev.omrip${i}server.server_port="$ssport" - set shadowsocks-libev.omrip${i}server.disabled="1" - set shadowsocks-libev.omrip${i}server.server="$(uci -q get shadowsocks-libev.sss0.server)" - set shadowsocks-libev.omrip${i}server.method="$(uci -q get shadowsocks-libev.sss0.method)" - set shadowsocks-libev.omrip${i}server.key="$(uci -q get shadowsocks-libev.sss0.key)" - set shadowsocks-libev.omrip${i}=ss_redir - set shadowsocks-libev.omrip${i}.label="ss-redir for public IP $publicaddr" - set shadowsocks-libev.omrip${i}.server="omrip${i}server" - set shadowsocks-libev.omrip${i}.local_port="230$i" - set shadowsocks-libev.omrip${i}.local_address="$(uci -q get shadowsocks-libev.hi.local_address)" - set shadowsocks-libev.omrip${i}.mode='tcp_and_udp' - set shadowsocks-libev.omrip${i}.reuse_port='1' - set shadowsocks-libev.omrip${i}.mptcp='1' - set shadowsocks-libev.omrip${i}.ipv6_first='1' - set shadowsocks-libev.omrip${i}.timeout="$(uci -q get shadowsocks-libev.hi.timeout)" - set shadowsocks-libev.omrip${i}.fast_open="$(uci -q get shadowsocks-libev.hi.fast_open)" - set shadowsocks-libev.omrip${i}.no_delay="$(uci -q get shadowsocks-libev.hi.no_delay)" - set shadowsocks-libev.omrip${i}_rule=ss_rules - set shadowsocks-libev.omrip${i}_rule.label="Rules for public IP $publicaddr" - set shadowsocks-libev.omrip${i}_rule.server="omrip${i}server" - set shadowsocks-libev.omrip${i}_rule.disabled='1' - set shadowsocks-libev.omrip${i}_rule.src_default='bypass' - set shadowsocks-libev.omrip${i}_rule.dst_default='bypass' - set shadowsocks-libev.omrip${i}_rule.local_default='bypass' - set shadowsocks-libev.omrip${i}_rule.redir_tcp="omrip${i}" + set shadowsocks-libev.oip${i}server=server + set shadowsocks-libev.oip${i}server.label="Server with public IP $publicaddr" + set shadowsocks-libev.oip${i}server.server_port="$ssport" + set shadowsocks-libev.oip${i}server.disabled="1" + set shadowsocks-libev.oip${i}server.server="$(uci -q get shadowsocks-libev.sss0.server)" + set shadowsocks-libev.oip${i}server.method="$(uci -q get shadowsocks-libev.sss0.method)" + set shadowsocks-libev.oip${i}server.key="$(uci -q get shadowsocks-libev.sss0.key)" + set shadowsocks-libev.oip${i}=ss_redir + set shadowsocks-libev.oip${i}.label="ss-redir for public IP $publicaddr" + set shadowsocks-libev.oip${i}.server="oip${i}server" + set shadowsocks-libev.oip${i}.local_port="230$i" + set shadowsocks-libev.oip${i}.local_address="$(uci -q get shadowsocks-libev.hi.local_address)" + set shadowsocks-libev.oip${i}.mode='tcp_and_udp' + set shadowsocks-libev.oip${i}.reuse_port='1' + set shadowsocks-libev.oip${i}.mptcp='1' + set shadowsocks-libev.oip${i}.ipv6_first='1' + set shadowsocks-libev.oip${i}.timeout="$(uci -q get shadowsocks-libev.hi.timeout)" + set shadowsocks-libev.oip${i}.fast_open="$(uci -q get shadowsocks-libev.hi.fast_open)" + set shadowsocks-libev.oip${i}.no_delay="$(uci -q get shadowsocks-libev.hi.no_delay)" + set shadowsocks-libev.oip${i}_rule=ss_rules + set shadowsocks-libev.oip${i}_rule.label="Rules for public IP $publicaddr" + set shadowsocks-libev.oip${i}_rule.server="oip${i}server" + set shadowsocks-libev.oip${i}_rule.disabled='1' + set shadowsocks-libev.oip${i}_rule.src_default='bypass' + set shadowsocks-libev.oip${i}_rule.dst_default='bypass' + set shadowsocks-libev.oip${i}_rule.local_default='bypass' + set shadowsocks-libev.oip${i}_rule.redir_tcp="oip${i}" commit shadowsocks-libev EOF fi diff --git a/openmptcprouter/files/etc/uci-defaults/1920-omr-network b/openmptcprouter/files/etc/uci-defaults/1920-omr-network index 40ac946bf..4a4710df9 100755 --- a/openmptcprouter/files/etc/uci-defaults/1920-omr-network +++ b/openmptcprouter/files/etc/uci-defaults/1920-omr-network @@ -291,6 +291,10 @@ if [ "$(uci -q show network.wan1 | grep multipath)" = "" ] && [ -z "$(uci -q get #set network.@route6[-1].target='::/0' #EOF fi + +# Replace omrip to oip in config for old config +sed -i 's/omrip/oip/g' /etc/config/* + uci -q commit macvlan uci -q commit network rm -f /tmp/luci-indexcache