mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Add OpenVPN Bonding support
This commit is contained in:
parent
0f87c62f36
commit
8ef4df91e7
4 changed files with 108 additions and 7 deletions
|
@ -631,8 +631,8 @@ function wizard_add()
|
|||
ucic:set("glorytun","vpn","remoteip","10.255.255.1")
|
||||
ucic:set("network","omr6in4","ipaddr","10.255.255.2")
|
||||
ucic:set("network","omr6in4","peeraddr","10.255.255.1")
|
||||
ucic:set("network","omrvpn","proto","none")
|
||||
end
|
||||
ucic:set("network","omrvpn","proto","none")
|
||||
else
|
||||
ucic:set("glorytun","vpn","key","")
|
||||
--ucic:set("glorytun","vpn","enable",0)
|
||||
|
@ -656,8 +656,8 @@ function wizard_add()
|
|||
ucic:set("glorytun-udp","vpn","remoteip","10.255.254.1")
|
||||
ucic:set("network","omr6in4","ipaddr","10.255.254.2")
|
||||
ucic:set("network","omr6in4","peeraddr","10.255.254.1")
|
||||
ucic:set("network","omrvpn","proto","none")
|
||||
end
|
||||
ucic:set("network","omrvpn","proto","none")
|
||||
else
|
||||
ucic:set("glorytun-udp","vpn","key","")
|
||||
end
|
||||
|
@ -677,9 +677,11 @@ function wizard_add()
|
|||
ucic:set("dsvpn","vpn","key",dsvpn_key)
|
||||
ucic:set("dsvpn","vpn","localip","10.255.251.2")
|
||||
ucic:set("dsvpn","vpn","remoteip","10.255.251.1")
|
||||
ucic:set("network","omr6in4","ipaddr","10.255.251.2")
|
||||
ucic:set("network","omr6in4","peeraddr","10.255.251.1")
|
||||
ucic:set("network","omrvpn","proto","none")
|
||||
if default_vpn == "dsvpn" then
|
||||
ucic:set("network","omr6in4","ipaddr","10.255.251.2")
|
||||
ucic:set("network","omr6in4","peeraddr","10.255.251.1")
|
||||
ucic:set("network","omrvpn","proto","none")
|
||||
end
|
||||
else
|
||||
ucic:set("dsvpn","vpn","key","")
|
||||
--ucic:set("dsvpn","vpn","enable",0)
|
||||
|
@ -770,6 +772,7 @@ function wizard_add()
|
|||
luci.sys.call("/etc/init.d/mlvpn restart >/dev/null 2>/dev/null")
|
||||
--luci.sys.call("/etc/init.d/ubond restart >/dev/null 2>/dev/null")
|
||||
luci.sys.call("/etc/init.d/openvpn restart >/dev/null 2>/dev/null")
|
||||
luci.sys.call("/etc/init.d/openvpnbonding restart >/dev/null 2>/dev/null")
|
||||
luci.sys.call("/etc/init.d/dsvpn restart >/dev/null 2>/dev/null")
|
||||
luci.sys.call("/etc/init.d/omr-tracker start >/dev/null 2>/dev/null")
|
||||
luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null")
|
||||
|
|
|
@ -306,6 +306,8 @@
|
|||
<% if nixio.fs.access("/usr/sbin/ubond") then %><option value="ubond" <% if uci:get("ubond","general","enable") == "1" then %>selected="selected"<% end %>>UBOND</option><% end %>
|
||||
<% elseif vpn == "openvpn" then %>
|
||||
<% if nixio.fs.access("/etc/init.d/openvpn") then %><option value="openvpn" <% if uci:get("openvpn","omr","enabled") == "1" then %>selected="selected"<% end %>>OpenVPN TCP</option><% end %>
|
||||
<% elseif vpn == "openvpn_bonding" then %>
|
||||
<% if nixio.fs.access("/etc/init.d/openvpnbonding") then %><option value="openvpn_bonding" <% if uci:get("openmptcprouter","settings","vpn") == "openvpn_bonding" then %>selected="selected"<% end %>>OpenVPN Bonding</option><% end %>
|
||||
<%
|
||||
end
|
||||
end
|
||||
|
@ -319,7 +321,8 @@
|
|||
<% if nixio.fs.access("/usr/sbin/dsvpn") then %><option value="dsvpn" <% if uci:get("dsvpn","vpn","enable") == "1" then %>selected="selected"<% end %>>A Dead Simple VPN</option><% end %>
|
||||
<% if nixio.fs.access("/usr/sbin/mlvpn") then %><option value="mlvpn" <% if uci:get("mlvpn","general","enable") == "1" then %>selected="selected"<% end %>>MLVPN</option><% end %>
|
||||
<% if nixio.fs.access("/usr/sbin/ubond") then %><option value="ubond" <% if uci:get("ubond","general","enable") == "1" then %>selected="selected"<% end %>>UBOND</option><% end %>
|
||||
<% if nixio.fs.access("/usr/sbin/openvpn") then %><option value="openvpn" <% if uci:get("openvpn","omr","enabled") == "1" then %>selected="selected"<% end %>>OpenVPN</option><% end %>
|
||||
<% if nixio.fs.access("/etc/init.d/openvpn") then %><option value="openvpn" <% if uci:get("openvpn","omr","enabled") == "1" then %>selected="selected"<% end %>>OpenVPN</option><% end %>
|
||||
<% if nixio.fs.access("/etc/init.d/openvpnbonding") then %><option value="openvpn_bonding" <% if uci:get("openmptcprouter","settings","vpn") == "openvpn_bonding" then %>selected="selected"<% end %>>OpenVPN Bonding</option><% end %>
|
||||
<option value="none" <% if uci:get("openmptcprouter","settings","vpn") == "none" then %>selected="selected"<% end %>>None</option>
|
||||
<%
|
||||
end
|
||||
|
|
|
@ -80,7 +80,7 @@ MY_DEPENDS := \
|
|||
!TARGET_mvebu:luci-proto-qmi wpad-basic kmod-mt7601u kmod-rtl8187 \
|
||||
luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang (TARGET_x86_64||TARGET_arm64):kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \
|
||||
luci-app-acl block-mount blockd fstools luci-app-shutdown libwebp luci-proto-gre tcptraceroute luci-proto-mbim kmod-rtl8xxxu kmod-ath9k-htc luci-app-ttyd luci-mod-dashboard (TARGET_x86||TARGET_x86_64):rtl8192eu-firmware kmod-usb2 libustream-wolfssl (TARGET_x86||TARGET_x86_64):kmod-ixgbevf \
|
||||
hwinfo (TARGET_x86||TARGET_x86_64):dmidecode luci-app-packet-capture
|
||||
hwinfo (TARGET_x86||TARGET_x86_64):dmidecode luci-app-packet-capture kmod-bonding luci-proto-bonding
|
||||
# luci-theme-bootstrap luci-theme-openwrt-2020 luci-theme-openwrt luci-app-status
|
||||
# luci-proto-bonding luci-app-statistics luci-proto-gre
|
||||
# softethervpn5-client softethervpn5-server luci-app-nginx-ha
|
||||
|
|
95
openmptcprouter/files/etc/init.d/openvpnbonding
Executable file
95
openmptcprouter/files/etc/init.d/openvpnbonding
Executable file
|
@ -0,0 +1,95 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2020 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
|
||||
# Released under GPL 3. See LICENSE for the full terms.
|
||||
|
||||
{
|
||||
START=70
|
||||
STOP=10
|
||||
USE_PROCD=1
|
||||
}
|
||||
|
||||
_getremoteip() {
|
||||
[ "$(uci -q get openmptcprouter.$1.master)" = "1" ] && remoteip=$(uci -q get openmptcprouter.$1.ip)
|
||||
}
|
||||
|
||||
_openvpnbonding() {
|
||||
local interface=$1
|
||||
if [ "$(uci -q get openmptcprouter.${interface}.multipath)" = "master" ] || [ "$(uci -q get openmptcprouter.${interface}.multipath)" = "on" ]; then
|
||||
nbintf=$(($nbintf+1))
|
||||
remoteip=""
|
||||
config_load openmptcprouter
|
||||
config_foreach _getremoteip server
|
||||
if [ -n "$remoteip" ]; then
|
||||
localip=$(ubus call network.interface.$interface status | jsonfilter -e '@["ipv4-address"][0].address' | tr -d "\n")
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
set openvpn.omr_bonding_${interface}=openvpn
|
||||
set openvpn.omr_bonding_${interface}.dev="bond${interface}"
|
||||
set openvpn.omr_bonding_${interface}.dev_type="tap"
|
||||
set openvpn.omr_bonding_${interface}.cipher='AES-256-CBC'
|
||||
set openvpn.omr_bonding_${interface}.port="6535${nbintf}"
|
||||
set openvpn.omr_bonding_${interface}.remote="${remoteip}"
|
||||
set openvpn.omr_bonding_${interface}.local="${localip}"
|
||||
set openvpn.omr_bonding_${interface}.lport='0'
|
||||
set openvpn.omr_bonding_${interface}.ncp_disable='1'
|
||||
set openvpn.omr_bonding_${interface}.auth_nocache='1'
|
||||
set openvpn.omr_bonding_${interface}.proto='udp'
|
||||
set openvpn.omr_bonding_${interface}.client='1'
|
||||
set openvpn.omr_bonding_${interface}.tls_client='1'
|
||||
set openvpn.omr_bonding_${interface}.enabled='1'
|
||||
set openvpn.omr_bonding_${interface}.key='/etc/luci-uploads/client.key'
|
||||
set openvpn.omr_bonding_${interface}.cert='/etc/luci-uploads/client.crt'
|
||||
set openvpn.omr_bonding_${interface}.ca='/etc/luci-uploads/ca.crt'
|
||||
commit openvpn
|
||||
EOF
|
||||
if [ "$(uci -q get network.omrvpn.slaves | grep bond${interface})" = "" ]; then
|
||||
uci -q add_list network.omrvpn.slaves="bond${interface}"
|
||||
fi
|
||||
/etc/init.d/openvpn start omr_bonding_${interface}
|
||||
ip link set bond${interface} master bonding-omrvpn
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
_disable_openvpnbonding()
|
||||
{
|
||||
name=$1
|
||||
if [ "$(echo $name | grep omr_bonding)" != "" ]; then
|
||||
uci -q set openvpn.${name}.enabled='0'
|
||||
fi
|
||||
}
|
||||
|
||||
start_service()
|
||||
{
|
||||
if [ "$(uci -q get openmptcprouter.settings.vpn)" = "openvpn_bonding" ]; then
|
||||
nbintf=0
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
set network.omrvpn.proto='bonding'
|
||||
set network.omrvpn.bonding_policy='balance-rr'
|
||||
set network.omrvpn.packets_per_slave='1'
|
||||
set network.omrvpn.xmit_hash_policy='layer2'
|
||||
set network.omrvpn.all_slaves_active='0'
|
||||
set network.omrvpn.netmask='255.255.255.0'
|
||||
set network.omrvpn.ipaddr='10.255.248.2'
|
||||
set network.omrvpn.link_monitoring='mii'
|
||||
set network.omrvpn.miimon='10'
|
||||
set network.omrvpn.downdelay='100'
|
||||
set network.omrvpn.updelay='20'
|
||||
set network.omrvpn.use_carrier='1'
|
||||
commit network
|
||||
EOF
|
||||
config_load openmptcprouter
|
||||
config_foreach _openvpnbonding interface
|
||||
ip link set bonding-omrvpn up
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
commit network
|
||||
EOF
|
||||
else
|
||||
config_load openvpn
|
||||
config_foreach _disable_openvpnbonding
|
||||
uci -q commit openvpn
|
||||
fi
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger "openvpn" "network"
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue