Przepraszam wszystkich nadal zszokowanych po przejściu z 2.0 (ipfwadm) do 2.2 (ipchains). Są dobre i złe wiadomości
Przede wszystkim, możesz używać dalej ipchains i ipfwadm tak jak kiedyś.
By to zrobić, musisz włączyć do kernela (insmod) moduły 'ipchains.o'
lub 'ipfwadm.o' które znajdują się w najnowszej dystrybucji pakietu
netfilter. Moduły mogą być załadowane tylko rozłącznie (zostałeś ostrzeżony)
i nie powinny być łączone z innymi modułami netfilter.
Kiedy już zainstalujesz jeden z tych modułów, możesz używać ipchains i ipfwadm tak jak do tej pory, z następującymi różnicami:
ipchains -M -S
lub ipfwadm -M -s nic nie robi. Ponieważ jednak czasy wygasania dla nowej
infrastruktury NAT są dużo dłuższe, nie powinno mieć to znaczenia.init_seq, delta i previous_delta w listingu
szczegółowym maskarady są zawsze ustawione na zero.-Z -L'
nie działa: liczniki nie zostaną wyzerowane.Hakerzey mogą również zauważyć, że:
getsockname', której
programy pracujące jako transparentne proxy mogły użyć by
uzyskać prawdziwe adresy przeznaczenia połączeń już nie działa.bind-to-foreign-address'
również nie została zaimplementowana; była używana to
stworzenia kompletnej iluzji transparentnego proxy.Większość ludzi chce. Jeśli masz dynamicznie przydzielany IP podczas wdzwaniania się po PPP (jeśli nie wiesz o co chodzi to zapewne tak właśnie jest), możesz po prostu powiedzieć swojej maszynie że wszystkie pakiety wychodzące z twojej sieci wewnętrznej powinny być zmieniane tak, by wyglądały jak pakiety wychodzące z komputera wdzwaniającego się.
# Załaduj moduł NAT (usuwa inne).
modprobe iptable_nat
# W tabeli NAT (-t nat), dodaj regułę (-A) po routingu
# (POSTROUTING) dla wszystkich pakietów wychodzących przez ppp0 (-o ppp0)
# która mówi by prowadzić maskaradowanie połączenia (-j MASQUERADE).
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Włącz przekazywanie IP
echo 1 > /proc/sys/net/ipv4/ip_forward
Zauważ że nie prowadzimy tutaj żadnego filtrowania pakietów: jeśli chcesz je zastosować, przeczytaj Filtrowanie Pakietów HOWTO a w szczególności sekcję: 'Łączenie NAT i filtrowania pakietów'.
Istnieje dużo mniejsza liczba użytkowników, więc specjalnie nie
przejmowałem się wsteczną kompatybilnością. Możesz po prostu użyć
'iptables -t nat' by wykonywać przekazywanie portów.
Na przykład, dla Linuksa 2.2 mógłbyś zrobić:
# Linux 2.2
# Przekaż pakiety TCP kierowane do portu 8080 na 1.2.3.4 do 192.168.1.1 na port 80
ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80
A teraz zrobisz:
# Linux 2.4
# Dodaj regułę przed routingiem (-A PREROUTING) do tabeli NAT (-t nat) mówiącą, że
# pakiety TCP (-p tcp) kierowane do 1.2.3.4 (-d 1.2.3.4) na port 8080 (--dport 8080)
# mają być zmapowane (-j DNAT) na 192.168.1.1, port 80 (--to 192.168.1.1:80).
iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80