Add support for Portforwarding TCP/UDP using socat.

This commit is contained in:
2020-06-03 14:10:27 +02:00
parent 53de5746cf
commit 498b34741c
5 changed files with 249 additions and 1 deletions

View File

@ -2310,6 +2310,76 @@ fi
echo
# -------------
# --- Portforwarding
# -------------
# ---
# - Portforwarding TCP
# ---
echononl "\t\tPortforwarding TCP"
if [[ ${#portforward_tcp_arr[@]} -gt 0 ]] ; then
for _val in "${portforward_tcp_arr[@]}" ; do
# - Split value
# -
IFS=':' read -a _val_arr <<< "${_val}"
# - Allow Packets IN
# -
$ipt -A INPUT -i ${_val_arr[0]} -p tcp -d ${_val_arr[1]} --dport ${_val_arr[2]} -m conntrack --ctstate NEW -j ACCEPT
# - Allow Packets FORWARD
# -
$ipt -A FORWARD -i ${_val_arr[0]} -p tcp -d ${_val_arr[3]} --dport ${_val_arr[4]} -m conntrack --ctstate NEW -j ACCEPT
_job_id="$(ps ax | grep "TCP4-LISTEN:${_val_arr[2]},fork,bind=${_val_arr[1]}" | grep -v grep | awk '{print$1}')"
if [[ -n "$_job_id" ]]; then
kill ${_job_id} > /dev/null 2>&1
fi
socat TCP4-LISTEN:${_val_arr[2]},fork,bind=${_val_arr[1]} TCP:${_val_arr[3]}:${_val_arr[4]} &
done
echo_done
else
echo_skipped
fi
echononl "\t\tPortforwarding UDP"
if [[ ${#portforward_udp_arr[@]} -gt 0 ]] ; then
for _val in "${portforward_udp_arr[@]}" ; do
# - Split value
# -
IFS=':' read -a _val_arr <<< "${_val}"
# - Allow Packets IN
# -
$ipt -A INPUT -i ${_val_arr[0]} -p udp -d ${_val_arr[1]} --dport ${_val_arr[2]} -m conntrack --ctstate NEW -j ACCEPT
# - Allow Packets FORWARD
# -
$ipt -A FORWARD -i ${_val_arr[0]} -p udp -d ${_val_arr[3]} --dport ${_val_arr[4]} -m conntrack --ctstate NEW -j ACCEPT
_job_id="$(ps ax | grep "UDP4-LISTEN:${_val_arr[2]},fork,bind=${_val_arr[1]}" | grep -v grep | awk '{print$1}')"
if [[ -n "$_job_id" ]]; then
kill ${_job_id} > /dev/null 2>&1
fi
socat UDP4-LISTEN:${_val_arr[2]},fork,bind=${_val_arr[1]} UDP:${_val_arr[3]}:${_val_arr[4]} &
done
echo_done
else
echo_skipped
fi
echo
# ---
# - UNIX Traceroute