Malmö 31.03.2012
Virtuella maskiner från VirtualBox måste ha minimum två NIC - jag kommer att använda NIC under VB kontroll bara på FreeBSD. Andra maskiner ska ha den NIC avaktiverad, de ska använda bara dem NIC under GNS3 kontroll. Jag skulle kunna koppla det NIC till ett virtuell nätverk och använda det i detta projekt, men jag tycker att det bättre att kontrollera dem under CNS3. Så www servrar har två NIC men bara ett är aktivt. IPCop messar mycket med sina interfaces på GNS3 så jag ge upp idén att testa systemet på detta sätt. Jag ska göra det i VirtualBox nätverk.
Subnet är /24 fär alla; IP-adress utdelning:
FreeBSD-1 (Gateway) em0 dhcp em1 192.168.0.2 em2 192.168.1.2 Ubuntu1 eth1 192.168.0.10 Ubuntu2 eth1 192.168.0.11 FreeBSD-2 (router) em1 192.168.0.3 em2 192.168.3.2 OpenIndiana dhcp (Dator1) Windows XP dhcp (Dator2)
Mitt nätverk.
[redigera]
Börjar med FreeBSD. I VB sätter jag ett NIC bridged till min fysiskt interface eth0 - VM ska synas som en riktigt dator i min fysiskt LAN och ta IP inställningar från DHCP server på min router. Systemet är en Gateway - all kommunikation med Internet ska gå genom det. Den interface är under VB kontroll. De andra interface ska ha statiskt IP-adress som gäller i DMZ. Unix/Linux kernels innehåller effekivt routing men jag för NAT och firewall väljer IPFILTER - samma som i jail - kapitel om operativsystem-nivå virtualisering.
Startar systemet från GNS3 efter HögerMusKlick.
FreeBSD nätinställningar.
Aktiverar NAT och firewall i /etc/rc.conf:
gateway_enable="YES" # Enable as LAN gateway ipnat_enable="YES" # Start ipnat function ipnat_rules="/etc/ipnat.rules" # rules definition file for ipnat ipfilter_enable="YES" # Start ipf firewall ipfilter_rules="/etc/ipf.rules" # loads rules definition text file ipmon_enable="YES" # Start IP monitor log ipmon_flags="-Ds" # D = start as daemon # s = log to syslog # v = log tcp window, ack, seq # n = map IP & port to names
Min /etc/rc.conf fil.
Skapar /etc/ipnat.rules fil med regler enligt syntax: map PUBLIC_IF LAN_IP_RANGE -> PUBLIC_ADDRESS . 0/32 betyder alla adresser.
map em0 192.168.0.0/24 -> 0/32Skapar port forwardning till www server på Ubuntu med IP-adress 192.168.0.10. Server ska köra på port 81 eftersom port 80 är redan upptagen i mitt fysiskt LAN.
rdr em0 0.0.0.0/0 port 81 -> 192.168.0.10 port 81 tcp
Min /etc/ipnat.rules fil.
Filen med regler kan ha valfri namn. För att ladda regler från /etc/ipnat.rules måste man köra komandot:
ipnat -CF -f /etc/ipnat.rules
Det är dags för firewall regler. Det är samma sak som i den tidigare kapitel, men nu har jag två NIC och LAN att skydda. Med sina avancerade option kan ipf skydda hela nätverket och fungera som enda firewall för LAN - samma som IPCop. Meningen är att skapa en modell enligt mönster som vi känner till från skolan.
Regler för loopback interface:pass in quick on lo0 all pass out quick on lo0 allRegler för interface em0 - IP-adress tilldelades av DHCP server.
block in on em0 all pass in quick on em0 proto tcp from any to 192.168.0.10/32 port = 81 flags S keep state block in log on em0 all pass out on em0 allRegler för em1 - DMZ, statiskta IP-adresser:
pass out quick on em1 proto tcp from any to 192.168.0.10/32 port = 81 flags S keep state block out on em1 all block in on em1 allRegler för em2 LAN router:
block out on em2 all pass in quick on em2 proto tcp/udp from 192.168.1.0/24 to any keep stateDetta bör vara tillräckligt för routing, man måste bara säkra router, men det ska jag göra vid slutet.
apt-get install nginxSå jag har tillgång till den server via webläsare på min bassystem.
Webserver på Ubuntu1.
Efter laddning regler från /etc/ipf.rules på FreeBSD...
ipf -Fa -f /etc/ipf.rules...och sätting min fysiskt, hemrouter...
Min hemrouter.
...finns det tillgång till servern från Internet.
Webserver på Ubuntu1 från Internet.
Och bara ställa brandväggen på servern.
På Ubuntu använder ufw.
På den andra Ubuntu -2 göra samma sak (men väljer yaws istället av nginx) och addera regler till FreeBSD. I /etc/ipf.rules
pass in quick on em0 proto tcp from any to 192.168.0.10/32 port = 81 flags S keep state
rdr em0 0.0.0.0/0 port 81 -> 192.168.0.10,192.168.0.11 port 81 tcp map em0 from any to 192.168.0.10/32 port = 81 -> 0.0.0.0/0 map em0 from any to 192.168.0.11/32 port = 81 -> 0.0.0.0/0Konfigurerar och startar yaws
På Ubuntu använder ufw.
Inte alla webläsare är bra till att testa load balancing för att de brukar att spara sidor i sin cache. Första koplingen kom till yaws och senare till nginx. Det bästa är Opera - om man trycker snabbt F5 så koppling sker till dem två servrar växelvist.
IPFilter load balancing.
Den andra FreeBSD ska fungera som router, enkelt firewall och DHCP server för klienter i LAN - Windows XP och OpenIndiana. Den första interface under VB kontroll ska vara ned - använder bara dem två från GNS3. Ändrar NAT regler i FreeBSD1 för att tillota routing till FreeBSD2
Aktuellt /etc/ipnat.rules i FreeBSD 1 (Gateway).
Installerar DHCP server på FreeBSD 2
pkg_add -r isc-dhcp42-serverDHCP server konfiguration:
Fil /usr/local/etc/dhcpd.conf.
Och adderar rad till /etc/rc.conf
dhcpd_enable="YES" dhcpd_ifaces="em2"Senare - start server.
DHCP server startar.
Snabbt check på Dator2 - tillfälligt med Ubuntu. Jag tycker att jag kan radera option domain-name i dhcpd konfig.
DHCP klient i LAN
Så det är bara NAT och firewall kvar att konfigurera, det är snklare nu - för yttre interface allt ut, inget in; för inre interface allt in, inget ut.
NAT i /etc/ipnat.rules:
map em1 192.168.3.0/24 -> 0/32Firewall i /etc/ipf.rules:
pass in quick on lo0 all pass out quick on lo0 all block in on em1 all pass out on em1 all block in on em2 all pass in quick on em2 proto tcp/udp from 192.168.3.2/32 to any keep state pass out on em2 allDet återstår kvar bara att skydda brandväggen enligt standardregler. Inte beaktades här datorer router- och serversadministratörer.