Tworzenie sieci na podstawie trzech komputerów z Linuxem!

Witam!

Muszę stworzyć sieć komputerową na podstawie 3 komputerów, w tym jeden ma być routerem opartym na systemie Linux (Ubuntu 12.10) struktura wygląda następująco:

CPU1(win7)----->|ETH0–(Ubuntu)–ETH1|-------->CPU2(win7)

CPU1 ma za zadanie wysyłać pakiety danych poprzez Linuxa do CPU2, problem w tym że mimo iż dwa skrajne kompy się “pingują” to pakiety danych nie są przesyłane z CPU1 do CPU2 :-x najgorsze jest to że z CPU1 do ETH0 pakiety dochodzą, a pomiędzy ETH0 do ETH1 już nie lecą :confused: próbowałem zrobić mostek w Linuksie ale niestety nic nie pomogło… a przynajmniej ja nie umiałem tego zrobić, jeśli ktoś mógłby mi napisać konfiguracje lub w prosty sposób wytłumaczyć co robię źle i co mam poprawić będę bardzo wdzięczny!!

Jeszcze konfiguracja:

CPU1

ip:192.168.100.101/24

gateway:192.168.100.1

CPU2

ip:192.168.0.100/24

gateway:192.168.0.1

ETH0

ip:192.168.100.1/24

ETH1

ip:192.168.0.1/24

Z góry dziękuje!!

Nie znam się na tych nowych graficznych linuksach, ale w poczciwym slackware polecenie włączające przekazywanie pakietów na interfejsach miało następującą postać:

echo 1 > /proc/sys/net/ipv4/ip_forward

powodzenia

Napisz w jaki dokładnie sposób konfigurowałeś Ubuntu, tj. jak przypisujesz adresy. Sprawdzałeś tablicę routingu czy masz odpowiednie trasy? Sprawdź nie masz błędu w adresacji.

Kolega pisze, że komputery się pingują, więc przekazywanie pakietów jest raczej włączone, inaczej komputery nie pingowałyby się.

Konfiguracje zrobiłem wg strony—> https://help.ubuntu.com/community/Inter … ionSharing

Zacząłem od pkt. “Ubuntu Internet Gateway Method (iptables)”

ale zamiast "Internet <<==>> eth0 <> Ubuntu gateway <> eth1 <<==>> Client PC " zrobiłem konfiguracje CPU1---->ETH0—ETH1---->CUP2

Skończyłem Swoją konfiguracje włącznie z podpunktem “Client set up”. Dalszych DNS’ów nie ustawiałem itd.

Natomiast dla CPU1 ustawiłem sztywny adres IP 192.168.100.101, tak samo jak dla CPU1 ustawiłem na sztywno adres dla ETH0 tj. 192.168.100.1, a resztę wg strony ww.

Jakieś sugestie? Bo już nie mam pomysłu co może być nie tak… :frowning:

W twoim przypadku IPTables tutaj nie mieszasz, bo NAT nie jest Ci potrzebny. Robisz tak. W pliku /etc/network/interfaces przypisujesz adresy kartom sieciowym.

auto eth0

iface eth0 intet static

address 192.168.100.1

netmask 255.255.255.0

braodcast 192.168.100.255


auto eth1

iface eth1 inet static

address 192.168.0.1

netmask 255.255.255.0

braodcast 192.168.0.255

Przeładowujesz konfigurację sieci.

sudo /etc/init.d/networking stop

sudo /etc/init.d/networking start

Sprawdzasz czy interfejsy mają właściwe adresy IP. Następnie w pliku /etc/sysctl.conf szukasz linii

#net.ipv4.ip_forward=1

i usuwasz kratkę, powinno to wyglądać tak.

net.ipv4.ip_forward=1

Zapisujesz plik. Żebyś nie musiał restartować komputera, aktywuj przekazywanie pakietów poleceniem podanym przez bor1904, po restarcie już nie będziesz musiał tego robić, bo w sysctl określiłeś, że przekazywanie ma być włączone. Sprawdzasz na Ubuntu czy masz trasy w tablicy routingu do obu sieci i to wszystko, IPTables w ogóle nie ruszasz, no chyba, że chcesz blokować jakiś ruch pomiędzy tymi sieciami.

Nie wiem czemu ale system wysypał mi się po wpisanu komendy “sudo /etc/init.d/networking stop”

Tablica routingu:

169.254.0.0/16 dev eth1 scope link metric 1000 

192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.1 metric 1 

192.168.100.0/24 dev eth0 proto kernel scope link src 192.168.100.1 metric 1

ifconfig

eth0 Link encap:Ethernet HWaddr 00:22:15:1b:e7:a3  

          inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0

          inet6 addr: fe80::222:15ff:fe1b:e7a3/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

          RX packets:34723 errors:0 dropped:0 overruns:0 frame:0

          TX packets:18864 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:43699292 (43.6 MB) TX bytes:1931578 (1.9 MB)

          Interrupt:17 


eth1 Link encap:Ethernet HWaddr 64:70:02:04:21:e1  

          inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0

          inet6 addr: fe80::6670:2ff:fe04:21e1/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

          RX packets:254 errors:0 dropped:0 overruns:0 frame:0

          TX packets:118 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:44779 (44.7 KB) TX bytes:18527 (18.5 KB)

nie mam pojęcia co jest nie tak… :confused:

Możesz napisać co rozumiesz pod pojęciem wysypał się?

Pingi przechodzą? Aktywowałeś przekazywanie pakietów? Dobrze skonfigurowałeś adresację na hostach? Tak powinna wyglądać konfiguracja w twoim przypadku :arrow: http://youtu.be/e73R_hEKvmE

Tak z ciekawości … po czym wnosisz że pakiety nie przechodzą ? jak wygląda test?

Nie grzebałem w iptables ?

pzdr

Zrobiłem tak jak na filmiku, tym razem po komendzie “sudo /etc/init.d/networking stop” system nie zawiesił się :slight_smile:

a po komendzie “sudo /etc/init.d/networking start” wyskoczył mi taki komunikat:

sebastian@Sebastian:~$ sudo /etc/init.d/networking start

Rather than invoking init scripts through /etc/init.d, use the service(8)

utility, e.g. service networking start


Since the script you are attempting to invoke has been converted to an

Upstart job, you may also use the start(8) utility, e.g. start networking

networking stop/waiting

niestety nie mogę teraz nic skonfigurować ponieważ karty sieciowe nie włączają się :frowning:

Co do “wysypania” się systemu

System po wpisaniu komendy “sudo /etc/init.d/networking start” ekran mignął a następnie się zwieszał… po restarcie system wychodził do ekranu logowania i pod napisem ubuntu był napis dotyczący konfiguracji sieci… ale nic się później nie działo…

A co do testu:

pierwszy komputer za pomocą generatora pakietów danych przesyła pakiety na ostatni komputer poprzez “router”. Sprawdzam za pomocą Wiresharka czy przychodzą jakieś pakiety.

Zrób tak, jak radzi system (mogłem od razu podać ten sposób, ale init też powinien działać).

sudo service networking restart

po wpisaniu “sudo service networking restart” , “sudo /etc/init.d/networking restart” jak i “sudo service networking start” wyskakuje ten sam komunikat:

networking stop/waiting

natomiast po wpisanu “sudo /etc/init.d/networking restart” wyskakuje:

* Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces

 * Reconfiguring network interfaces... [OK]

ale dalej nic się nie dzieje, żadna karta sieciowa się nie włączyła :frowning: niestety jestem bardzo początkującym użytkownikiem Linuxa i nie wiem co mam robić… a nie chce po raz kolejny robić reinstalki systemu. Chyba że jest inny sposób skonfigurowania Ubuntu bez konieczności wyłączania kart sieciowych… to jeszcze reinstalkę przeboleje :stuck_out_tongue:

Pierwsza linijka komunikatu mówi, że wersja z init, to przestarzała wersja i może się zdarzyć, że nie będzie w stanie uaktywnić niektórych interfejsów, ale druga linijka mówi, że konfiguracja interfejsów zakończyła się pomyślnie. Pokaż wyniki poleceń

ifconfig -a

route -n

cat /etc/network/interfaces

cat /proc/sys/net/ipv4/ip_forward

cat /etc/sysctl.conf

W jaki sposób to stwierdzasz?

Jeśli miałbyś wykonać jakąś reinstalkę, to zamiast Ubuntu Server, zainstaluj stabilną wersję Debiana (Debian Squeeze 6.0.6), który jest bardziej przewidywalny i bardziej stabilny.

Zapisz konfigurację sieci w /etc/network/interfaces i uruchom ponownie system. Podaj wyniki powyższych poleceń, może coś źle konfigurujesz. Sam posiadam na komputerze, z którego piszę Ubuntu 12.10 i nie mam z nim takich problemów i ten system konfigurowałem również jako router w sposób przeze mnie podany i nagrany przeze mnie na filmiku, dla wirtualnych maszyn i nie było z tym żadnych problemów.

root@Sebastian:/home/sebastian# ifconfig -a

eth0 Link encap:Ethernet HWaddr 00:22:15:1b:e7:a3  

          inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0

          inet6 addr: fe80::222:15ff:fe1b:e7a3/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

          RX packets:149 errors:0 dropped:0 overruns:0 frame:0

          TX packets:51 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:16705 (16.7 KB) TX bytes:8176 (8.1 KB)

          Interrupt:17 


eth1 Link encap:Ethernet HWaddr 64:70:02:04:21:e1  

          inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0

          UP BROADCAST MULTICAST MTU:1500 Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

          Interrupt:17 Base address:0xe800

root@Sebastian:/home/sebastian# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0

192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

root@Sebastian:/home/sebastian# cat /etc/network/interfaces

auto lo

iface lo inet loopback


auto eth0

iface eth0 inet static

address 192.168.100.1

netmask 255.255.255.0


auto eth1

iface eth1 inet static

address 192.168.0.1

netmask 255.255.255.0

root@Sebastian:/home/sebastian# cat /proc/sys/net/ipv4/ip_forward

0

root@Sebastian:/home/sebastian# cat /etc/sysctl.conf

#

# /etc/sysctl.conf - Configuration file for setting system variables

# See /etc/sysctl.d/ for additional system variables

# See sysctl.conf (5) for information.

#


#kernel.domainname = example.com


# Uncomment the following to stop low-level messages on console

#kernel.printk = 3 4 1 3


##############################################################3

# Functions previously found in netbase

#


# Uncomment the next two lines to enable Spoof protection (reverse-path filter)

# Turn on Source Address Verification in all interfaces to

# prevent some spoofing attacks

#net.ipv4.conf.default.rp_filter=1

#net.ipv4.conf.all.rp_filter=1


# Uncomment the next line to enable TCP/IP SYN cookies

# See http://lwn.net/Articles/277146/

# Note: This may impact IPv6 TCP sessions too

#net.ipv4.tcp_syncookies=1


# Uncomment the next line to enable packet forwarding for IPv4

#net.ipv4.ip_forward=1


# Uncomment the next line to enable packet forwarding for IPv6

# Enabling this option disables Stateless Address Autoconfiguration

# based on Router Advertisements for this host

#net.ipv6.conf.all.forwarding=1



###################################################################

# Additional settings - these settings can improve the network

# security of the host and prevent against some network attacks

# including spoofing attacks and man in the middle attacks through

# redirection. Some network environments, however, require that these

# settings are disabled so review and enable them as needed.

#

# Do not accept ICMP redirects (prevent MITM attacks)

#net.ipv4.conf.all.accept_redirects = 0

#net.ipv6.conf.all.accept_redirects = 0

# _or_

# Accept ICMP redirects only for gateways listed in our default

# gateway list (enabled by default)

# net.ipv4.conf.all.secure_redirects = 1

#

# Do not send ICMP redirects (we are not a router)

#net.ipv4.conf.all.send_redirects = 0

#

# Do not accept IP source route packets (we are not a router)

#net.ipv4.conf.all.accept_source_route = 0

#net.ipv6.conf.all.accept_source_route = 0

#

# Log Martian Packets

#net.ipv4.conf.all.log_martians = 1

#

stwierdzam to że interfejsy się nie włączyły po tym że sprawdzając w ustawieniach sieci pokazuje tak jakby kable były nie “podłączone” do kart, tzn. że pokazuje mi w ustawieniach dwie karty sieciowe ale nie mogę nic z nimi zrobi…

teraz mam zainstalowaną wersje Ubuntu 12.04 a wcześniej 12.10, także nie wydaję mi się że to wina systemu

Nie masz włączonego przekazywania pakietów, w /etc/sysctl.conf zmień linijkę

#net.ipv4.ip_forward=1

na

net.ipv4.ip_forward=1

Uruchom ponownie komputer lub wykonaj poniższe polecenie (jako root).

echo 1 > /proc/sys/net/ipv4/ip_forward

Karty sieciowe z tego co widać, działają. Rozumiem, że do połączenia używasz kabli krosowanych lub karty wspierają auto MDI-MDIX?

Nie wiem czy karty mają “MDI-MDIX” ale na pewno są to kable krosowane. Tylko dalej nie wiem czemu dalej nie mogę za pomocą Network Manager zmieniać “ręcznie” ustawień, dalej wygląda to jakby żaden kabel nie był podłączony do komputera a karty były wyłączone…

No to trzeba było od razu napisać, że chodzi o Network Managera. Gdy ustawiasz adresy w sposób podany przeze mnie, Network Manager kończy swoją pracę i dlatego wydaje się, że nie działa. Skonfiguruj sieć albo w sposób podany przeze mnie, albo przy użyciu Network Managera i powinno być okej.

wszystko pięknie się pinguje ale dalej nie przekazuje pakietów :frowning: na interfejs ETH0 przychodzą pakiety natomiast na ETH1 już nie… nie wiem w czym tkwi błąd… zastanawiam się czy nie jest to przypadkiem wina generatora pakietów (Colasoft Packet Builder), jak tak to w jaki inny sposób mogę sprawdzić czy pakiety danych przechodzą pomiędzy interfejsami? bo przecież ping to też jakiś pakiet.

zastanawiam się również co to za adres 169.254.0.0 w poleceniu route -n

jeszcze konfiguracja:

sebastian@Sebas-dom:~$ route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth1

192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1

192.168.100.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0



sebastian@Sebas-dom:~$ ifconfig -a

eth0 Link encap:Ethernet HWaddr 00:22:15:1b:e7:a3  

          inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0

          inet6 addr: fe80::222:15ff:fe1b:e7a3/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

          RX packets:22831 errors:0 dropped:0 overruns:0 frame:0

          TX packets:9638 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:27040695 (27.0 MB) TX bytes:969339 (969.3 KB)

          Interrupt:17 


eth1 Link encap:Ethernet HWaddr 64:70:02:04:21:e1  

          inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0

          inet6 addr: fe80::6670:2ff:fe04:21e1/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

          RX packets:1192 errors:0 dropped:0 overruns:0 frame:0

          TX packets:372 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:118580 (118.5 KB) TX bytes:62341 (62.3 KB)

          Interrupt:17 Base address:0xe800 


sebastian@Sebas-dom:~$ cat /etc/network/interfaces

auto lo

iface lo inet loopback



sebastian@Sebas-dom:~$ cat /proc/sys/net/ipv4/ip_forward

1

To jest adres o zasięgu lokalnym wykorzystywany podczas autokonfiguracji i przypisywany automatycznie przez system, np. gdy host nie może znaleźć serwera DHCP. Jak pisałem, adres ma zasięg lokalny, tzn. można połączyć komputery w sieć, ale pakiety nie będą trasowane do innych sieci. To, że ten adres jest w tablicy routingu, w niczym nie przeszkadza.

Jeśli pakiety ICMP przechodzą bez problemów, to znaczy, że sieć działa i jest pełna łączność. Zamiast generować pakiety przy użyciu generatora, spróbuj po prostu coś przesłać z komputera do komputera. Spróbuj się na przykład telnetować z hosta do hosta (w nowych wersjach Windowsa telnet jest wyłączony domyślnie), jeśli to będzie działać, to znaczy, że jest dobrze.

Pakiety przechodzą i sieć działa poprawnie :), niestety pakiety “sztucznie” wygenerowane nie przechodzą pomiędzy dwoma kartami :frowning:

Proszę o zamknięcie tematu :slight_smile: