Mam system, który ma dwa interfejsy sieciowe z różnymi adresami IP, oba z zakresu adresów publicznych (choć przez NAT w przypadku pierwszego) i oba mają różne bramy. (Długa historia, do celów testowych)
Problem polega na tym, że teraz, gdy próbuję pingować adres na drugim interfejsie, domyślna trasa wskazuje przez pierwszy interfejs - i nigdy nie dociera prawidłowo.
Czy można upewnić się, że odpowiedzi zawsze wychodzą przez ten sam interfejs sieciowy (i przy użyciu tego samego źródłowego adresu IP), w jakim się pojawiły? A jeśli tak, to w jaki sposób?
debian
networking
ipv4
Shadur
źródło
źródło
Odpowiedzi:
Nie rozumiesz problemu. Nie każdy pakiet jest odpowiedzią i nie każdy pakiet można dopasować do jakiegoś innego pakietu, tak że „taki sam interfejs sieciowy, w jakim się pojawił” ma sens. To, co chcesz zrobić, to wybrać bramę dla pakietu na podstawie jego źródłowego adresu IP.
Nazywa się to routingiem źródłowym lub routingiem zasad. Możesz to zrobić za pomocą prostej
iptables
reguły , ale najlepszym sposobem jest skonfigurowanie dwóch tabel routingu, po jednej dla każdego publicznego adresu źródłowego:Najpierw utwórz dwie tabele (Zastąp <NAME1> i <NAME2> rozsądnymi nazwami dla dwóch dostawców, tak samo jak IP1, DEV1 itd.):
Dodaj bramę do każdej tabeli routingu (w razie potrzeby):
Następnie domyślna trasa:
Następnie reguły wyboru tabeli tras na podstawie adresu źródłowego:
Aby uzyskać więcej informacji, zobacz Routing dla wielu łączy w górę / dostawców .
źródło
Odpowiedź Davida Schwartza jest doskonała, ale możesz nieco uprościć reguły routingu, mając tylko jedną dodatkową tabelę i używając domyślnej trasy dla drugiej. Mam serwer za dwiema bramami NAT, a ostatnio przeszedłem proces odtwarzania tego scenariusza między kilkoma maszynami wirtualnymi. Mój
/etc/network/interfaces
wygląda tak:(dotyczy konfiguracji, w której dwoma dostawcami usług internetowych są Optus i iiNet, stąd nazwa tabeli „optus”)
To plus linia przy
/etc/iproute2/rt_tables
tworzeniu tabeli powinna być wszystkim, czego potrzebujesz. Będziesz miał dwa adresy IP; ruch z 192.168.13.13 będzie wychodził przez 192.168.13.11, a ruch z 192.168.13.213 będzie wychodził przez 192.168.13.10. Skonfiguruj te dwie bramy, aby odpowiednio przekierowywały swoje porty (192.168.13.11 przekazuje rzeczy do 192.168.13.13, a 192.168.13.10 przekazuje rzeczy do 192.168.13.213), a reszta powinna sama się zająć.Być może będziesz musiał nieco poprawić ustawienia w swojej sytuacji, ponieważ bezpośrednio używasz publicznych adresów IP, ale coś takiego powinno nadal działać. Ponadto znacznie łatwiej jest wykonywać te czynności,
/etc/network/interfaces
a następnie zarządzać tym plikiem git, niż próbować pamiętać, jak go skonfigurowałeś, dwa lata później, kiedy system musi zostać zrestartowany!źródło
Przykład podwójnej sieci
Ten przykład pokazuje, w jaki sposób dodatkowe
eth1
z10.130.0.2
maską sieci255.255.255.255
i bramą10.130.0.1
można udostępnić usługom, które się z nią wiążąping -I eth1 8.8.8.8
Technicznie jesteśmy:
źródło