Zurück  

Firewall-Container

Dieser CT dient als Firewall zwischen den einzelnen Netzen.

ToDo:

Erstellen eines Containers

Template natürlich das eigene!

Eine Festplatte mir nur 1GB? Reicht problemlos, denn wirklich viele Daten fallen auf diesem CT nicht an.

Auch beim Speicher dürfen wir knausern. Selbst bei nur 128mb kommt die Firewall nicht zum swappen, somit sind selbst die 16mb eigentlich zu viel.

Das Thema Netzwerk habe ich in den Vorgaben erschlagen. Für den Start müssen wir mit der Firewall ins Haus-Netz (eth0).

Oben Rechts im Proxmox-Frontend auf 'Create CT' klicken um den Container zu erstellen.

bild

bild

bild

bild

bild

bild

bild

bild

bild

Der neue Container wird noch nicht gestartet!

Netzwerk

Für unseren neuen Container müssen wir auch noch die weiteren Netzwerk-Karten installieren. Also Links auf unseren Container '230', dann Rechts auf das Tab 'Network'. Jeweils mit 'Add' erstellen wir zwei weitere Interfaces, so dass am Schluss 3 vorhanden sind:

eth1 (neu)

bild

eth9 (neu)

bild

Auto-Start

Die Firewall muss automatisch gestartet werden. Also die entsprechende Option aktivieren.

bild

Grund-Konfiguration

etc/host.OK

Die im CT, nicht die vom Host, also die "/Pool1/subvol-230-disk-1/etc/hosts"

DL
127.0.0.1	localhost
192.168.99.248	firewall.intern.comasys.ch firewall
::1		localhost ip6-localhost ip6-loopback
ff02::1		ip6-allnodes
ff02::2		ip6-allrouters

Container Starten

Und gleich mit SSH Auf den Container:

DL
ssh root@62.2.169.230 -p55

Firewall

Die Firewall wird später noch optimiert - und sicherer gemacht.

Vorerst müssen wir nur das Masquerading für das LAN und das rechnerinterne Netz einschalten, und dafür sorgen dass Pakete aus den Netzen gegenseitig weitergereicht werden.

Ich gebe zu, Firewall sollte das nicht wirklich genannt werden, schliesslich wird hier nichts geblockt - aber für die ersten Tests reicht es. Insbesondere steht der Rechner ja noch nicht im Internet.

/etc/network/firewall.sh

Neu zu erstellen

DL
#! /bin/bash

echo 1 >/proc/sys/net/ipv4/ip_forward

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth0 -j MASQUERADE

iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.99.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.99.0/24 -d 192.168.0.0/24 -j ACCEPT

Das Script muss ausführbar sein, also

DL
chmod +x /etc/network/firewall.sh

/etc/network/interfaces

Die muss angepasst werden:
beim letzten "iface eth..." muss noch folgende Zeile angefügt werden:

DL
post-up /etc/network/firewall.sh

Das Resultat müsste dann in etwa so aussehen

auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static
  address 192.168.0.230
  netmask 255.255.255.0

auto eth0
iface eth0 inet static
  address 62.2.169.230
  netmask 255.255.255.240
  gateway 62.2.169.40

auto eth9
iface eth9 inet static
  address 192.168.99.230
  netmask 255.255.255.0
  post-up /etc/network/firewall.sh

/etc/hosts.OK

Die endgültige Fassung hat alle Netzwerke eingetragen.

DL
127.0.0.1	localhost
192.168.0.230	firewall.local.comasys.ch
62.2.169.230	firewall.comasys.ch
192.168.99.230	firewall.intern.comasys.ch firewall
::1		localhost ip6-localhost ip6-loopback
ff02::1		ip6-allnodes
ff02::2		ip6-allrouters

Reboot

Jetzt muss der Container neu gestartet werden, dann per ssh wieder drauf. Unbedingt testen, ob auch das Internet noch funktionniert:

ping -c3 8.8.8.8

müsste etwa so aussehen

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=?? time=?? ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=?? time=?? ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=?? time=?? ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time ??ms
rtt min/avg/max/mdev = ??/??/??/?? ms

Anpassung auf dem Host

/etc/hosts

Der Host ist in Zukunft nicht mehr als 62.2.169.248 sondern als 192.168.99.248 erreichbar.

DL
127.0.0.1	localhost
192.168.99.248	proxmox1.intern.comasys.ch proxmox1
::1		localhost ip6-localhost ip6-loopback
ff02::1		ip6-allnodes
ff02::2		ip6-allrouters

proxmox

Bei der aktuellen vmbr0 wird alles rausgelöscht

bild

Die vmbr1 bleibt leer

bild

Und die virtuelle vmbr9 wird aktiviert

bild

Damit dies Änderungen aktiv werden, muss der Rechner (nicht der Container!) eines letztes mal neu gestartet werden.

Achtung:

In der aktuellen Version (Debian 8 mit systemd, Proxmox Kern 4.4.35-2) braucht es gelegentlich zwei oder sogar drei Reboots bis die Netzwerk-Konfiguration richtig übernommen wird.
Früher konnte ich einfach die "/etc/network/interfaces" von Hand editieren, aber jetzt erstellt proxmox die Datei dynamisch, nur offensichtlich nicht immer sauber...
Nach den Reboot jeweils kontrollieren, ob die neue OK ist:

ip ro sh

müsste wie folgt aussehen:

default via 192.168.99.230 dev vmbr9
192.168.99.0/24 dev vmbr9  proto kernel  scope link  src 62.2.169.248

tracroute -m2 8.8.8.8

Die ersten beiden Hops sind die Firewall und dann der Router:

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1 192.168.99.230 (192.168.99.230) 0.?? ms 0.?? ms 0.?? ms
 2 62.2.169.40 (62.2.169.40) 0.?? ms 0.?? ms 0.?? ms

Sobald beide Ausgaben passen, sind wir mit der Firewall erst mal fertig.

Jetzt ist nur noch der Firewall-CT von aussen erreichber, der Host kommuniziert ausschliesslich darüber.

Zurück