- Add Network IP Route tab,

- Improve status info,
- Fix comment in systemd service file.
This commit is contained in:
2025-07-06 01:58:10 +02:00
parent c9388dae6b
commit 0edc46fc42
4 changed files with 174 additions and 14 deletions

View File

@@ -38,6 +38,12 @@ declare -g DNS_CACHE_LOCK="/var/lock/network/dns.lock"
declare -g DNS_CACHE_UPDATED=0
if [ ! -v LOG ] || [[ "${LOG}" == "" ]]
then
export LOG=":"
fi
@@ -47,6 +53,8 @@ declare -g DNS_CACHE_UPDATED=0
dns_tab_load()
{
${LOG} 1>&2 "Loading DNS cache..."
file_lock "${DNS_CACHE_LOCK}" READ 9
if [[ ( -e "${DNS_CACHE_FILE}" ) && ( "${NETWORK_CONFIG_FILE}" -ot "${DNS_CACHE_FILE}" ) ]]
@@ -88,6 +96,8 @@ dns_tab_load()
dns_tab_save()
{
${LOG} 1>&2 "Saving DNS cache..."
if [[ "${DNS_CACHE_UPDATED}" != "0" ]]
then
file_lock "${DNS_CACHE_LOCK}" WRITE 9

View File

@@ -24,6 +24,10 @@ declare -g NETWORK_BASH=1
declare -g NETWORK_OPENVPN_STATUS
declare -Ag NETWORK_IP_ROUTE_TAB
declare -g NETWORK_IP_ROUTE_ID_LIST
declare -Ag NETWORK_IP_ROUTE_IP_IDX
declare -g NETWORK_SRC_TYPE
declare -Ag NETWORK_SRC_TAB
declare -g NETWORK_SRC_ID_LIST
@@ -48,9 +52,9 @@ file_lock ${NETWORK_CONFIG_LOCK} READ 9
file_unlock 9
if [ ! -v LOG ]
if [ ! -v LOG ] || [[ "${LOG}" == "" ]]
then
LOG=":"
export LOG=":"
fi
@@ -63,6 +67,8 @@ fi
network_common_load()
{
${LOG} 1>&2 "Loading common..."
NETWORK_OPENVPN_STATUS="$( sudo /usr/local/sbin/openvpn-status)"
NETWORK_TABLE_LIST=""
}
@@ -87,6 +93,94 @@ network_common_dump()
#--------------------------------------------------------------------------------------------------------------------------
# network_ip_route_tab_load
#--------------------------------------------------------------------------------------------------------------------------
network_ip_route_tab_load()
{
nirtl_id=0
${LOG} 1>&2 "Loading IP Route tab..."
while IFS= read -r line
do
line=${line%%#*}
if [[ ! -z "$line" ]]
then
set ${line}
nirtl_ip="$1"
nirtl_mask="$2"
nirtl_device="$3"
var_assign NETWORK_IP_ROUTE_ID_LIST "${nirtl_id}" INC
tab_assign NETWORK_IP_ROUTE_TAB "${nirtl_id},IP" "${nirtl_ip}"
tab_assign NETWORK_IP_ROUTE_TAB "${nirtl_id},Mask" "${nirtl_mask}"
tab_assign NETWORK_IP_ROUTE_TAB "${nirtl_id},Device" "${nirtl_device}"
tab_assign NETWORK_IP_ROUTE_IP_IDX "${nirtl_ip}" "${nirtl_id}"
nirtl_id=$(( ${nirtl_id} + 1))
fi
done <<< ${NETWORK_IP_ROUTE_CONFIG}
}
#--------------------------------------------------------------------------------------------------------------------------
# network_ip_route_tab_get
#--------------------------------------------------------------------------------------------------------------------------
network_ip_route_tab_get()
{
ip_route_id="$1"
ip_route_ip=${NETWORK_IP_ROUTE_TAB["${ip_route_id},IP"]}
ip_route_mask=${NETWORK_IP_ROUTE_TAB["${ip_route_id},Mask"]}
ip_route_device=${NETWORK_IP_ROUTE_TAB["${ip_route_id},Device"]}
}
#--------------------------------------------------------------------------------------------------------------------------
# network_ip_route_tab_dump
#--------------------------------------------------------------------------------------------------------------------------
network_ip_route_tab_dump()
{
echo "NETWORK_IP_ROUTE_ID_LIST: [${NETWORK_IP_ROUTE_ID_LIST}]"
echo
echo "NETWORK_IP_ROUTE_IP_IDX:"
for key in "${!NETWORK_IP_ROUTE_IP_IDX[@]}"
do
echo "[${key}]: [${NETWORK_IP_ROUTE_IP_IDX[${key}]}]"
done | sort -n
echo
echo "NETWORK_IP_ROUTE_TAB:"
for key in "${!NETWORK_IP_ROUTE_TAB[@]}"
do
echo "[${key}]: [${NETWORK_IP_ROUTE_TAB[${key}]}]"
done | sort -n
echo
}
#--------------------------------------------------------------------------------------------------------------------------
# network_dst_tab_load
#--------------------------------------------------------------------------------------------------------------------------
@@ -96,6 +190,8 @@ network_dst_tab_load()
ndtl_id=0
${LOG} 1>&2 "Loading Dst tab..."
while IFS= read -r line
do
line=${line%%#*}
@@ -255,6 +351,8 @@ network_src_tab_load()
nstl_port_default=3000
${LOG} 1>&2 "Loading Src tab..."
while IFS= read -r line
do
line=${line%%#*}
@@ -455,10 +553,13 @@ network_src_tab_ip_lookup()
network_tab_load()
{
${LOG} 1>&2 "Loading config..."
dns_tab_load
network_common_load
network_ip_route_tab_load
network_dst_tab_load
network_src_tab_load
@@ -479,6 +580,7 @@ network_tab_dump()
network_common_dump
network_ip_route_tab_dump
network_dst_tab_dump
network_src_tab_dump
}
@@ -516,9 +618,11 @@ network_table_init()
${LOG} "Add Rx3 routes in VPN tables"
for route in ${IP_ROUTE}
for ip_route_id in ${NETWORK_IP_ROUTE_ID_LIST}
do
${DEBUG} ip route add ${route/:*/} table ${dst_table} dev ${route/*:/}
network_ip_route_tab_get ${ip_route_id}
${DEBUG} ip route add ${ip_route_ip}/${ip_route_mask} table ${dst_table} dev ${ip_route_device}
done
done
}
@@ -537,9 +641,11 @@ network_table_deinit()
for table in ${NETWORK_TABLE_LIST}
do
for route in ${IP_ROUTE}
do
${DEBUG} ip route del ${route/:*/} table ${table} dev ${route/*:/} 2>/dev/null
for ip_route_id in ${NETWORK_IP_ROUTE_ID_LIST}
do
network_ip_route_tab_get ${ip_route_id}
${DEBUG} ip route del ${ip_route_ip}/${ip_route_mask} table ${table} dev ${ip_route_device} 2>/dev/null
done
done
@@ -890,6 +996,50 @@ network_stop()
network_status()
{
echo "Number of Network IP Route entries: ${#NETWORK_IP_ROUTE_IP_IDX[@]}"
echo "Number of Network Src entries: ${#NETWORK_SRC_IP_IDX[@]}"
echo "Number of Network Dst entries: ${#NETWORK_DST_DEV_IDX[@]}"
echo "Number of DNS cache A entries: ${#DNS_A_TAB[@]}"
echo "Number of DNS cache PTR entries: ${#DNS_PTR_TAB[@]}"
(
echo "SRC"
for src_id in ${NETWORK_SRC_ID_LIST}
do
network_src_tab_get ${src_id}
echo ${src_device}
done | sort -u
echo "DST"
for dst_id in ${NETWORK_DST_ID_LIST}
do
network_dst_tab_get ${dst_id}
echo ${dst_device}
done | sort -u
) | while read entry
do
case ${entry}
in
"SRC")
echo
echo "Src Devices:"
;;
"DST")
echo
echo "Dst Devices:"
;;
*)
ip address show $entry | sed -e 's/^[^:]*: //'
;;
esac
done
echo
echo "Rules:"
ip rule show

View File

@@ -19,7 +19,7 @@ prog="rx3-net"
# Some functions to make the below more readable
#--------------------------------------------------------------------------------------------------------------------------
# Start