diff --git a/README.md b/README.md index 37ea1ef..e7e467e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -# _Advanced Users only_ - # openvpn-multihop Multihop with OpenVPN Tunnels on OPNsense @@ -8,7 +6,7 @@ Multihop with OpenVPN Tunnels on OPNsense Check if your provider supports this. [Perfect Privacy](https://www.perfect-privacy.com/en/features/multi-hop-vpn) is known to support at least 4 Tunnel. -Build Instructions +# Build Instructions ``` bash git clone https://github.com/opnsense/plugins diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Multihop/forms/general.xml b/src/opnsense/mvc/app/controllers/OPNsense/Multihop/forms/general.xml index d3145a1..fab01cb 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Multihop/forms/general.xml +++ b/src/opnsense/mvc/app/controllers/OPNsense/Multihop/forms/general.xml @@ -18,4 +18,11 @@ If unchecked no static route entry will be added. Use only if you know what you are doing. true + + multihop.general.inet6 + + checkbox + If unchecked IP6 Traffice will not be routed trough tunnels + true + diff --git a/src/opnsense/mvc/app/models/OPNsense/Multihop/Multihop.xml b/src/opnsense/mvc/app/models/OPNsense/Multihop/Multihop.xml index 4d3c680..f5a1e2d 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Multihop/Multihop.xml +++ b/src/opnsense/mvc/app/models/OPNsense/Multihop/Multihop.xml @@ -17,6 +17,10 @@ 1 N + + 1 + N + diff --git a/src/opnsense/scripts/OPNsense/Multihop/multihop.sh b/src/opnsense/scripts/OPNsense/Multihop/multihop.sh index c5d279b..59269d1 100755 --- a/src/opnsense/scripts/OPNsense/Multihop/multihop.sh +++ b/src/opnsense/scripts/OPNsense/Multihop/multihop.sh @@ -28,6 +28,7 @@ VPNID=$(pluginctl -g OPNsense.multihop | jq -r '.[].client[]? | .vpnid') ROUTE=$(pluginctl -g OPNsense.multihop | jq -r '.general.setroute') AUTO=$(pluginctl -g OPNsense.multihop | jq -r '.general.autorestart') +INET6=$(pluginctl -g OPNsense.multihop | jq -r '.general.inet6') DFL_ROUTE=$(netstat -4nr | grep default | awk '{ print $2}') HOPS=$(echo $VPNID | wc -w) COUNT=1 @@ -118,6 +119,10 @@ else func_addroute $IP fi + if [ $INET6 -eq 1 ]; then + NET6='--redirect-gateway ipv6' + fi + #Bring up the tunnels for HOP in $VPNID @@ -140,6 +145,7 @@ else # before we check the status sleep 5; + echo "state all" | \ nc -N -U /var/etc/openvpn/client$HOP.sock | \ grep CONNECTED > /dev/null @@ -149,14 +155,13 @@ else func_stop fi else - #Start last tunnel openvpn --config /var/etc/openvpn/client$HOP.conf \ --route-nopull \ - --redirect-gateway ipv6 \ - --redirect-gateway def1 + --redirect-gateway def1 \ + $NET6 - sleep 5; + sleep 5; echo "state all" | \ nc -N -U /var/etc/openvpn/client$HOP.sock | \ @@ -174,14 +179,14 @@ else if [ $AUTO -eq 1 ]; then DPING=$(netstat -4nr | grep ovpnc | grep UGS | \ - awk '{ print $2 }' | sort -u) - - for GW in $DPING - do - dpinger -o /dev/null -S -L 35% \ - -C "/usr/local/opnsense/scripts/OPNsense/Multihop/multihop.sh restart" \ - -p /var/run/dpinger-multihop-`echo $GW | sed 's/\./-/g'`.pid $GW - done + awk '{ print $2 }' | sort -u) + + for GW in $DPING + do + dpinger -o /dev/null -S -L 35% \ + -C "/usr/local/opnsense/scripts/OPNsense/Multihop/multihop.sh restart" \ + -p /var/run/dpinger-multihop-`echo $GW | sed 's/\./-/g'`.pid $GW + done fi fi #End Tunnel Function @@ -190,13 +195,13 @@ fi case $1 in start) func_start - func_check + func_check ;; stop) func_stop ;; restart) func_stop - func_start - func_check + func_start + func_check ;; status) func_check ;;