Serwer - ruter, ruch jest tylko jednostronny

Konfiguracja serwerów, usług, itp.
Awatar użytkownika
rmika
Beginner
Posty: 117
Rejestracja: 14 czerwca 2007, 08:55

Serwer - ruter, ruch jest tylko jednostronny

Post autor: rmika »

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ć:

Kod: Zaznacz cały

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

Mamy 2 możliwości:
  1. Nasz 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:

    Kod: Zaznacz cały

    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
  2. Mamy na umowie z naszym dostawcą internetu informacje o IP, masce sieci, network, bramie; wtedy nasz plik /etc/network/interfaces będzie wyglądał tak:

    Kod: Zaznacz cały

    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:

    Kod: Zaznacz cały

    nameserver 194.204.152.34
    nameserver 194.204.159.1
    Teraz restartujemy ustawienia interfejsów wydając polecenie

    Kod: Zaznacz cały

    /etc/init.d/networking restart
    Sprawdzamy czy wszystko działa poprawnie, czyli czy na serwerze mamy internet. Piszemy np.

    Kod: Zaznacz cały

    ping google.pl
    Jeśli dostaniemy np. coś w tym stylu

    Kod: Zaznacz cały

    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:

    Kod: Zaznacz cały

    chmod +x /etc/init.d/firewall
    oraz edytujemy ww. plik wpisując do niego przykładowa zawartość

    Kod: Zaznacz cały

    # 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:

    Kod: Zaznacz cały

    update-rc.d firewall defaults 20
    Teraz konfiguracja stanowisk w sieci
    np. komputer nr 1
    IP 192.168.1.2
    Maska Sieci 255.255.255.0
    Brama 192.168.1.1
    DNS'y 194.204.159.1 194.204.152.34
    np. komputer nr 2
    IP 192.168.1.3
    Maska Sieci 255.255.255.0
    Brama 192.168.1.1
    DNS'y 194.204.159.1 194.204.152.34
    Sprawdzamy czy wszystko nam działa poprawnie - uruchamiamy skrypt poleceniem:

    Kod: Zaznacz cały

    /etc/init.d/firewall
    i w sumie to jest najprostsza metoda udostępniania połączenia.
Ister
Junior Member
Posty: 566
Rejestracja: 05 marca 2009, 12:42

Post autor: Ister »

Wrzuć jak wygląda Twój firewall, bo inaczej wróżymy z fusów. Ale pewnikiem tu jest problem.
Awatar użytkownika
rmika
Beginner
Posty: 117
Rejestracja: 14 czerwca 2007, 08:55

Post autor: rmika »

Kod: Zaznacz cały

# 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
Junior Member
Posty: 566
Rejestracja: 05 marca 2009, 12:42

Post autor: Ister »

Ok, poproszę jeszcze wyniki komend:

Kod: Zaznacz cały

cat /etc/network/interfaces
ifconfig
ifconfig -a
Awatar użytkownika
rmika
Beginner
Posty: 117
Rejestracja: 14 czerwca 2007, 08:55

Post autor: rmika »

/etc/network/interfaces

Kod: Zaznacz cały

# 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

Kod: Zaznacz cały

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

Kod: Zaznacz cały

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
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Na maszynie, która ma udostępniać internet włączyłeś domyślną politykę na DROP

Kod: Zaznacz cały

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.
Awatar użytkownika
rmika
Beginner
Posty: 117
Rejestracja: 14 czerwca 2007, 08:55

Post autor: rmika »

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:

Kod: Zaznacz cały

# wlaczenie w kernelu forwardowania
echo 1 > /proc/sys/net/ipv4/ip_forward
 
Ister
Junior Member
Posty: 566
Rejestracja: 05 marca 2009, 12:42

Post autor: Ister »

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.
Awatar użytkownika
Yampress
Administrator
Posty: 6425
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

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

Kod: Zaznacz cały

iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request  -j ACCEPT
Awatar użytkownika
rmika
Beginner
Posty: 117
Rejestracja: 14 czerwca 2007, 08:55

Post autor: rmika »

wiecie tylko tak ja napisałem na początku...
komputer, który jest podpięty do tego routera nie może nawet pingować router'a a router pinguje ten komputer...
na pingu mi aż tak nie należy jak na dostępie do internetu..
ODPOWIEDZ