code.fastix.org

Dateiansicht:

Datei:Projekte -> Linux:Netzwerk für Seminare -> Router_Server -> root -> bin -> start_seminarnet
md5:0d37ae9d7d0477f047c7e4a8851a49e8
sha1:1f28f638816772af82513b7355e8a5bf5cb4fb1d
  1. #!/bin/bash
  2.  
  3. source "$(dirname $0)/seminarnet.settings";
  4.  
  5. devices=$(ip -o link show | grep -P '[0-9]: en' | cut -d ' ' -f2 | tr -d ':');
  6.  
  7. ipPattern=$(echo "inet ${ip}" | sed -e 's/\./\\./g');
  8.  
  9. for device in $devices; do
  10.         #echo "ip -o address show dev ${device}";
  11.         c=$(ip -o address show dev ${device} | grep -P "${ipPattern}" | wc -l);
  12.         if [ "1" = "${c}" ]; then
  13.                 echo "Die IP-Adresse ${ip} ist schon an das Gerät '${device}' vergeben.";
  14.                 exit;
  15.         fi
  16. done
  17.  
  18. ip link set ${localnetDev} up
  19. ip address add ${ip}/${netmask} dev ${localnetDev};
  20.  
  21. systemctl start isc-dhcp-server;
  22.  
  23. ## Wenn der DNS nicht verwendbar ist:
  24. #dnsproxy -dc /etc/dnsproxy.conf &
  25.  
  26. ## Starten der Proxy-Server
  27. systemctl start privoxy;
  28. systemctl start squid;
  29.  
  30. ## Starten des Routings:
  31. sysctl -w net.ipv4.ip_forward=1 > /dev/null;
  32.  
  33. ## Firewall-Settings für das Routing und NAT
  34. iptables -A FORWARD -o ${internetDev} -i ${localnetDev} -s ${net}/${netmask} -m conntrack --ctstate NEW -j ACCEPT;
  35. iptables -A FORWARD -i ${internetDev} -o ${localnetDev} -s 0.0.0.0/0 -m conntrack --ctstate NEW -j ACCEPT;
  36. iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT;
  37.  
  38. ## Starten des NAT
  39. iptables -t nat -A POSTROUTING -o ${internetDev} -j MASQUERADE;
  40.  
  41. ## Route zu den virtuellen Maschinen
  42. route add -net ${net}/${netmask} gw ${ip};
  43.  
  44. ## Ausgaben:
  45. ownIP=$(ip address show ${internetDev} | grep 'inet ' | cut -d ' ' -f6);
  46. echo "Das Testnetz wurde auf dem Gerät '${localnetDev}' mit der Adresse '${net}/${netmask}' gestartet. DNS, Router und Proxy ist '${ip}', erreichbar via ${internetDev} (${ownIP}).";
  47.