#!/bin/sh export DATE="2.9.2005" export TITLE="Verwaltung: Portmapping" . ${0%/*}/cgi-bin-pre.sh cat<<EOF

# Verwaltung: Portmapping

EOF if [ "$REQUEST_METHOD" = "POST" ]; then read QUERY_STRING fi if [ -z "$QUERY_STRING" ]; then base_addr=$((10000+10*($(nvram get wifi_ipaddr | cut -d'.' -f4)-1))) cat<<EOF

Als Ziel der Weiterleitungen muss eine IP-Adresse im lokalen Netzwerk (im Opennet üblicherweise 172.16.0.0/12) angegeben werden. Zusätzlich kann ein Zielport, dann direkt dahinter durch einen Doppelpunkt getrennt angegeben werden.

## Weiterleitung aus dem Internet

mehr Informationen.

Die folgenden Ports werden aus dem Internet durch einen aktivem OpenVPN-Tunnel an Rechner im lokalen Netzwerk weitergeleitet. Damit Du aus dem Internet auf den Rechner zugreifen kannst, musst du den Namen, der deinem aktiven Gateway EOF on_gw=$(nvram get on_gw) echo -n "($on_gw" case $on_gw in 192.168.0.254) echo -n " = opennet.dnsalias.org" ;; 192.168.0.250) #echo -n " = unbekannt" ;; *) ;; esac echo -n ")" cat<<EOF zugeordnet ist, kennen. Weitere Informationen findest Du im Opennet Wiki. Bei einem Wechsel des Gateways (beispielsweise bei einer Störung) ändert sich auch der Name, unter dem der/die Rechner aus dem Internet erreichbar ist/sind.

Alle Internet-Ports an einen Zielrechner weiterleiten
Port | IP-Adresse[:Port]
$((base_addr)) bzw. alle Ports |
EOF for number in 1 2 3 4 5 6 7 8 9; do cat<<EOF
$((base_addr+$number)) |
EOF number=$(($number+1)) done cat<<EOF

## Weiterleitung aus dem Opennet

Die folgenden Ports werden aus dem Opennet (WLAN) an Rechner im lokalen Netzwerk weitergeleitet. Sie sind vom Internet aus nicht (direkt) erreichbar.

Port | IP-Adresse[:Port]
EOF number=1 for on_internal_mapping in $(nvram get on_intrlmap); do on_internal_port=$(echo $on_internal_mapping | cut -d'>' -f1) local_lan_addr=$(echo $on_internal_mapping | cut -d'>' -f2) cat<<EOF
EOF number=$(($number+1)) done cat<<EOF
Mapping hinzufügen:

## Weiterleitung aus dem Internet (WAN-Anschluss)

Die folgenden Ports werden aus dem Internet (WAN) an Rechner im lokalen Netzwerk weitergeleitet. Sie sind vom Internet aus direkt erreichbar.

Port | IP-Adresse[:Port]
EOF number=1 for on_wan_mapping in $(nvram get on_wanmap); do on_wan_port=$(echo $on_wan_mapping | cut -d'>' -f1) local_lan_addr=$(echo $on_wan_mapping | cut -d'>' -f2) cat<<EOF
EOF number=$(($number+1)) done cat<<EOF
Mapping hinzufügen:

EOF else eval $(echo "$QUERY_STRING"|awk -F'&' '{for(i=1;i<=NF;i++){print $i}}') echo -n "

    "
    	/etc/init.d/S82portmapping stop
    	echo "

" if [ -n "$post_on_portmap" ]; then number=1 on_portmap_newlist= # refresh all stored values for on_portmap in $(nvram get on_intrlmap); do sourceport=$(unescape $(eval echo \$on_intrlsport$number)) destaddr=$(unescape $(eval echo \$on_intrldaddr$number)) if [ -n "$sourceport" ] && [ -n "$destaddr" ]; then on_portmap_newlist="$on_portmap_newlist $sourceport>$destaddr" fi; number=$(($number+1)) done; # add new values if possible if [ -n "$on_new_intrlsport" ] && [ -n "$on_new_intrldaddr" ]; then on_portmap_newlist="$on_portmap_newlist $(unescape $on_new_intrlsport)>$(unescape $on_new_intrldaddr)" fi on_portmap_newlist=$(echo $on_portmap_newlist) nvram set on_intrlmap="$on_portmap_newlist" elif [ -n "$post_wan_portmap" ]; then number=1 wan_portmap_newlist= # refresh all stored values for wan_portmap in $(nvram get on_wanmap); do sourceport=$(unescape $(eval echo \$on_wansport$number)) destaddr=$(unescape $(eval echo \$on_wandaddr$number)) if [ -n "$sourceport" ] && [ -n "$destaddr" ]; then wan_portmap_newlist="$wan_portmap_newlist $sourceport>$destaddr" fi; number=$(($number+1)) done; # add new values if possible if [ -n "$on_new_wansport" ] && [ -n "$on_new_wandaddr" ]; then wan_portmap_newlist="$wan_portmap_newlist $(unescape $on_new_wansport)>$(unescape $on_new_wandaddr)" fi wan_portmap_newlist=$(echo $wan_portmap_newlist) nvram set on_wanmap="$wan_portmap_newlist" elif [ -n "$post_inet_portmap" ]; then for V in on_mapaddr0 on_mapaddr1 on_mapaddr2 on_mapaddr3 on_mapaddr4 on_mapaddr5 on_mapaddr6 on_mapaddr7 on_mapaddr8 on_mapaddr9 on_mapall2one; do eval "C=\$$V" C=$(unescape $C) if [ "$C" != "$(nvram get $V)" ]; then nvram set $V="$C" fi done fi nvram commit>/dev/null 2>&1 cat<<EOF

Die geänderten Einstellungen wurden übernommen. Portmapping wird nun aktualisiert

EOF echo -n "

    "
    	/etc/init.d/S82portmapping start
    	echo "

" fi . ${0%/*}/cgi-bin-post.sh