6. Pytania

6.1. Dlaczego korzystasz z natd(8) i ipfw(8), a nie z filtrów wbudowanych w ppp(8)?
6.2. Otrzymuję komunikat w rodzaju “limit 100 reached on entry 2800”, po którym w logach nie pojawiają się informacje o zablokowanych pakietach. Czy mój firewall nadal działa?
6.3. W sieci wewnętrznej korzystam z adresów z puli prywatnej, np. z zakresu 192.168.0.0, czy mogę uzupełnić reguły firewalla wpisem w rodzaju $fwcmd add deny all from any to 192.168.0.0:255.255.0.0 via tun0 aby uniemożliwić próby połączeń z zewnątrz z lokalnymi maszynami?
6.4. Coś musi być nie tak. Postępowałem dokładnie według wskazówek i jestem w kropce.

6.1. Dlaczego korzystasz z natd(8) i ipfw(8), a nie z filtrów wbudowanych w ppp(8)?

Mówiąc szczerze, nie ma konkretnego powodu dla którego zdecydowałem się na ipfw i natd, a nie filtrowanie wbudowane w ppp. Dyskusje przeprowadzone z różnymi osobami doprowadziły do stwierdzenia, iż ipfw jest z pewnością bardziej rozbudowany i ma większe możliwości konfiguracji niż filtry ppp, jest jednak trudniejszy w używaniu. Jednym z powodów mojego wyboru jest to, że wolę, by firewall działał na poziomie jądra systemu, a nie programu użytkownika.

6.2. Otrzymuję komunikat w rodzaju “limit 100 reached on entry 2800”, po którym w logach nie pojawiają się informacje o zablokowanych pakietach. Czy mój firewall nadal działa?

Taki komunikat oznacza jedynie, że osiągnięty został limit rejestrowania reguły. Sama reguła wciąż obowiązuje, nie będzie już jednak rejestrowana, dopóki liczniki rejestrowania nie zostaną wyzerowane; można to zrobić poleceniem ipfw resetlog. Innym rozwiązaniem jest zwiększenie limitu w konfiguracji jądra przy pomocy opcji IPFIREWALL_VERBOSE_LIMIT, tak jak jest to opisane wcześniej. Limit można także ustawić zmieniając wartość net.inet.ip.fw.verbose_limit przy pomocy sysctl(8).

6.3. W sieci wewnętrznej korzystam z adresów z puli prywatnej, np. z zakresu 192.168.0.0, czy mogę uzupełnić reguły firewalla wpisem w rodzaju $fwcmd add deny all from any to 192.168.0.0:255.255.0.0 via tun0 aby uniemożliwić próby połączeń z zewnątrz z lokalnymi maszynami?

Nie, ponieważ wszystko co przechodzi przez tun0 podlega tłumaczeniu adresów realizowanemu przez natd. Pakiety przychodzące z zewnątrz trafiają wyłącznie do dynamicznie przydzielonego adresu IP, a nie do sieci wewnętrznej. Zauważmy jednak, że można dodać regułę w rodzaju $fwcmd add deny all from 192.168.0.4:255.255.0.0 to any via tun0, która zabroni maszynie w sieci wewnętrznej komunikowania się ze światem przez firewall.

6.4. Coś musi być nie tak. Postępowałem dokładnie według wskazówek i jestem w kropce.

W artykule przyjmujemy, że korzystamy z userland-ppp, reguły obowiązują więc dla interfejsu tun0, odpowiadającemu pierwszemu połączeniu nawiązanemu przez ppp(8) (zwanemu także user-ppp). Dodatkowym połączeniom odpowiadać będą interfejsy tun1, tun2 itd.

W przypadku pppd(8) jest z kolei wykorzystywany interfejs ppp0, jeśli więc połączenie jest realizowane za pośrednictwem pppd(8), w miejscu tun0 trzeba wstawić ppp0. Poniżej przedstawiona jest szybka metoda uwzględnienia tej zmiany w regułach firewalla. Oryginalny plik z regułami zachowywany jest pod nazwą fwrules_tun0.

       % cd /etc/firewall
        /etc/firewall% su
        Password:
        /etc/firewall# mv fwrules fwrules_tun0
        /etc/firewall# cat fwrules_tun0 | sed s/tun0/ppp0/g > fwrules
     

By przekonać się, czy w użyciu jest ppp(8), czy pppd(8), można po nawiązaniu połączenia posłużyć się ifconfig(8). W przypadku połączenia nawiązanego przez pppd(8) zobaczylibyśmy coś w rodzaju (pomijając nieistotne informacje):

       % ifconfig
        (nieistotne...)
        ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1524
                    inet xxx.xxx.xxx.xxx -************-> xxx.xxx.xxx.xxx netmask 0xff000000
        (nieistotne...)
       

Natomiast gdy nawiązanie połączenia odbyło się za pośrednictwem ppp(8) (user-ppp), ujrzymy coś takiego:

       % ifconfig
        (nieistotne...)
        ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
        (nieistotne...)
        tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1524
                (nieistotne IPv6...)
                    inet xxx.xxx.xxx.xxx -************-> xxx.xxx.xxx.xxx netmask 0xffffff00
                    Opened by PID xxxxx
            (nieistotne...)

Ten i inne dokumenty można pobrać z ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

W przypadku pytań o FreeBSD prosimy przeczytać dostępną dokumentację przed kontaktem z <questions@FreeBSD.org>.
W sprawie zapytań o tę dokumentację prosimy o kontakt z <doc@FreeBSD.org>.