[Af: Thomas Steen Rasmussen]

Q: Hvordan laver jeg en NAT gateway med FreeBSD ?

A: Det er et stort emne som der findes lige så mange svar på som der findes netværks administratorer. Der er flere firewalls tilgængelige på FreeBSD. Herunder to korte guides til at få det grundlæggende op og køre med de to mest brugte firewalls på FreeBSD.

Den mest brugte firewall på FreeBSD kommer oprindeligt fra OpenBSD og hedder pf. For at få en Nat gateway op og køre skal du tilføje følgende til /etc/rc.conf: pf_enable="YES" pflog_enable="YES" gateway_enable="YES"

Og tilføje følgende til /etc/pf.conf:

###makroer
#tilladte icmp typer
icmp_types = "unreach,echoreq"
icmp6_types="routersol, routeradv, neighbradv, neighbrsol"

#det eksterne interface
ext_if="em0"

#det interne interface
int_if="em1"

##################################
### NAT
nat on $ext_if from $int_if:network to any -> ($ext_if)

### filtrering
#ingen behandling af pakker på loopback interfacet
set skip on lo0

#block everything
block log all

### eksternt interface
#pass incoming v4 icmp on the external interface
pass in quick on $ext_if inet proto icmp from any to any icmp-type $icmp_types

#pass incoming ipv6 icmp
pass in on $ext_if inet6 proto icmp6 all icmp6-type $icmp6_types

#pass all outgoing traffic
pass out quick on $exit_if

### internt interface
pass quick on $int_if

Efter en reboot burde alting virke. Se OpenBSDs pf faq for mere info. Pas iøvrigt på med at lave denne øvelse hvis du ikke sidder lokalt på maskinen. Man skal være rimeligt fortrolig med tingene for at være sikker på ikke at låse sig selv ude.

En anden populær firewall på FreeBSD er IPFW. Herunder en kort guide til at få sådan en til at virke. Bemærk at nedenstående eksempel ikke inkluderer IPv6. Eksemplet er bidraget af Flemming Jacobsen:

Tilføj flg. til /etc/rc.conf:

firewall_enable="YES"
firewall_type="open"
natd_enable="YES"
natd_interface="DitYdersideInterface"   # Eks: natd_interface="fxp0"
                              # PPPoE brugere skal bruge "tun0"
                              # hvis de ikke laver NAT i PPP, 
                              # Se også spørgsmål 4.
gateway_enable="YES"

Tilføj flg. til din kernekonfiguration (det er ligegyldigt hvor i filen du skriver dem) og lav en ny kerne:

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=400
options         IPDIVERT

Når du herefter har rebootet og set at det virker, så er det en god ide at kigge i /etc/rc.firewall og rette den til med hjælp fra man ipfw. Bemærk at det også er muligt at loade ipfw som et kernel modul så du ikke behøver recompile kernen. Prøv med kldload ipfw istedet for at recompile kernen.