Gateway Installation

Aus Opennet
Wechseln zu: Navigation, Suche

Kurzer Leitfaden für das Aufsetzen neuer Vereinsgateways.

Inhaltsverzeichnis

Hardware

  • sinnvoll >500 Mhz CPU, >256 MB RAM
  • mindestens 2 NICs
  • ausreichend HD-Kapazität; ideal SCSI (z.B. U2W), alternativ IDE (mit z.B. RAID1)

Basisinstallation

  • Booten, z.B. per CD oder PXE mit Knoppix
  • Dateisystem vorbereiten:
    • cfdisk /dev/<device>, z.B. /dev/hda (IDE) oder /dev/sda (SCSI)
    • primäre Partitionen: 32 MB boot (Typ 83 + bootable), 500 MB swap (Typ 82), Rest für / (Typ 83)
    • boot mit EXT2: mkfs.ext2 /dev/<device>1
    • swap mit SWAP: mkswap /dev/<device>2
    • root mit XFS: mkfs.xfs /dev/<device>3
  • Debian Stable (oder Testing) installieren
a) Neuinstallation, vgl. Debian GNU/Linux-Installationsanleitung
c) per debootstap von Knoppix aus, vgl. Debian GNU/Linux-Installationsanleitung - C.4
b) als Kopie von vorhandenem GW, z.B. izumi
  • Filesysteme auf izumi ggf. mounten, crontab Einträge ggf. deaktivieren (CPU-Last)
  • boot einbinden: mount /dev/<device>1 /mnt/
  • boot spiegeln: rsync -axz --numeric-ids root@izumi.on:/boot/ /mnt/
  • root einbinden: umount /mnt; mount /dev/<device>3 /mnt/
  • root spiegeln: rsync -axz --numeric-ids root@izumi.on:/ /mnt/
  • Minimale Device-Nodes anlegen (bei UDEV): MAKEDEV null console zero
  • Bootloader installieren (grub):
    • via chroot und grub-Skripte: (chroot...); grub-install --no-floppy /dev/<device>; update-grub
    • oder manuell, dabei /boot/grub/menu.lst selbst anpassen/erstellen: grub --no-floppy (root (hd0,0) / setup (hd0) / quit)
  • Kernel bauen / aktualisieren
    • cd /usr/src/linux; make menuconfig; make; make install; make modules_install; update-grub
    • ggf. local-version neu setzen

Hilfsmittel: chroot Umgebung

mount /dev/<device>3 /mnt 
mount /dev/<device>1 /mnt/boot
mount -t proc proc /mnt/proc
mount --bind /dev /mnt/dev
chroot /mnt

Hilfsmittel: RAID mit mdadm

  • spezieller Partitionstyp FD (Linux raid autodetect), mit cfdisk einstellen
  • direkt: mdadm --create --verbose /dev/md0 --level=raid1 --raid-devices=2 /dev/hda3 /dev/hdc3
  • oder auch schrittweise:
    • mdadm --create --verbose /dev/md0 --level=raid1 --raid-devices=2 /dev/hda3 missing
    • Daten in /hda3 einspielen
    • mdadm --manage /dev/md0 --add /dev/hdc3

Konfiguration

Allgemeines

  • Hostname /etc/hostname + /etc/mailname
  • Zeitzone /etc/timezone -> UTC
  • Kernelmodule /etc/modules
  • Dateisysteme /etc/fstab
/dev/<device>1   /boot         ext2     noauto,noatime    1 1
/dev/<device>3   /             xfs      noatime           0 0
/dev/<device>2   none          swap     sw                0 0
/dev/cdrom       /mnt/cdrom    iso9660  noauto,ro         0 0
none             /proc         proc     defaults          0 0
none             /dev/shm      tmpfs    defaults          0 0

Netzwerk-Geräte

  • Ethernet /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet static
  address 192.168.0.X
  netmask 255.255.0.0
  network 192.168.0.0
  broadcast 192.168.255.255
auto <peername>
iface <peername> inet ppp
provider <peername>
  • PPP /etc/ppp/*
    • /etc/ppp/pap-secrets -> "<account>" * "<password>"
    • /etc/ppp/peers/<peername>, Defaults mit:
logfile /var/log/pppd/qsc-dsl.log
#defaultroute
hide-password
lcp-echo-interval 20
lcp-echo-failure 3
connect /bin/true
noauth
persist
mtu 1492
noaccomp
default-asyncmap
plugin rp-pppoe.so eth0
user "<account>"
  • ln -s /etc/ppp/peers/<peername> /etc/ppp/peers/provider
  • mkdir /var/log/pppd
  • /etc/ppp/ip-up.d
#!/bin/sh
# default routes
route add -net 0.0.0.0/1 gw $PPP_REMOTE
route add -net 128.0.0.0/1 gw $PPP_REMOTE
# uni rostock
route add -net 139.30.0.0/16 gw $PPP_REMOTE
# ipkg repositories
route add -host 195.56.146.238 gw $PPP_REMOTE
route add -host 212.91.225.42 gw $PPP_REMOTE
# wikipedia
route add -net 207.142.131.192/26 gw $PPP_REMOTE
route add -net 145.97.39.128/28 gw $PPP_REMOTE
route add -net 212.85.150.128/28 gw $PPP_REMOTE
# www.opennet-initiative.de
route add -host 212.105.204.29 gw $PPP_REMOTE
# rostock.de
route add -net 195.37.188.160/28 gw $PPP_REMOTE
  • /etc/ppp/ip-down.d/00routes - analog nur s/add/del

Routing

  • OLSR /etc/olsrd.conf, Defaults mit:
UseHysteresis       no
LinkQualityLevel    2
Interface "eth1"    { <defaults> }
Hna4
{
  # university rostock
  139.30.0.0      255.255.0.0
  # ipkg repositories
  195.56.146.238  255.255.255.255
  212.91.225.42   255.255.255.255
  # wikipedia
  207.142.131.192 255.255.255.192
  145.97.39.128   255.255.255.240
  212.85.150.128  255.255.255.240
  # www.opennet-initiative.de
  212.105.204.29  255.255.255.255
  # www.rostock.de
  195.37.188.160  255.255.255.240
}
  • WAN-Routing /etc/network/ip-up.d/gatewaysetup.sh (Kopie besorgen)

SSH-Server

  • ggf. neue Schlüssel erstellen in /etc/ssh/
    • RSA-Host-Key per ssh-keygen -b 2048 -t rsa -f ssh_host_rsa_key
    • DSA-Host-Key per ssh-keygen -b 2048 -t dsa -f ssh_host_dsa_key

VPN-Server

  • OpenVPN:
    • openvpn + openssl installieren
    • zwei Instanzen aufbauen: <system> = opennet_gateways (VPN Backbone) | opennet_users (VPN Internet-Zugang für Nutzer)
    • /etc/openvpn/<system>/openssl.conf anpassen (Kopie besorgen), Leserechte setzen (chmod go-rwx <system>)
    • /etc/openvpn/opennet_<system>.conf anpassen (Kopie besorgen), key + cert anpassen
    • Csr/Key erstellen: openssl req -days 3650 -nodes -new -keyout <hostname>.key -out <hostname>.csr -extensions server -config openssl.cnf (Common Name = <hostname>.on)
    • Csr absenden und unterschreiben lassen, Crt einspielen, Leserechte setzen (chmod go-rw *.key)
    • Diffie hellman PEM: openssl dhparam -out /etc/openvpn/dh2048.pem 2048
  • automatische ACL Aktualisierung:
    • Nutzer openvpn-acl anlegen + absichern
    • SSH Schlüsselpaar erzeugen: su openvpn-acl; cd .ssh/; ssh-keygen -t rsa
    • SSH Public Key (id_rsa.pub) in opennetca@ratte:.ssh/authorized_keys hinzufügen
    • cronttab für openvpn-acl mit "*/10 * * * * rsync -rt --delete --safe-links opennetca@139.30.3.52:'opennet_users opennet_users_disabled' /etc/openvpn/acl"

Nameserver

  • zuerst chroot-bind9 installieren und einrichten
  • rndc absichern per rndc-conf -a (Key ins chroot kopieren)
  • im chroot /etc/bind/named.conf.options:
options {
  directory "/var/cache/bind";
  forward first;
  forwarders {
    <isp-dns1>;
    <isp-dns2>;
    192.168.0.254;
  };
  auth-nxdomain no;    # conform to RFC1035
  listen-on {
    127.0.0.1;
    <gateway-ip>
  };
  # ignoriert unterstrich in Domainnamen vom ON 
  check-names slave ignore;
};
  • im chroot /etc/bind/named.conf.local:
// on - forward (includes vpn)
zone "on." {
  type    slave;
  file    "db.on";
  masters {192.168.0.254;};
};
//on - reverse
zone "168.192.in-addr.arpa" {
  type    slave;
  file    "db.192.168";
  masters {192.168.0.254;};
};
//on-vpn - reverse
zone "1.10.in-addr.arpa" {
  type    slave;
  file    "db.10.1";
  masters {192.168.0.254;};
};
  • lokale Namensauflösung /etc/resolv.conf:
search on
nameserver 127.0.0.1
  • Nameserver starten: /etc/init.d/bind9 start
  • Funktion prüfen: ps aux|grep bind und rndc status
  • Fehlermeldungen suchen: grep named /var/log/daemon.log|tail -20
  • Zonen-Transfer manuell durchführen: rndc retransfer on

Webserver

  • apache2 installieren
    • in /etc/apache2/ports.conf eintragen: Listen 80
    • Default-Site deaktivieren: #RedirectMatch ^/$ /apache2-default/
    • Default-Site unter /var/www/apache2-default ggf. löschen
    • CGI-BIN deaktivieren: /etc/apache2/mods-enabled/cgi.load löschen; ggf. in sites-enabled/ den cgi-bin Eintrag löschen
  • OpenVPN-Status-Skript anpassen unter /root/tasks/openvpn-users-status.py: host = '<hostname>.on'

NTP-Server

  • ntpdate und ntpd installieren
  • beide beim Systemstart starten lassen (zur Sicherheit zuerst ntpdate, dann ntpd)
  • ntpd hat Probleme mit dynamisch wechselnen IP Adressen. Im Daemon Log finden sich Einträge wie ntpd[2466]: sendto(83.67.66.148): Invalid argument. Ich würde hier vorschlagen ntpdate in crontab einzutragen.

Opennet Tools

Traffic Graphen

siehe Gateway_Installation/Teucrium Setup

Traffic Shaping

siehe Gateway_Installation/Traffic Shaping

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge