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 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ą 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!!
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ć:
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ę.
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…
W twoim przypadku IPTables tutaj nie mieszasz, bo NAT nie jest Ci potrzebny. Robisz tak. W pliku /etc/network/interfaces przypisujesz adresy kartom sieciowym.
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
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 http://youtu.be/e73R_hEKvmE
Zrobiłem tak jak na filmiku, tym razem po komendzie “sudo /etc/init.d/networking stop” system nie zawiesił się
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ę
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.
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 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
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.
#
# /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 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 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
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.