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