servers/roles/ocserv/files/ocserv-script
Timotej Lazar cf6b682cf8 Add ocserv role
Create a self-signed CA, set up group configs, add script to allow new
connections through the firewall.

In the base debian role, drop the default nftables forward chain with
drop policy because it clashes with this. If you enable forwarding on
a debian host, make sure to configure the firewall.
2025-04-12 18:38:48 +02:00

26 lines
717 B
Bash

#!/bin/sh
set -x
[ -n "$DEVICE" ] || exit 1
[ -n "$USERNAME" ] || exit 2
[ -n "$IP_REMOTE" ] || exit 3
chain="inet ocserv client-${USERNAME}"
remote_ip="${IP_REMOTE%/*}"
case "${REASON}" in
connect)
nft "add chain ${chain} { type filter hook forward priority filter; policy accept; }"
nft "flush chain ${chain}" # in case it already existed and not empty
if [ -n "$OCSERV_ROUTES" ] ; then
# convert netmask to prefix len, e.g. /255.0.0.0 to /8 and replace spaces with commas
routes="$(netmask $OCSERV_ROUTES | paste -s -d ',' | tr -d '[:space:]')"
nft "add rule ${chain} iif ${DEVICE} ip saddr ${remote_ip} ip daddr { ${routes} } mark set 0x100"
fi
;;
disconnect)
nft "delete chain ${chain}"
;;
esac