[RIJEŠENO] routing eth1 to eth0

Linux, poslužitelj, mreže i sigurnost

Moderator/ica: Moderatori/ce

Avatar
Sokac
Site Admin
Postovi: 1120
Pridružen/a: 11 pro 2007, 23:33
Spol: M
OS: Archlinux
Lokacija: San Francisco
Kontakt:

[RIJEŠENO] routing eth1 to eth0

Post Postao/la Sokac »

Eh, evo i ja sam se malo uhvatio u koštac oko mreže i došao sam do jednog čudnog problema i ne znam iz kojeg razloga mi ne želi raditi...

Naime, na kompu imam 2 ethernet kartice; jedna od njih (eth0) ima pristup internetu, a druga (eth1) ide na switch gdje se treba spojiti još računala (trenutno samo laptop).

E sad, ideja je sljedeće:
INTERNET << == >> ROUTER << == >> eth0 DESKTOP PC eth1 << == >> switch << == >> eth0 notebook

Prva ideja je bila preko iptables:

Kod: Označi sve

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT


# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# Don't forward from the outside to the inside.
iptables -A FORWARD -i eth1 -o eth1 -j REJECT

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

Kod: Označi sve

ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:1A:92:E8:E6:3B  
          inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::21a:92ff:fee8:e63b/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:96875 errors:0 dropped:0 overruns:0 frame:0
          TX packets:67846 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:39440963 (37.6 Mb)  TX bytes:9391413 (8.9 Mb)
          Interrupt:27 Base address:0xa000 

eth1      Link encap:Ethernet  HWaddr 00:06:4F:76:BD:D0  
          inet addr:192.168.1.50  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::206:4fff:fe76:bdd0/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:235001 errors:0 dropped:0 overruns:0 frame:0
          TX packets:507742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14356708 (13.6 Mb)  TX bytes:762617494 (727.2 Mb)
          Interrupt:18 Base address:0x2400 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:18780 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18780 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:653963 (638.6 Kb)  TX bytes:653963 (638.6 Kb)
no ne želi raditi... uspio sam podesiti bridge preko bridge-utils (brctl); na laptopu radi OK; no onda nemam pistup na desktop računalu što mi opet odgovara.

Znači, ono što meni treba je da sav promet sa eth1 proslijedi dalje preko eth0 (svi portovi, svi protokoli). ima netko kakvu ideju?
Avatar
drade
Postovi: 910
Pridružen/a: 12 svi 2010, 07:57
OS: linux

Re: routing eth1 to eth0

Post Postao/la drade »

Pozdrav,

Mozes li za probu napraviti sljedece:
# cat /proc/sys/net/ipv4/ip_forward
Te nakon toga ovaj set komandi:
# iptables -F (da pobrise sve unose u tablice)
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Sudeci prema tvom ascii dijagramu vanjski interface bi trebao biti eth0 a ne eth1. Sukladno tome bi trebali biti promijenjeni i ostali unosi.

I jos jedna stvar
echo 1 > /proc/sys/net/ipv4/ip_forward
Ovo ti vise nece funkcionirati nakon reboota.

D.
When you're a kid and you wanna go "Weee !", but you ain't got drugs yet ... You hold out for your life, hold on to your little GONADS ... and STRIFE.
Avatar
Sokac
Site Admin
Postovi: 1120
Pridružen/a: 11 pro 2007, 23:33
Spol: M
OS: Archlinux
Lokacija: San Francisco
Kontakt:

Re: routing eth1 to eth0

Post Postao/la Sokac »

cat /proc/sys/net/ipv4/ip_forward daje za output 1 što znači da to ispravno radi i nema problema. Glede reboota, to mi je manje bitno; poštelam lako da bude cijelo vrijeme forwarding...

Ovo tvoje ne radi, na eth1 dobivam arp req (kao i prije), no komp ne želi odgovarati na njih... Već sam naveo, eth1 treba prosljeđivati sve na eth0 koji ima pristup internetu; ono gore napisano ne radi, probao sam zamjeniti eth1 i eth0 kako si rekao no ne funkcionira.

Još jednom podsjećam, može riješenje biti i preko bridge-utils samo da mi radi i na desktop računalu ;)
Avatar
glaskoncILLa
Postovi: 5678
Pridružen/a: 28 vel 2009, 16:36

Re: routing eth1 to eth0

Post Postao/la glaskoncILLa »

ako ga nemas u arp tablici, to znaci i da se ne pinga?
takodjer, moras na kompu koji je zakacen na drugi komp imati default rutu na drugu komp i biti siguran da je ta default ruta aktivna.
naime, ako si ju postavio na ip, a taj ip nije bio dostupan u trenutku kada je komp to cekirao, nista od default rute.

takodjer, kako testiras, mozda ti sve radi (trebalo bi u trenutku kada si prebacio nat na eth0 pod uvjetom da su rute dobre), ali se ne resolva?
...."Have you mooed today?"...
..It’s that time of the decade: I’m reinstalling Debian..
Avatar
drade
Postovi: 910
Pridružen/a: 12 svi 2010, 07:57
OS: linux

Re: routing eth1 to eth0

Post Postao/la drade »

Sokac je napisao/la:cat /proc/sys/net/ipv4/ip_forward daje za output 1 što znači da to ispravno radi i nema problema. Glede reboota, to mi je manje bitno; poštelam lako da bude cijelo vrijeme forwarding...

Ovo tvoje ne radi, na eth1 dobivam arp req (kao i prije), no komp ne želi odgovarati na njih... Već sam naveo, eth1 treba prosljeđivati sve na eth0 koji ima pristup internetu; ono gore napisano ne radi, probao sam zamjeniti eth1 i eth0 kako si rekao no ne funkcionira.

Još jednom podsjećam, može riješenje biti i preko bridge-utils samo da mi radi i na desktop računalu ;)
Ovo sto sam postao je najjednostavniji nacin stvaranja "internet connection sharinga" u linux svijetu. Ajde ukucaj sve sto sam gore napisao pa postaj output od komandi:
# ping google.com
# route
Na windowsima ces morati umjesto route komande koristiti tracert (ako se dobro sjecam). Koju distribuciju koristis ?

Ovo ucini na tom ics boxu i klijentu s kojega zelis koristiti to shareanje konekcije. Tko/Sto ti dodijeljuje mreznu konfiguraciju klijentima, rucno ili dhcp-om ?

Budi siguran da su svi unosi iz iptablesa maknuti, te samo dodaj onaj "one liner" iz mog originalnog posta.

D.
When you're a kid and you wanna go "Weee !", but you ain't got drugs yet ... You hold out for your life, hold on to your little GONADS ... and STRIFE.
Avatar
glaskoncILLa
Postovi: 5678
Pridružen/a: 28 vel 2009, 16:36

Re: routing eth1 to eth0

Post Postao/la glaskoncILLa »

a i ako si samo dodao onaj rule za nat preko eth0, a nisi izbrisao prvotno postavljeni, iptablesi ti i dalje nataju preko eth1 jer je to prvi rule kojeg pogode..
...."Have you mooed today?"...
..It’s that time of the decade: I’m reinstalling Debian..
Avatar
Sokac
Site Admin
Postovi: 1120
Pridružen/a: 11 pro 2007, 23:33
Spol: M
OS: Archlinux
Lokacija: San Francisco
Kontakt:

Re: routing eth1 to eth0

Post Postao/la Sokac »

Evo ovako... drade, koristim na oba archlinux i nakon tvojih uputa (kao što sam već i rekao) jednostavno stvar ne funkcionira.

glaskoncILLa, tako je; ne mogu pingat ništa osim vlastitog laptopa i kompa; ništa više ne vidi. Što se tiče podešavanja mreže na laptopu, ako upalim dhcp client (dhcpcd eth0) ne dobivam ništa, tj bude timed out. paket koji dobivam na kompu (desktop pc, eth1) je sljedeće:

Kod: Označi sve

1	0.000000	0.0.0.0	255.255.255.255	DHCP	DHCP Discover - Transaction ID 0x7a4f7c97
odgovora za taj upit jednostavno nema...

ako ručno podesim ip, netmask i gw na laptopu, i napravim sljedeće: ping 192.168.1.1 (router); dobivam sljedeće na njemu:
- From (...) destination host unreachable

Na eth1 dobivam ove pakete:

Kod: Označi sve

54	231.093328	HewlettP_1f:01:18	Broadcast	ARP	Who has 192.168.1.1?  Tell 192.168.1.79
za koje komp ne daje odgovore.

Znači, problem je upravo to prosljeđivanje dalje, prema eth0 što očito ne funkcionira kako bi trebalo.

Probat ću se sad malo igrati sa bridge-utils; vi ako imate kakve ideje... :)


edit:
ping google.com
unknown host google.com
route
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.1.50 0.0.0.0 UG 0 0 eth0 (<- ručno dodano)

i da, dobivam ovo (odgovor na ping 192.168.1.3, što je eth0 na desktopu):

Kod: Označi sve

640	798.813032	HewlettP_1f:01:18	Broadcast	ARP	Who has 192.168.1.3?  Tell 192.168.1.79
641	798.813053	Pro-Nets_76:bd:d0	HewlettP_1f:01:18	ARP	192.168.1.3 is at 00:06:4f:76:bd:d0
Avatar
drade
Postovi: 910
Pridružen/a: 12 svi 2010, 07:57
OS: linux

Re: routing eth1 to eth0

Post Postao/la drade »

Pozdrav,

Alright, idemo ovako. Molim te da navedes tocno koje vrijednosti unosis za "ip", "netmask" i "gateway" na klijentskom racunalu, tj. laptopu ?

Znam da je malo nategnuto, ali ako imas ssh pristup tom racunalu volio bih se spojiti da vidim to iz prve ruke ?

D.
When you're a kid and you wanna go "Weee !", but you ain't got drugs yet ... You hold out for your life, hold on to your little GONADS ... and STRIFE.
Avatar
Sokac
Site Admin
Postovi: 1120
Pridružen/a: 11 pro 2007, 23:33
Spol: M
OS: Archlinux
Lokacija: San Francisco
Kontakt:

Re: routing eth1 to eth0

Post Postao/la Sokac »

ssh se teško dobiva kod mene (održavam brojne web stranice). Ali nema niti potrebe razmišljati o tome, uspio sam riješiti preko bridge-utils

Kod: Označi sve

brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1

ifconfig eth0 up
ifconfig eth1 up
ifconfig br0 up
zatim je potrebno podesiti br0 kao eth0 što bi podesio; te na laptopu samo pokreniti dhcpcd eth0. Jednostavno, a nema puno petljancije
Avatar
drade
Postovi: 910
Pridružen/a: 12 svi 2010, 07:57
OS: linux

Re: routing eth1 to eth0

Post Postao/la drade »

Sokac je napisao/la:ssh se teško dobiva kod mene (održavam brojne web stranice). Ali nema niti potrebe razmišljati o tome, uspio sam riješiti preko bridge-utils

Kod: Označi sve

brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1

ifconfig eth0 up
ifconfig eth1 up
ifconfig br0 up
zatim je potrebno podesiti br0 kao eth0 što bi podesio; te na laptopu samo pokreniti dhcpcd eth0. Jednostavno, a nema puno petljancije
Ma nema problema, mozes li mi samo navesti koje vrijednosti si unasao kako sam zatrazio gore.

D.
When you're a kid and you wanna go "Weee !", but you ain't got drugs yet ... You hold out for your life, hold on to your little GONADS ... and STRIFE.
Zaključano