Jak przekazywać pakiety z interfejsu sieciowego do innego

1

Mój problem to przekazywanie pakietów z eth2, czyli mojej sieci LAN do eth1, który ma dostęp do Internetu, aby umożliwić eth2 dostęp do Internetu, oto moja konfiguracja:

auto eth1
iface eth1 inet static
    address 192.168.3.1
    netmask 255.255.255.0
    network 192.168.3.0
    broadcast 192.168.3.255
    gateway 192.168.3.254

auto eth2
iface eth2 inet static
    address 10.101.26.1
    netmask 255.255.0.0
    network 10.101.0.0
    broadcast 10.101.255.255

Konfiguracja iptables:

iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth2 -j ACCEPT

Już odkomentuj net.ipv4.ip forward = 1 w /etc/sysctl.conf i napisz 1 w / proc / sys / net / ipv4 / ip_forward .

Jeśli testuję na komputerze podłączonym do sieci LAN z bramą 10.101.26.1, nie mogę uzyskać dostępu do Internetu, więc jak mogę to rozwiązać?

Dziękuję za wszelką pomoc! pozdrowienia

Ghilander
źródło
Jeśli masz komputer stojący za eth1, musi on znajdować się w tej samej podsieci co eth1, a domyślną bramą musi być IP eth1, a nie IP eth2.
LawrenceC,

Odpowiedzi:

3

Będziesz potrzebować jakiegoś maskaradowego stwierdzenia. Powodem tego jest to, że obecnie pakiety przychodzące z eth2 do eth1 są identyfikowane przez adresy 10.101.0.0/16. Te pakiety 10.101.0.0/16 następnie próbują przemierzać sieć przez eth1 (192.168.3.0/24). Nie udaje się to, ponieważ pakiety te nie zostały jeszcze zamaskowane jako pakiety z 192.168.3.1.

Mały skrypt taki jak ten poniżej powinien pomóc. Zmodyfikuj w razie potrzeby:

#! / bin / bash

IPTABLES = / sbin / iptables

WANIF = „eth1”
LANIF = „eth2”

# Włącz przekazywanie IP w jądrze
echo „Włączanie przekazywania IP jądra ...”
/ bin / echo 1> / proc / sys / net / ipv4 / ip_forward

# przepłukać reguły i usunąć łańcuchy
echo „Opróżnianie reguł i usuwanie istniejących łańcuchów ...”
$ IPTABLES -F
$ IPTABLES -X

# enable maskarade, aby umożliwić dostęp do Internetu w sieci LAN
echo „Włączanie maskowania IP i inne reguły ...”
$ IPTABLES -t nat -A POSTROUTING -o $ LANIF -j MASQUERADE
$ IPTABLES -A DO PRZODU -i $ LANIF -o $ WANIF -m stan - stan POWIĄZANE, USTALONE -j AKCEPTUJ
$ IPTABLES -A DO PRZODU -i $ WANIF -o $ LANIF -j AKCEPTUJĘ

$ IPTABLES -t nat -A POSTROUTING -o $ WANIF -j MASQUERADE
$ IPTABLES -A DO PRZODU -i $ WANIF -o $ LANIF -m stan - stan POWIĄZANE, USTALONE -j AKCEPTUJ
$ IPTABLES -A DO PRZODU -i $ LANIF -o $ WANIF -j AKCEPTUJĘ

echo „Gotowe”.
ukłon
źródło
0

Na podstawie twojego opisu zakładam, że twój komputer stoi za routerem, a eth1 jest podłączony do Internetu za pośrednictwem routera. Trzeba będzie utworzyć statyczną trasę na routerze do 10.101.0.0/16 przez 192.168.3.1, aby pakiety odpowiedzi przeznaczone do tej sieci mogły być przekazywane do komputera.

Larssend
źródło
192.168.3.1 może uzyskać dostęp do Internetu, muszę przekazywać pakiety od 10.101.0.0/16 do 192.168.3.1 i odwrotnie. Jak mogę utworzyć tę regułę statyczną? Próbowałem już z tym:> route add -net 10.101.0.0 netmask 255.255.0.0 gw 192.168.3.254
Ghilander
@ Ghilander: Utwórz trasę statyczną na routerze. To nie jest reguła zapory.
Larssend,
czy możesz mi pokazać przykład?
Ghilander,
@ Ghilander: Utwórz trasę statyczną, która jest równoważna route add -net 10.101.0.0/16 gw 192.168.3.1z routerem (tj. 192.168.3.254).
Larssend,
@ Ghilander: Lub po prostu użyj strony administratora routera. Informacje na temat dodawania wpisu routingu statycznego można znaleźć w instrukcji obsługi.
Larssend,