Dwa ip na jednym serwerze i przekierowanie całego lub konkretnego ruchu

Instalacja i konfiguracja oprogramowania sieciowego.
Awatar użytkownika
glazier
Piegowaty Guziec
Piegowaty Guziec
Posty: 10
Rejestracja: 15 sty 2018, 22:52
Wersja Ubuntu: 16.04
Środowisko graficzne: Blackbox
Architektura: x86_64

Dwa ip na jednym serwerze i przekierowanie całego lub konkretnego ruchu

Post autor: glazier »

Czołem! To mój pierwszy post tutaj, więc proszę o wyrozumiałość ;)

Mam serwer VPS, który posiada dwa interfejsy sieciowe. Dokładniej mówiąc, o ile dobrze mi się wydaje, drugi jest aliasem. Wygląda to następująco:

Kod: Zaznacz cały

nemo@nautilus:~$ ifconfig
ens3      Link encap:Ethernet  HWaddr fa:16:3e:b6:f3:22  
          inet addr:92.222.84.211  Bcast:92.222.84.211  Mask:255.255.255.255
          inet6 addr: fe80::f816:3eff:feb6:f322/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:40065 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37401 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:9660982 (9.6 MB)  TX bytes:9597668 (9.5 MB)

ens3:0    Link encap:Ethernet  HWaddr fa:16:3e:b6:f3:22  
          inet addr:94.23.171.57  Bcast:94.23.171.57  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

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:65536  Metric:1
          RX packets:40354 errors:0 dropped:0 overruns:0 frame:0
          TX packets:40354 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:36473556 (36.4 MB)  TX bytes:36473556 (36.4 MB)
I teraz to co chciałbym zrobić to dwa warianty:

WARIANT 1 - przekierowani całego ruchu z ens3 na ens3:0
Tutaj chodzi mi o to, aby cały ruch, zarówno przychodzący jak i wychodzący był obsługiwany przez interfejs ens3:0, tym samym aby serwer identyfikował się jako IP przypisane właśnie do ens3:0.

WARIANT 2 - przekierowanie ruchu do/z konkretnego IP z ens3 na ens3:0
A tutaj trochę inaczej ;) Powiedzmy, że ruch do/z jakiejś konkretnej strony, przykładowo www.otomoto.pl był obsługiwany przez interfejs ens3:0 i by otomoto widziało ruch przychodzący z IP interfejsu ens3:0. Cała reszta ruchu może iść przez ens3.

Próbowałem zrealizować wariant 1 poprzez położenie interfejsu ens3, ale niestety tym samym ens3:0 został wyłączony... Pozostaje chyba iptables, w którym jestem zielony jak szczypior na wiosnę, dlatego też zwracam się o pomoc tutaj. Coś co ewentualnie może się przydać:

Kod: Zaznacz cały

nemo@nautilus:~$ cat /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

# Source interfaces
# Please check /etc/network/interfaces.d before changing this file
# as interfaces may have been defined in /etc/network/interfaces.d
# See LP: #1262951
source /etc/network/interfaces.d/*.cfg

auto ens3:0
iface ens3:0 inet static
address 94.23.171.57
netmask 255.255.255.255
broadcast 94.23.171.57
oraz

Kod: Zaznacz cały

nemo@nautilus:~$ cat /etc/network/interfaces.d/50-cloud-init.cfg
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
auto lo
iface lo inet loopback

auto ens3
iface ens3 inet dhcp
Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8596
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: Dwa ip na jednym serwerze i przekierowanie całego lub konkretnego ruchu

Post autor: mario_7 »

Przejrzałeś forum? Podobne problemy były już rozwiązywane.
Awatar użytkownika
glazier
Piegowaty Guziec
Piegowaty Guziec
Posty: 10
Rejestracja: 15 sty 2018, 22:52
Wersja Ubuntu: 16.04
Środowisko graficzne: Blackbox
Architektura: x86_64

Re: Dwa ip na jednym serwerze i przekierowanie całego lub konkretnego ruchu

Post autor: glazier »

Przejrzałem 10 stron z 34, które zwróciła szukajka dla frazy iptables, ale niestety nie znalazłem rozwiązania. Zazwyczaj opisane jest udostępnienie internetu, a to chyba nie to czego szukam :???:
Awatar użytkownika
glazier
Piegowaty Guziec
Piegowaty Guziec
Posty: 10
Rejestracja: 15 sty 2018, 22:52
Wersja Ubuntu: 16.04
Środowisko graficzne: Blackbox
Architektura: x86_64

Re: Dwa ip na jednym serwerze i przekierowanie całego lub konkretnego ruchu

Post autor: glazier »

Teoretycznie nw. ustawienie powinno załatwić sprawę, ale zastanawiam się jak ewentualnie wrócić do bazowej konfiguracji gdyby coś poszło nie tak

Kod: Zaznacz cały

sudo iptables -t nat -A POSTROUTING --out-interface ens3:0 -j MASQUERADE  
sudo iptables -A FORWARD --in-interface ens3 -j ACCEPT
Awatar użytkownika
glazier
Piegowaty Guziec
Piegowaty Guziec
Posty: 10
Rejestracja: 15 sty 2018, 22:52
Wersja Ubuntu: 16.04
Środowisko graficzne: Blackbox
Architektura: x86_64

Re: Dwa ip na jednym serwerze i przekierowanie całego lub konkretnego ruchu

Post autor: glazier »

Nie zabanglało :(

Aktualna konfiguracja iptables:

Kod: Zaznacz cały

nemo@nautilus:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
f2b-sshd   tcp  --  anywhere             anywhere             multiport dports 5555

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain f2b-sshd (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere  
Sprawdzam pod jakim IP serwer jest rozpoznawalny:

Kod: Zaznacz cały

nemo@nautilus:~$ wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
92.222.84.211
Próbuję wykonać zmiany i przyznaję że nie widzę żadnych zmian w konfiguracji iptables :pt36:

Kod: Zaznacz cały

nemo@nautilus:~$ sudo iptables -t nat -A POSTROUTING --out-interface ens3:0 -j MASQUERADE
nemo@nautilus:~$ sudo iptables -A FORWARD --in-interface ens3 -j ACCEPT
nemo@nautilus:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
f2b-sshd   tcp  --  anywhere             anywhere             multiport dports 5555

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain f2b-sshd (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere       


Ponownie sprawdzam pod jakim IP jestem widoczny i ... zmian nie widzę:

Kod: Zaznacz cały

nemo@nautilus:~$ wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
92.222.84.211
Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8596
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: Dwa ip na jednym serwerze i przekierowanie całego lub konkretnego ruchu

Post autor: mario_7 »

Może faktycznie konkretnego rozwiązania brak... Aczkolwiek wydawało mi się, że coś tam było.

Niemniej, to co chcesz osiągnąć, to chyba nie do końca przekierowanie ruchu...
Jeśli chodzi o ruch wyjściowy z serwera - to kwestia konfiguracji sieci na tym serwerze.

Wariant 1.
Jeśli serwer ma w ogóle nie odpowiadać na IP z interfejsu ens3, to po prostu zablokuj ruch wejściowy i wyjściowy dla tego interfejsu.
Jeśli ma robić przekierowanie ruchu... no to dalej będzie widoczny jako ten początkowy IP.
Chyba, że ma robić przekierowanie na poziomie serwera WWW, wtedy możesz tak skonfigurować serwer www, żeby wywołania na danym IP były automatycznie tłumaczone na wywołania do innego IP i żeby przeglądarka automatycznie ładowała nowe IP.

Wariant 2.
Podobnie jak w 1 - na wybranym interfejsie/IP blokada na ruch wej/wyj i wyjątek na dany IP albo zakres IP.
Na drugim interfejsie/IP odwrotnie - blokada na dany IP albo zakres IP a reszta ruchu normalnie.
Jeśli zaś to ma być na poziomie serwera www - to odpowiednia konfiguracja tego serwera.

Nie do końca rozumiem co chcesz osiągnąć i co rozumiesz przez "cały ruch" oraz jak interpretować "ruch do/z jakiejś konkretnej strony, przykładowo www.otomoto.pl był obsługiwany przez interfejs ens3:0 i by otomoto widziało ruch przychodzący z IP interfejsu ens3:0" - co rozumiesz przez "ruch ze strony"?


PS
Jeśli robisz takie operacje na serwerze do którego nie masz fizycznego dostępu, to upewnij się, że dostawca usługi udostępnia jakiś awaryjny terminal umożliwiający dostęp nawet jeśli serwer nie ma sieci.
Awatar użytkownika
glazier
Piegowaty Guziec
Piegowaty Guziec
Posty: 10
Rejestracja: 15 sty 2018, 22:52
Wersja Ubuntu: 16.04
Środowisko graficzne: Blackbox
Architektura: x86_64

Re: Dwa ip na jednym serwerze i przekierowanie całego lub konkretnego ruchu

Post autor: glazier »

Dziękuję za odpowiedź!

Provider serwera na szczęście udostępnia taką konsolę, z której już byłem zmuszony skorzystać :clap:

To teraz pytanie. Jeżeli zablokuję cały ruch dla interfejsu ens3, to czy niejako z automatu zostanę przełączony na ruch z ens3:0?
Chodzi o to, domyślnym int. dla całego ruchu jest właśnie ens3 ...

Kod: Zaznacz cały

nemo@nautilus:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         old.zk-1.sbg.sp 0.0.0.0         UG    0      0        0 ens3
old.zk-1.sbg.sp *               255.255.255.255 UH    0      0        0 ens3

Kod: Zaznacz cały

nemo@nautilus:~$ ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)'
ens3
Awatar użytkownika
glazier
Piegowaty Guziec
Piegowaty Guziec
Posty: 10
Rejestracja: 15 sty 2018, 22:52
Wersja Ubuntu: 16.04
Środowisko graficzne: Blackbox
Architektura: x86_64

Re: Dwa ip na jednym serwerze i przekierowanie całego lub konkretnego ruchu

Post autor: glazier »

Dobra, to tak. Spróbowałem i nie bangla :???: Od samego początku

1. Moje dwa interfejsy sieciowe:

Kod: Zaznacz cały

nemo@nautilus:/var/lib/dhcp$ ifconfig
ens3      Link encap:Ethernet  HWaddr fa:16:3e:b6:f3:22  
          inet addr:92.222.84.211  Bcast:92.222.84.211  Mask:255.255.255.255
          inet6 addr: fe80::f816:3eff:feb6:f322/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:230720 errors:0 dropped:0 overruns:0 frame:0
          TX packets:215434 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:61535045 (61.5 MB)  TX bytes:57539871 (57.5 MB)

ens3:0    Link encap:Ethernet  HWaddr fa:16:3e:b6:f3:22  
          inet addr:94.23.171.57  Bcast:94.23.171.57  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
2. Aktualny routing:

Kod: Zaznacz cały

nemo@nautilus:/var/lib/dhcp$ ip route list
default via 92.222.64.1 dev ens3 
92.222.64.1 dev ens3  scope link 
3. Sprawdzam pod jakim adresem IP jestem widzialny w sieci:
Wchodzę na stronę: http://checkip.dyndns.org/
Strona zwraca wynik:

Kod: Zaznacz cały

Current IP Address: 92.222.84.211
4. Sprawdzam jeszcze jak widzi mnie przykładowe otomoto:

Kod: Zaznacz cały

nemo@nautilus:/var/lib/dhcp$ ip route get 52.57.57.95
52.57.57.95 via 92.222.64.1 dev ens3  src 92.222.84.211 
5. Próbuję teraz wykonać taki myk, aby ruch TYLKO do otomoto był puszczony przez interfejs sieciowy ens3:0. Efektem pożądanym jest, by strona otomoto odpaliła się i aby ip route get dla IP otomoto rozpoznały mnie jako IP przypisany do interfejsu ens3:0. Zakładam, że moją bramą ma pozostać 92.222.64.1.
a. Dodaję regułę na ruch do ww. IP otomoto:

Kod: Zaznacz cały

nemo@nautilus:/var/lib/dhcp$ sudo ip route add ip route get 52.57.57.95 via 92.222.64.1 dev ens3:0
6. Sprawdzam tablicę routingu:

Kod: Zaznacz cały

nemo@nautilus:/var/lib/dhcp$ ip route list
default via 92.222.64.1 dev ens3 
52.57.57.95 via 92.222.64.1 dev ens3 
92.222.64.1 dev ens3  scope link 
i od razu pojawia się pytanie dlaczego ruch do 52.57.57.95 via 92.222.64.1 jest obsługiwany przez ens3, skoro przed momentem poprosiłem o ens3:0 ?

Być może problemem jest, iż w dodaniu nowej reguły dodaję via 92.333.64.1 i ten adres bramy automatycznie jakby rozpoznaje mnie jako IP karty ens3?

7. Spróbuję jeszcze tak:
a. Usuwam dodaną regułę i dodaję nową w nieco zmieniony sposób:

Kod: Zaznacz cały

nemo@nautilus:/etc/network/interfaces.d$ sudo ip route add 52.57.57.95 via 94.23.171.57 dev ens3:0
czyli w via nie podaję poprzedniego IP bramy: 92.222.64.1 tylko adres IP karty sieciowej ens3:0
b. Sprawdzam czy jestem jakkolwiek inaczej widzialny?
Najpierw google:

Kod: Zaznacz cały

nemo@nautilus:/etc/network/interfaces.d$ ip route get 8.8.8.8
8.8.8.8 via 92.222.64.1 dev ens3  src 92.222.84.211 
A teraz otomoto:

Kod: Zaznacz cały

nemo@nautilus:/etc/network/interfaces.d$ ip route get 52.57.57.95 
91.198.22.70 dev ens3  src 94.23.171.57 
Znowu ens3 ... a nie ens3:0, ale src się już zmieniło ... coś się dzieje. Src to IP pożądanej karty sieciowej na ruch do strony sprawdzającej IP. Czyżby sukces?
Odpalam przeglądarkę, sklepuję otomoto.pl i widzę ...

Kod: Zaznacz cały

Ta witryna jest nieosiągalna
Co zrobiłem nie tak?
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4677
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Re: Dwa ip na jednym serwerze i przekierowanie całego lub konkretnego ruchu

Post autor: jacekalex »

Zrób drugą tablicę routingu obok domyślnej, a potem wykorzystaj cel MARK netfiltera żeby oznaczyć pakiety dla potrzeb routingu.

Tu masz opis, jak to się mniej więcej robi:
http://www.przybytek.net/download/2.4routing.pdf
Ale gimnastyka Cię czeka przednia... :twisted:

Pozdro
:craz:
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
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 12 gości