Virtual Private Lan

Anwendungsbeispiel

Kinder-Zensur im Heimnetz

Der Netzzugang der Kinder und Jugendlichen soll zeitlich und ggf. auch inhaltlich begrenzt werden.

Man nehme:

Im Linux-Rechner kann dann richtet folgendes Script zusätzliche Netzwerke ein:

#!/bin/bash
case "$1" in
   start)
      modprobe 8021q
      # taged Interface in netz 01 (rudinet) und netz 13 (dieczi-net)
      vconfig set_name_type DEV_PLUS_VID
      vconfig add eth1 01
      ifconfig eth1.0001 192.168.1.4 netmask 255.255.255.0 up
      vconfig add eth1 13
      ifconfig eth1.0013 192.168.13.1 netmask 255.255.255.0 up
      # default route
      route add default dev eth0 gw 192.168.14.1
      ;;
   stop)
     ifconfig eth1.0001 down
     ifconfig eth1.0013 down
     vconfig rem eth1.0001
     vconfig rem eth1.0013
     rmmod 8021q
     ;;
   *)
     echo Usage: $0 start|stop
     ;;
esac

Erläuterungen:

Netzarchitektur:
Kernelmodul 8021q
implemeniert das Tagged-protokoll, dass eine Karte in mehrere logische Netzwerke senden kann.
Wenn ein Port im Switch nicht "getagged" ist, erscheint er den Geräten wie ein ganz normaler Switch. Das Taggen sorgt für das Senden in verscheidene logische Netze.
vconfig

Mit vconfig set_name_type DEV_PLUS_VID wird die Namenskonvention Netzwerkinterface.Netznr eingestellt

Hier werden nun eth1.0001 und eth1.0013 eingerichtet. Die Netznummer ist nach der 3.Komponente der IP-Addresse benannt als Konvention (nicht technisch notwendig)

Übrigens ist die Nummer bei vconfig auf die Netznummer im switch.

ifconfig
setzt die IP-Addresse
route
Setzt die default-Route

Die eigentliche Zensur richtet dann folgendes Script ein:

#!/bin/bash
if [ -f /home/mutter/sonder ]; then
   echo "Sonderregel /home/mutter/sonder gefunden am $(date) " >> /var/log/dieckonetlog 
   if [ "$1" = 'totalstop' ]; then
      rm -f /home/sonder/sonder
   fi
   exit
fi
case $1 in
        pstart|startall)
	  /sbin/ifconfig eth1.0013 up
          echo "Eingeschaltet am " $(date) >> /var/log/dieckonetlog 
          ;;&
	start|startall)
          iptables -F
          iptables -I INPUT -p udp -s 192.168.13.0/24 -j LOG
          iptables -I INPUT -p udp -s 192.168.13.0/24 -j LOG
          iptables -I FORWARD -p tcp --syn -s 192.168.13.0/24 -j LOG
          iptables -I FORWARD -p tcp --syn -s 192.168.13.0/24 -j LOG
          echo "Entsperrt am " $(date) >> /var/log/dieckonetlog 
          ;;
	stop|totalstop)
          iptables -I INPUT -p udp -s 192.168.13.0/24 -j DROP
          iptables -I INPUT -p tcp -s 192.168.13.0/24 -j DROP
          iptables -I FORWARD -p udp -s 192.168.13.0/24 -j DROP
          iptables -I FORWARD -p tcp -s 192.168.13.0/24 -j DROP
          echo "Gesperrt am " $(date) >> /var/log/dieckonetlog
          ;;&
        totalstop)
          /sbin/ifconfig eth1.0013 down
          echo "Ausgeschaltet am " $(date) >> /var/log/dieckonetlog
          ;;
        *)
	  echo "start|stop"
esac

Dieses Script macht eine totalsperre und logging. Es gibt die Möglichkeit, dass das Script auf Erlaubnis der Mutter deaktiviert wird.
Es könnte noch weiter verfeinert werden, z.B. dass

Die eigentlichen Erziehung macht der cron(8), der nun Zeitlich dieses Script /root/kindernet steuert.

Beispielsweise:

#Sonntag 13:45 an
45 13 * * 0 root /root/kindernet pstart
0  14 * * 0 root /root/kindernet start
#Sonntag 17:00 keine neuen TCP-Verbindungen mehr
0  17 * * 0 root /root/kindernet stop
#Sonntag 17:15 aus 
15 17 * * 0 root /root/kindernet totalstop
#ab Mo-Sa 18:00 darf wieder gesurft werden, mit vorlauf zum Starten
30 17 * * 1-6 root /root/kindernet pstart
0 18 * * 1-6 root /root/kindernet start
# ab Mo-Do ist ab 21:00 wieder ende
0 21 * * 1-4 root /root/kindernet stop
15 21 * * 1-4 root /root/kindernet totalstop
# Fr,Sa ist bis 22:00 Erlaubt
0 22 * * 5,6 root /root/kindernet stop
15 22 * * 5,6 root /root/kindernet totalstop

neben dem Cron-Job kann natürlich Handbetrieb gemacht werden. Sonderzeiten kann auch at regeln.

Siehe auch Ubuntu über vlan