Routing dwóch podsieci.

Instalacja i konfiguracja oprogramowania sieciowego.
grzesp
Piegowaty Guziec
Piegowaty Guziec
Posty: 11
Rejestracja: 17 maja 2009, 13:13
Płeć: Mężczyzna
Wersja Ubuntu: 12.10
Środowisko graficzne: Xfce
Architektura: x86_64

Routing dwóch podsieci.

Post autor: grzesp »

Witam serdecznie,
mam dwie podsieci:

192.168.4.0/24
192.168.3.0/24

Potrzebuję osiągnąć taką funkcjonalność żeby z sieci 4.0 nie było dostępu do sieci 3.0, ale MUSI być dostęp do jednego komputera w sieci 3.0. Obie sieci muszą mieć dostęp do internetu. Jeżeli ustawię routing przy pomocy ip route to czy przy pomocy iptables będę mógł zdefiniować regułkę tak, aby był dostęp do tego komputera w sieci 3.0?

Pozdrawiam, Grzesiek.
jackblack
Piegowaty Guziec
Piegowaty Guziec
Posty: 9
Rejestracja: 08 lis 2011, 22:41
Płeć: Mężczyzna
Architektura: x86_64

Re: Routing dwóch podsieci.

Post autor: jackblack »

Czesc
Tym rozwiązaniem idziesz w stronę podziału na LAN i DMZ. Jeśli do tego dołączysz kompa z ktorego zrobisz bramę na iptablesach to bedzie to dzialac.
Idealnie by było miec 3 sieciowki w tym kompie z którego zrobisz brame.
Wtedy całym ruchem we wszystkie strony zarzadzasz z iptables na bramie tak jak chcesz.
Czy o takie rozwiązanie Ci chodzi ?
grzesp
Piegowaty Guziec
Piegowaty Guziec
Posty: 11
Rejestracja: 17 maja 2009, 13:13
Płeć: Mężczyzna
Wersja Ubuntu: 12.10
Środowisko graficzne: Xfce
Architektura: x86_64

Re: Routing dwóch podsieci.

Post autor: grzesp »

jackblack pisze:Czesc
Tym rozwiązaniem idziesz w stronę podziału na LAN i DMZ. Jeśli do tego dołączysz kompa z ktorego zrobisz bramę na iptablesach to bedzie to dzialac.
Idealnie by było miec 3 sieciowki w tym kompie z którego zrobisz brame.
Wtedy całym ruchem we wszystkie strony zarzadzasz z iptables na bramie tak jak chcesz.
Czy o takie rozwiązanie Ci chodzi ?
Witam,
Ubuntu Server stoi na XEN Serwerze Citrixa. Są skonfigurowane sieciówki na każdą podsieć osobno wraz z VLANAMI, np: sieć 4.0 to VLAN ID 4. Switche mają poustawiane tagowanie na odpowiednie porty. Wszystko schodzi do jednego routera (właśnie na tym Ubuntu).
W tej chwili mam w iptables ustawioną regułkę:

Kod: Zaznacz cały

iptables -A FORWARD -s 192.168.4.0/24 -m iprange --dst-range 192.168.0.0-192.168.3.255 -j REJECT
iptables -A FORWARD -s 192.168.4.0/24 -p tcp -d 192.168.0.150 --dport 80 -j ACCEPT
jednak WYDAJE mi się, że powinno się to CHYBA routingiem załatwić. Każda z podsieci musi mieć dostęp do świata (eth0) i do komputera z adresem 0.150. W przypadku powyższej regułki iptables nie wiem dlaczego, ale mogę puścić pinga na 192.168.0.1.

Pozdrawiam,
Grzegorz.
Ubek308
Zakręcona Traszka
Zakręcona Traszka
Posty: 574
Rejestracja: 25 maja 2011, 10:17
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: Routing dwóch podsieci.

Post autor: Ubek308 »

Routingi musza byc wlasciwe bo inaczej pakiet nie wie gdzie isc, ale w/w reguly sa w zlej kolejnosci.
Pakiet nigdy nie dojdzie do drugiej reguly bo pierwsza go odrzuci.
Awatar użytkownika
kolszak
Sędziwy Jeż
Sędziwy Jeż
Posty: 33
Rejestracja: 14 gru 2005, 22:25
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86_64
Kontakt:

Re: Routing dwóch podsieci.

Post autor: kolszak »

grzesp pisze:Witam serdecznie,
mam dwie podsieci:

192.168.4.0/24
192.168.3.0/24
Skoro te sieci są dla routera "directly connected" to wystarczy włączyć forwading pakietów na danym routerze z ubuntu, potem zostaje Ci tylko jedna reguła która zabroni dostępu wszystkim do Twojego hosta z danej sieci za wyjątkiem... czyli załatwisz to jedną linijką (zastosuj ! w regule iptables).
jackblack
Piegowaty Guziec
Piegowaty Guziec
Posty: 9
Rejestracja: 08 lis 2011, 22:41
Płeć: Mężczyzna
Architektura: x86_64

Re: Routing dwóch podsieci.

Post autor: jackblack »

Czesc

Te dwie regułki owszem maja zamieniona kolejnosc to pewnie przeoczenie. Pingujesz .0.1 bo masz ustawiony routing w systemie i ACCEPT w iptables na icmp.
Skoro routing już działa to potrzebujesz reguł iptables. W wersji bardzo ogólnej dosłownie tak aby tylko działało mogą one wyglądać tak:

# zakładam, ze ten eth1 jest z sieci .3.0, adres zrodła 192.168.4.100 ma dopuszczone polaczenia do sieci .3.0, do kompa 192.168.3.25

Kod: Zaznacz cały

iptables -A FORWARD -i eth1 -p all  -m iprange --src-range 192.168.4.1-192.168.4.99 -j DROP
iptables -A FORWARD -i eth1 -p all  -m iprange --src-range 192.168.4.101-192.168.4.255 -j DROP
iptables -A FORWARD -i eth1 -p tcp  -s 192.168.4.100 -d 192.168.3.25 -m state --state NEW, ESTABLISHED, RELATED -j ACCEPT
# zakladam, ze eth2 jest z sieci .4.0

Kod: Zaznacz cały

iptables -A FORWARD -i eth2  -p tcp -s 192.168.3.25 -d 192.168.4.100 -j ACCEPT
A teraz dostep do INTERNETU.
# zakladam, ze eth0 to wyjscie na swiat.

Kod: Zaznacz cały

iptables -A FORWARD -i eth2 -p tcp -m iprange --src-range 192.168.4.1-192.168.4.100 -o eth0 -m state --state NEW, ESTABLISHED, RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -p tcp -o eth2 -m multiport --dport 1:1024 -j DROP
iptables -A FORWARD -i eth0 -p tcp -o eth2 -m iprange --dst-range 192.168.4.1-192.168.4.100 -j ACCEPT

iptables -A FORWARD -i eth1 -p tcp -m iprange --src-range 192.168.3.1-192.168.3.100 -o eth0 -m state --state NEW, ESTABLISHED, RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -p tcp -o eth1 -m multiport --dport 1:1024 -j DROP
iptables -A FORWARD -i eth0 -p tcp -o eth1 -m iprange --dst-range 192.168.3.1-192.168.3.100 -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source TWOJ.ZEWN.ETRZ.NYIP
To jest tylko kierowanie ruchem tcp i nic więcej.
grzesp
Piegowaty Guziec
Piegowaty Guziec
Posty: 11
Rejestracja: 17 maja 2009, 13:13
Płeć: Mężczyzna
Wersja Ubuntu: 12.10
Środowisko graficzne: Xfce
Architektura: x86_64

Re: Routing dwóch podsieci.

Post autor: grzesp »

jackblack pisze:Czesc

Te dwie regułki owszem maja zamieniona kolejnosc to pewnie przeoczenie. Pingujesz .0.1 bo masz ustawiony routing w systemie i ACCEPT w iptables na icmp.
Witam.
Dziękuję za tak obszerną odpowiedź.

Właśnie co do routingu nie jestem pewien - iptables to jak na razie dla mnie prostsza sprawa.

route -n daje mi wynik:

Kod: Zaznacz cały

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
217.173.195.XXX 0.0.0.0         255.255.255.248 U     0      0        0 eth0
192.168.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth3
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 eth4
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2
0.0.0.0         XXX.XXX.XXX.XXX 0.0.0.0         UG    100    0        0 eth0
Nie jestem dobry w manewrach poleceniem

Kod: Zaznacz cały

route
, ale WYDAJE mi się, że jeżeli wszystkie podsieci wpadają do GW 0.0.0.0 to nie jest tak jak być powinno. Jednak tak jak piszę: WYDAJE mi się. Na moje oko jeżeli 192.168.4.0 nie powinna mieć dostępu do wewnątrz za wyjątkiem jednego komputera to wszystko z 4.0 powinno iść od razu w świat, czyli wpis powinien być, imho, taki:

Kod: Zaznacz cały

192.168.4.0     XXX.XXX.XXX.XXX         255.255.255.0   U     0      0        0 eth3
gdzie XXX to IP na zewnętrzne ip od providera. Dobrze myślę?
Docelowo ma dojść jeszcze jeden VLAN ID 2, z którego ma być dostęp do 192.168.3.0, ale odwrotnie już nie może być wejścia.

Edit: dodam jeszcze, że wszystkie sieci wpadają do jednej maszynki, która pełni rolę routera dla każdej sieci.

Pozdrawiam i dziękuję za zainteresowanie.
Grzegorz.
Awatar użytkownika
kolszak
Sędziwy Jeż
Sędziwy Jeż
Posty: 33
Rejestracja: 14 gru 2005, 22:25
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86_64
Kontakt:

Re: Routing dwóch podsieci.

Post autor: kolszak »

grzesp pisze:
route -n daje mi wynik:

Kod: Zaznacz cały

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
217.173.195.XXX 0.0.0.0         255.255.255.248 U     0      0        0 eth0
192.168.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth3
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 eth4
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2
0.0.0.0         XXX.XXX.XXX.XXX 0.0.0.0         UG    100    0        0 eth0
Nie jestem dobry w manewrach poleceniem

Kod: Zaznacz cały

route
, ale WYDAJE mi się, że jeżeli wszystkie podsieci wpadają do GW 0.0.0.0 to nie jest tak jak być powinno. Jednak tak jak piszę: WYDAJE mi się. Na moje oko jeżeli 192.168.4.0 nie powinna mieć dostępu do wewnątrz za wyjątkiem jednego komputera to wszystko z 4.0 powinno iść od razu w świat, czyli wpis powinien być, imho, taki:
Nie ma czegoś takiego, że podsieci wpadają do 0.0.0.0.
Poczytaj o routingu iptables tu naprawdę nie ma nic do gadania (tym możesz kierować, filtrować, kształtować itp ruch). Pakiet najpierw jest wysyłany do sieci o najniższej metryce. Zobacz, że dla Twojej domyślnej bramy masz metrykę 100. Podpowiem Ci jeszcze raz, zrób sobie najpierw zwykły forwarding pakietów między vlanami, jak już to zrobisz to pomyślisz o regułkach jak wyfiltrować ten ruch.
Ubek308
Zakręcona Traszka
Zakręcona Traszka
Posty: 574
Rejestracja: 25 maja 2011, 10:17
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: Routing dwóch podsieci.

Post autor: Ubek308 »

Routing i iptables to dwie rozne rzeczy.
Jesli nie ma wlasciwego routingu to iptables moze wygrywac serenady bo i tak do niego nie dotrze zaden pakiet a jesli nawet dotrze i przejdzie - odpowiedz niekoniecznie znajdzie droge powrotna. Przy czym jak zawsze - do tanga trzeba dwojga, routing musi prawidlowy NA OBU maszynach czy sieciach.
grzesp
Piegowaty Guziec
Piegowaty Guziec
Posty: 11
Rejestracja: 17 maja 2009, 13:13
Płeć: Mężczyzna
Wersja Ubuntu: 12.10
Środowisko graficzne: Xfce
Architektura: x86_64

Re: Routing dwóch podsieci.

Post autor: grzesp »

Witam, zacząłem wprowadzać próbnie to, co powyżej napisałeś, ale nie wiem dlaczego nie działa mi to. Tzn trochę zmieniłem na swoje potrzeby i niestety brak dostępu do internetu.

Kod: Zaznacz cały

#!/bin/bash
#wlaczenie forwardowania w kernelu
/bin/echo "1" > /proc/sys/net/ipv4/ip_forward

# czyszczenie starych reguł
iptables -F
iptables -X
iptables -t nat -X
iptables -t nat -F
iptables -t mangle -F
iptables -t mangle -X

# ustawienie domyslnej polityki
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# utrzymanie połączeń nawiązanych
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

# localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#udostepnianie internetu w sieci VLAN ID 4 - WiFi
iptables -A FORWARD -i eth3 -p tcp -s 192.168.4.0/24 -o eth0 -m state --state NEW,ESTABLISHED,RELATED
iptables -A FORWARD -i eth0 -p tcp -o eth3 -m multiport --dport 1:1024 -j DROP
iptables -A FORWARD -i eth0 -p tcp -o eth3 -s 192.168.4.0/24 -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source XXX.XXX.XXX.XXX
Sieciówka eth3 - na niej działa sieć 192.168.4.0
Sieciówka eth0 - wyjście na świat.
Na chwilę obecną to jest cały skrypt, nie ma w nim nic więcej.


EDIT: działa jednak. BARDZO przepraszam za zamieszanie.

Pozdrawiam ciepło,
Grzesiek
jackblack
Piegowaty Guziec
Piegowaty Guziec
Posty: 9
Rejestracja: 08 lis 2011, 22:41
Płeć: Mężczyzna
Architektura: x86_64

Re: Routing dwóch podsieci.

Post autor: jackblack »

Czesc,
Fajnie, że działa teraz jeszcze jakies 100 linijek i bedzie całkiem nieźle :)
Z tym routingiem to dobrze kombinujesz adres podsieci na jakąś brame na drugim routerze zapis przeciwny dla ruchu w drugą stronę i działa. Masz racje takie rozwiązania świetnie sie sprawdzają przy definiowaniu statycznych tras na stałe ale w sytuacji gdy masz kilka routerów. Każdy z nich spina swoją sieć a one same też "wyżej" są spięte. Wtedy na każdym z nich określasz trasy do innych routerów (podsieci). Jeśli gdzieś tego nie zrobisz nie będą się widzieć.
Ty masz jeden router i na dodatek wyjątek który chcesz obsłużyć. Mam na myśli tego jednego kompa który ma mieć możliwość łączyć się z konkretnym pc w sieci .3.0. Nie strzelajmy z armaty do komara routing w tej postaci jak teraz masz jest wystarczający. Wszystkie ograniczenia ruchu jakie będziesz potrzebował wprowadzić można zrealizować iptablesami. Zaglądałeś do projektu apf-firewall ? Jest w repo ubuntu choć to z centosa instaluje się jakoś czyteniej. Kilka rzeczy fajnie jest tam zrobione.

Pozdrawiam,
Jacek
grzesp
Piegowaty Guziec
Piegowaty Guziec
Posty: 11
Rejestracja: 17 maja 2009, 13:13
Płeć: Mężczyzna
Wersja Ubuntu: 12.10
Środowisko graficzne: Xfce
Architektura: x86_64

Re: Routing dwóch podsieci.

Post autor: grzesp »

Witam serdecznie,
w przypadku poniższej regułki co nie powinno działać? Pytam, ponieważ pingi latają z sieci 4.0 do 0.1 co chyba nie powinno działać. Chyba, że coś w niej jest nie tak.
I tak lamersko zapytam: czym różni się zapis 192.168.4.0/24 od 192.168.4.1-192.168.4.255?

Kod: Zaznacz cały

iptables -A FORWARD -i eth4 -p all -s 192.168.4.0/24 -m iprange --dst-range 192.168.0.1-192.168.0.255 -o eth2 -j DROP
A tak mnie naszło: czy dla pingów nie powinienem wskazać jako -p icmp chociaż nie ma to chyba sensu bo mam zapis -p all?

EDIT: za dużo siedzę nad tym, już widzę błędy, po 1: powinno być eth3 a nie eth4 a druga sprawa to taka, że miałem na początku skryptu:

Kod: Zaznacz cały

iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 50/sec -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m length --length 200: -j DROP
iptables -A FORWARD -p icmp --icmp-type echo-reply -m limit --limit 50/sec -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-reply -m length --length 200: -j DROP
tym sposobem chciałem blokować coś, na co pozwalałem...heh. Przepraszam za mieszanie.

Nie zaglądałem do apf-firewall zainteresuję się nim, ale najpierw chciałbym ujarzmić wszystko to, czego jeszcze nie rozgryzłem.

Pozdrawiam,
Grzesiek
ODPOWIEDZ

Wróć do „Sieci, serwery, Internet”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości