|
|
(130 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
− | Kurzer Leitfaden für das Aufsetzen neuer Vereinsgateways.
| + | #REDIRECT [[Server Installation]] |
− | | + | |
− | === 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. [http://www.debian.de/releases/stable/i386/index.html.de Debian GNU/Linux-Installationsanleitung]
| + | |
− | : c) per ''debootstap'' von Knoppix aus, vgl. [http://www.debian.de/releases/stable/i386/apcs04.html.de Debian GNU/Linux-Installationsanleitung - C.4]
| + | |
− | : b) als Kopie von vorhandenem GW, z.B. [[GW250|izumi]]
| + | |
− | ::* Filesysteme auf izumi ggf. mounten, crontab Einträge ggf. deaktivieren (CPU-Last)
| + | |
− | ::* boot einbinden: mount /dev/<device>1 /mnt/
| + | |
− | ::* boot spiegeln: rsync -avz -e ssh root@izumi:/boot/ /mnt/
| + | |
− | ::* root einbinden: umount /mnt; mount /dev/<device>3 /mnt/
| + | |
− | ::* root spiegeln: rsync -avzlx -e ssh root@izumi:/ /mnt/
| + | |
− | * 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
| + | |
− | | + | |
− | === 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 rsa -f ssh_host_rsa_key''
| + | |
− | | + | |
− | ==== VPN-Server ====
| + | |
− | | + | |
− | * OpenVPN:
| + | |
− | ** openvpn + openssl installieren
| + | |
− | ** /etc/openvpn/openssl.conf anpassen (Kopie besorgen)
| + | |
− | ** /etc/openvpn/opennet_users.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
| + | |
− | ** 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:
| + | |
− | | + | |
− | gate:~# ps aux|grep bind
| + | |
− | bind 25640 0.0 1.4 30764 3596 ? Ssl 20:10 0:02 /chroot/named/sbin/named -u bind -t /chroot/named
| + | |
− | root 31833 0.0 0.2 3680 624 pts/3 S+ 22:18 0:00 grep bind
| + | |
− | gate:~# rndc status;
| + | |
− | number of zones: 7
| + | |
− | debug level: 0
| + | |
− | xfers running: 0
| + | |
− | xfers deferred: 0
| + | |
− | soa queries in progress: 0
| + | |
− | query logging is OFF
| + | |
− | recursive clients: 0/1000
| + | |
− | tcp clients: 0/100
| + | |
− | server is up and running
| + | |
− | | + | |
− | * Läuft der Nameserver noch nicht sollte man im daemon.log nach Fehlermeldungen suchen. Zum Glückt gibt Bind sehr genau Auskunft darüber was beim start nicht so war wie es sein sollte.
| + | |
− | | + | |
− | gate:~# grep named /var/log/daemon.log|tail -20
| + | |
− | Jan 10 09:34:25 izumi named[8280]: starting BIND 9.3.1 -u bind -t /chroot/named
| + | |
− | Jan 10 09:34:25 izumi named[8280]: found 1 CPU, using 1 worker thread
| + | |
− | Jan 10 09:34:25 izumi named[8280]: loading configuration from '/etc/bind/named.conf'
| + | |
− | Jan 10 09:34:25 izumi named[8280]: /etc/bind/named.conf.options:2: change directory to '/var/cache/bind' failed: file not found
| + | |
− | Jan 10 09:34:25 izumi named[8280]: /etc/bind/named.conf.options:2: parsing failed
| + | |
− | Jan 10 09:34:25 izumi named[8280]: loading configuration: file not found
| + | |
− | Jan 10 09:34:25 izumi named[8280]: exiting (due to fatal error)
| + | |
− | | + | |
− | * Hier hat Bind z.B. auf Grund einer Konfiguration in /''etc/bind/named.conf.options'' versucht in das nicht existierende Verzeichnis ''/var/cache/bind'' zu wechseln. Befindet sich ein einer der Konfigurationsdateien ein Syntaxfehler wird die Datei und die Zeile angegeben so das man in den meisten Fällen den Fehler schnell finden sollte. Hier erwartete er z.B. eine IP Adresse in Zeile 19 wo allerdings die Zeichenkette "nameserver" stand.
| + | |
− | | + | |
− | Jan 10 10:12:18 izumi named[19568]: /etc/bind/named.conf.options:19: expected IP address near 'nameserver'
| + | |
− | | + | |
− | * Wenn der Nameserver läuft kann man versuchen eine Anfrage zu stellen. Das geht mit ''host <hostname>'' oder mit ''dig <hostname>''. Bei dig kann man auch noch mit ''@server'' den Server und mit ''<record>'' den abzufragenden DNS record angeben. So kann man sich z.B. mit ''dig @192.168.0.254 on ns'' die zuständigen Nameserver für die Opennet-Zone direkt von Titan geben lassen.
| + | |
− | | + | |
− | ==== 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
| + | |
− | | + | |
− | * OpenVPN-Status-Skript anpassen unter /root/tasks/openvpn-users-status.py: host = '<hostname>.on'
| + | |
− | | + | |
− | [[Kategorie:Konfiguration]]
| + | |
− | [[Kategorie:Opennet Projekte]]
| + | |
− | | + | |
− | ==== NTP-Server ====
| + | |
− | | + | |
− | * ntpdate und ntpd installieren
| + | |
− | * beide beim Systemstart starten lassen (zur Sicherheit zuerst ntpdate, dann ntpd)
| + | |