ďťż
 
 
   Serwer - ruter, ruch jest tylko jednostronny
 
 

Tematy

 
    
 

 

 

 

Serwer - ruter, ruch jest tylko jednostronny





rmika - 06-04-2009 14:04
Witam. Mam problem z serwerem, który ma pracować jako ruter.
Postępowałem według poniższych wskazówek znalezionych na http://www.dug.net.pl/texty/masq.php

ale jest problem...

Komputer, który jest podpięty do tego rutera nie może nawet pingować rutera, a ruter pinguje ten komputer.

O co chodzi?
Chcemy stworzyć taką sieć: ----internet--------eth0-[server]--eth1------sieć lokalna----- Najpierw musimy skonfigurować prawidłowo interfejsy sieciowe w naszym routerze. Zakładamy że:
    leth0 - interfejs na świat
    eth1 - interfejs na sieć lokalnąl
Szczegółowy opis konfiguracji interfejsów sieciowych znajdziesz tutaj.

Mamy 2 możliwości:lNasz usługodawca przydziela nam adres IP dynamicznie, czyli nasz serwer pobiera sam ustawienia adresów od dostawcy. Wtedy nasz plik /etc/network/interfaces będzie wyglądał tak: auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
        address 192.168.1.1
        netmask 255.255.255.0 l
lMamy na umowie z naszym dostawcą internetu informacje o IP, masce sieci, network, bramie; wtedy nasz plik /etc/network/interfaces będzie wyglądał tak: auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
      address adres_ip_z_umowy
      netmask maska_sieci_z_imowy
      network adres_sieci_Z_umowy
      gateway brama_z_umowy

auto eth1
iface eth1 inet static
        address 192.168.1.1
        netmask 255.255.255.0 Nasz plik /etc/resolv.conf powinien wyglądać tak: nameserver 194.204.152.34
nameserver 194.204.159.1 Teraz restartujemy ustawienia interfejsów wydając polecenie /etc/init.d/networking restart Sprawdzamy czy wszystko działa poprawnie, czyli czy na serwerze mamy internet. Piszemy np. ping google.pl Jeśli dostaniemy np. coś w tym stylu PING google.pl (216.239.57.99): 56 data bytes
64 bytes from 216.239.57.99: icmp_seq=0 ttl=239 time=207.4 ms
64 bytes from 216.239.57.99: icmp_seq=1 ttl=239 time=204.8 ms Tzn. że internet nam działa na serwerze. Teraz zajmiemy się udostępnianiem połączenia internetowego dla sieci lokalnej - tworzymy plik /etc/init.d/firewall
i nadajemy mu uprawnienia do uruchamiania: chmod +x /etc/init.d/firewall oraz edytujemy ww. plik wpisując do niego przykładowa zawartość
# wlaczenie w kernelu forwardowania
echo 1 > /proc/sys/net/ipv4/ip_forward
# czyszczenie starych regul
iptables -F
iptables -X
iptables -t nat -X
iptables -t nat -F
# ustawienie polityki dzialania
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# zezwolenie nna laczenie sie z naszym zewnetrznym ip po ssh

iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT

iptables -A INPUT -s 0/0 -d ip.ip.ip.ip -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -s 0/0 -d ip.ip.ip.ip -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 0/0 -d ip.ip.ip.ip -p udp --dport 22 -j ACCEPT
iptables -A OUTPUT -s 0/0 -d ip.ip.ip.ip -p udp --dport 22 -j ACCEPT
# polaczenia nawiazane
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
# udostepniaie internetu w sieci lokalnej
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT Zapisujemy plik. Zamiast ip.ip.ip.ip wpisujemy IP zewnętrzne naszego serwera.
Wydajemy jeszcze polecenie, które spowoduje ze ww. skrypt będzie się uruchamiał przy starcie systemu: update-rc.d firewall defaults 20 Teraz konfiguracja stanowisk w sieci Sprawdzamy czy wszystko nam działa poprawnie - uruchamiamy skrypt poleceniem: /etc/init.d/firewall i w sumie to jest najprostsza metoda udostępniania połączenia.l




Ister - 06-04-2009 14:07
Wrzuć jak wygląda Twój firewall, bo inaczej wróżymy z fusów. Ale pewnikiem tu jest problem.



rmika - 06-04-2009 14:09
# wlaczenie w kernelu forwardowania
echo 1 > /proc/sys/net/ipv4/ip_forward
# czyszczenie starych regul
iptables -F
iptables -X
iptables -t nat -X
iptables -t nat -F
# ustawienie polityki dzialania
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# zezwolenie nna laczenie sie z naszym zewnetrznym ip po ssh

iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT

iptables -A INPUT -s 0/0 -d 10.0.0.200 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -s 0/0 -d 10.0.0.200 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 0/0 -d 10.0.0.200 -p udp --dport 22 -j ACCEPT
iptables -A OUTPUT -s 0/0 -d 10.0.0.200 -p udp --dport 22 -j ACCEPT
# polaczenia nawiazane
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
# udostepniaie internetu w sieci lokalnej
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT ja juz wszystko skopiowałem w desperacji



Ister - 06-04-2009 14:47
Ok, poproszę jeszcze wyniki komend:

cat /etc/network/interfaces
ifconfig
ifconfig -a



rmika - 06-04-2009 14:55
/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Wejsciowe lacze
auto eth0
iface eth0 inet static
address 10.0.0.199
netmask 255.255.255.0
gateway 10.0.0.200

#wyscie

auto eth1
iface eth1 inet static
        address 192.168.1.200
        netmask 255.255.255.0 ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1d:7d:e5:7b:c8 
          inet addr:10.0.0.199  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21d:7dff:fee5:7bc8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19764 errors:0 dropped:0 overruns:0 frame:0
          TX packets:583 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1838918 (1.7 MiB)  TX bytes:68588 (66.9 KiB)
          Interrupt:23 Base address:0x2000

eth1      Link encap:Ethernet  HWaddr 00:30:4f:1c:c3:37 
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::230:4fff:fe1c:c337/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17671 errors:0 dropped:0 overruns:0 frame:0
          TX packets:422 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1617092 (1.5 MiB)  TX bytes:56936 (55.6 KiB)
          Interrupt:20 Base address:0xde00

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:67 errors:0 dropped:0 overruns:0 frame:0
          TX packets:67 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:6112 (5.9 KiB)  TX bytes:6112 (5.9 KiB) ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:1d:7d:e5:7b:c8 
          inet addr:10.0.0.199  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21d:7dff:fee5:7bc8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19795 errors:0 dropped:0 overruns:0 frame:0
          TX packets:583 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1841610 (1.7 MiB)  TX bytes:68588 (66.9 KiB)
          Interrupt:23 Base address:0x2000

eth1      Link encap:Ethernet  HWaddr 00:30:4f:1c:c3:37 
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::230:4fff:fe1c:c337/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17702 errors:0 dropped:0 overruns:0 frame:0
          TX packets:422 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1619784 (1.5 MiB)  TX bytes:56936 (55.6 KiB)
          Interrupt:20 Base address:0xde00

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:67 errors:0 dropped:0 overruns:0 frame:0
          TX packets:67 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:6112 (5.9 KiB)  TX bytes:6112 (5.9 KiB) zapomniałem napisać, że ten router jest na razie postawiony w sieci lokalnej na siec lokalną... na razie



mariaczi - 06-04-2009 15:23
Na maszynie, która ma udostępniać internet włączyłeś domyślną politykę na DROP
iptables -P INPUT DROP stąd końcówki nie mogą pingować tej maszyny.

Edit:
Maleńka rada. Najpierw udostępnij internet dalej, potem pracuj nad firewallem.
Dla samego udostępnienia wystarczy włączenie ip_forward oraz NAT i oczywiście poprawne skonfigurowanie kart sieciowych.



rmika - 06-04-2009 16:16
No wiesz... z chęcią bym tego firewalla nie uruchamiał ale myślałem, że tak musi być.
Powiedz mi jak mam włączyć ip_forward oraz NAT.

Ps. Czy ten wpis w firewallu nie odpowiada za włączenie ip_forward: # wlaczenie w kernelu forwardowania
echo 1 > /proc/sys/net/ipv4/ip_forward



Ister - 06-04-2009 16:50
za ip_forward tak, za NAT nie. za nat odpowiada linijka z tabelą nat.

Pomijając już nawet fakt, że nie dalej jak 2-3 dni temu TEN SAM problem był tu rozwiązywany zastanów się nad taką rzeczą:
Komputer łączący się ze światem przez Twój router NAJPIERW musi połączyć się z routerem. A to mu już uniemożliwiasz.

Musisz umożliwić połączenia przychodzące na adres 192.168.1.200 z sieci lokalnej.

A co do "bez firewalla" - wystarczy, że ustawisz politykę na ACCEPT zamiast DROP i będzie działać. Co nie znaczy, że to dobre rozwiązanie. Lepiej zdecydowanie mieć chodzący, dobrze skonfigurowany firewall.



Yampress - 06-04-2009 19:17
Jeśli chcesz pingować server to musisz wpuścić tylko protokół icmp na łańcuchu input. Typy wiadmości icmp 8 - (Echo Request), bez zmiany domyslnej polityki w tym łańcuchu, która ma byc ustawiona na DROP

iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request  -j ACCEPT



rmika - 06-04-2009 20:49
wiecie tylko tak ja napisałem na początku...
na pingu mi aż tak nie należy jak na dostępie do internetu..



bzyk - 06-04-2009 21:52
No to zrób;

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE I będziesz miał tego neta.
A potem czytać, czytać, czytać... Będziesz już miał dostęp do sieci to i o firewallach sobie poczytasz :)[/code]



Yampress - 06-04-2009 22:19
no ale może tak napiszesz co CI nie działa i co chcesz osiągnać bo ja nie rozumiem. Chcesz dzielić internet innym komputerom w sieci? masz stałe zewnątrzene ip czy dynamicznie przydzielane zewnętrzne ip ?

sprawa wygląda tak

na poczatek włączamy przekazywanie pakietów
echo "1" > /proc/sys/net/ipv4/ip_forward nastepnie skrypt firewalla

#usunięcie regół ze wszystkich łańcuchów
iptables -F

#ustawianie domyslnych polityk
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#intrefejs pętli zwrotnej
iptables -A INPUT -i lo -j ACCEPT

#wpyszczamy ruch na ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#wpuszczamy zapytania o pinga
iptables -A INPUT  -p icmp --icmp-type echo-request  -j ACCEPT

#pozwalamy na fowarding
iptables -A FORWARD -s 192.168.1.0/24 -d 0.0.0.0/0 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/0 -d 192.168.1.0/24 -j ACCPET i teraz sa sa 2 możłiwości:

1. zmienne ip zewnętrzene
iptables -t nat -A POSTROUTING -s 192.168.1.2 -d 0.0.0.0/0 -j MASQUERADE 2. stałe ip zewnętrzne
iptables -t nat -A POSTROUTING -s 192.168.1.2 -d 0.0.0.0/0 -j SNAT --to-source nasz_stały_adres_ip



rmika - 07-04-2009 14:25
Dobrze, pora na podsumowanie.

Abym miał internet udostępniony wystarczy w pliku konfiguracyjnym dodać wpis: echo "1" > /proc/sys/net/ipv4/ip_forward I działa.

Nie działa natomiast internet w momencie gdy w pliku konfiguracyjnym firewallu dodam: iptables -P INPUT DROP
iptables -P FORWARD DROP Te wpisy momentalnie mi "psują" politykę dostępową i nie mam już internetu. Nawet usunięcie tych wpisów i ponowne załadowanie ustawień firewalla nie pomagają. Muszę restartować system.

Ps.
W konfiguracji mam też dodany wpis: iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT Wiecie może dlaczego wpisy: iptables -P INPUT DROP
iptables -P FORWARD DROP totalnie mi blokują wszystko?



Ister - 07-04-2009 14:31
Wpis
Wypuszcza ruch z sieci. Jednak pamiętaj, że ruch jest dwukierunkowy, to znaczy router musi jeszcze wpuścić odpowiedź. Do tego służą albo odpowiednie state (ESTABILISHED, RELATED), albo jawne przepuszczenie całego ruchu w drugą stronę (-d 192.168.1.0/24).

Czy od ostatniego pełnego pliku firewalla coś zmieniałeś? Domyślam się, że tak.

Acha - sama likwidacja wpisów
iptables -P INPUT DROP
iptables -P FORWARD DROP nie powoduje odwrócenia ich działania. Przecież ten plik ZMIENIA ustawienia iptables, a nie USTALA je od zera. ÂŻeby przywrócić działanie (politykę ACCEPT0 musisz w miejsce powyższego wpisu umieścić
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT



rmika - 08-04-2009 09:43
Teraz już chyba rozumiem wszystko. [b]I[wszystko mi działa. Ale dla pewności opiszę wszystko jak mam ustawione z nadzieją, że ktoś wyłapie mi błędy i poprawi.

Na serwerze mam następującą konfigurację: eth0      Link encap:Ethernet  HWaddr 00:1d:7d:e5:7b:c8
          inet addr:10.0.0.199  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21d:7dff:fee5:7bc8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:114962 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17768 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:30191516 (28.7 MiB)  TX bytes:2719755 (2.5 MiB)
          Interrupt:23 Base address:0xa000

eth1      Link encap:Ethernet  HWaddr 00:30:4f:1c:c3:37
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::230:4fff:fe1c:c337/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:111236 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22155 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:10450023 (9.9 MiB)  TX bytes:16971656 (16.1 MiB)
          Interrupt:20 Base address:0xde00

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:93 errors:0 dropped:0 overruns:0 frame:0
          TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:12812 (12.5 KiB)  TX bytes:12812 (12.5 KiB) Mój komputer na przypisany adres 192.168.1.2

Pora na ustawienia firewalla: # Pozwol na dzielenie lacza
echo "1" > /proc/sys/net/ipv4/ip_forward

# Uruchom maskarade
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

# Skasuje wszystkie stare reguly
iptables -F

#domyslne polityki
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

## pozwol na utrzymywanie polaczen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

## pozwolenia na laczenie sie Mi z serweren przez ssh
iptables -A INPUT -s 192.168.1.2 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.2 -p udp --dport 22 -j ACCEPT

# Pozwol nizej wymieninym hostom na dostep do internetu
iptables -A FORWARD -s 192.168.1.2 -j ACCEPT
iptables -A FORWARD -s 192.168.1.3 -j ACCEPT

## dla pewnosci blokuj wszystkich innych
iptables -A FORWARD -s 192.168.1.0/24 -j DROP



Ister - 08-04-2009 13:15
Zrobiłbym pewne poprawki.
Po pierwsze - usuwanie starych reguł zasadniczo najlepiej jest zrobić zanim wprowadzi się nowe ;-) To co wpisałeś wprawdzie działa, ale tylko dlatego, że nie wszystko usuwasz. Zatem
iptables -F Wyrzuć na początek skryptu i uzupełnij o linijkę
iptables -t nat -F Możesz też dodać
iptables -X
iptables -t nat -X Następnie blokuj dostęp, czyli ustaw polityki. Zatem jako kolejne idą te linijki:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT Dopiero teraz czas na ustawianie wpuszczania, maskaradę itp.

Wreszcie ostatnia linijka
iptables -A FORWARD -s 192.168.1.0/24 -j DROP nie ma najmniejszego sensu. Masz politykę DROP. Jeśli czegoś jawnie nie wypuściłeś, to zostanie zdropowane. Dokładasz tylko pracy routerowi.

Tyle moich uwag.
Pozdrawiam
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis