Две сетевые карты и маршрутизация между интерфейсами

Две сетевые карты и маршрутизация между интерфейсами

У меня проблема с сервером Ubuntu, на котором запущены два сетевых адаптера в двух разных подсетях и маршрутизация между ними. Мы используем сервер Nginx как обратный прокси с публичной подсетью и частной подсетью.

Мы используем сервер Ubuntu 15.04.

Вот установка:

eth0      Link encap:Ethernet  HWaddr 00:50:56:88:6e:91
          inet addr:89.21.20.14  Bcast:89.21.20.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fe88:6e91/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:89152 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1729 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5552124 (5.5 MB)  TX bytes:286442 (286.4 KB)

eth1      Link encap:Ethernet  HWaddr 00:50:56:88:16:0b
          inet addr:10.150.200.50  Bcast:10.150.200.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fe88:160b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:549 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:53395 (53.3 KB)  TX bytes:1908 (1.9 KB)

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:160 errors:0 dropped:0 overruns:0 frame:0
          TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:12960 (12.9 KB)  TX bytes:12960 (12.9 KB)

У меня шлюз на eth0.

Когда я пытаюсь пинговать 89.21.20.14 с сервера в подсети 10.150.200.xx, он не работает, и я не могу с ним связаться. Трафик попадает на eth0, как я вижу из

sudo tcpdump -i eth0 proto \\icmp

Я также пытался сделать то же самое, зайдя с сервера в 89.21.20.xx и зайдя/проверив 10.150.200.50, но это тоже не проходит. При запуске tcpdump я вижу, что пинги попадают на eth1

Проблема в том, что у нас есть веб-сайты, работающие на веб-серверах частной подсети, и они ссылаются на домены, которые указывают на публичные IP-адреса на 89.21.20.xx, и поэтому не могут взаимодействовать с сайтами/приложениями.

Я думаю, что это какая-то проблема с маршрутизацией, но не совсем уверен, с чего начать?

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         89.21.24.1      0.0.0.0         UG        0 0          0 eth0
10.150.200.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
89.21.20.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0



Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         89.21.20.1      0.0.0.0         UG    0      0        0 eth0
10.150.200.0    *               255.255.255.0   U     0      0        0 eth1
localnet        *               255.255.255.0   U     0      0        0 eth0

решение1

Вы заявляете в комментариях, что не хотите обхода подсети. Значит, у вас уже есть это, с невозможностью достичь eth0и eth1наоборот, так что ваша проблема уже решена.

Однако если у вас есть другие вопросы, вам нужно сформулировать их более конкретно. (Обратное проксирование происходит прозрачно, вы не сможете связаться eth0с сервером eth1или наоборот, не пройдя через nginxобратный прокси-сервер).


Нижеприведенная информация сохранена по историческим причинам.

Мне интересно, почему это отмечено тегом, поскольку это не проблема NGINX, а случай, когда вы пытаетесь выйти изнутри ( eth1и из внутренней подсети) наружу ( eth0и в общедоступный Интернет) без маршрутизатора (или системы, настроенной как маршрутизатор) или правила, позволяющего вашему «серверу» действовать как прокси-сервер изнутри->наружу (что НЕ является обратным прокси-сервером).

NGINX не является прокси или маршрутизатором. Обратный прокси скажет: «ОК, отправьте этот запрос на бэкенд, abc». Затем он скажет: «ABC: Отправьте мне ответ», что отправит первоначальный запрос, сделанный снаружи, на внутренний сервер. Затем он получает ответ от бэкенда 'abc' на сервере nginx. Он возвращается nginx запрашивающему клиенту.

Обратный прокси-сервер также работает только снаружи -> внутрь. Эта диаграмма в основном показывает, как это выглядит снаружи при движении внутрь:

Наспех нарисованная схема Томаса У.

Обратный путь работает, но только потому, что система обратного прокси-сервера (nginx) ждет ответа от бэкэндов, а затем передает эти данные обратно веб-браузеру или удаленному клиенту, который запрашивает информацию и ожидает ответа.

Однако обратный путь НЕ позволяет вам переходить с eth1одного обратного прокси-сервера на eth0другой через систему удаленного прокси-сервера — IP-маршрутизация работает не так, и для достижения желаемого вам необходимонастоящиймаршрутизатор, который может обрабатывать сетевой трафик с внутренних IP-адресов на внешние, а затем обратно на публичный IP-адрес eth0на обратном прокси-сервере, поэтому это будет выглядеть следующим образом:

Маршрутизатор, еще одна схема Томаса У.

Таким образом, передача данных здесь будет осуществляться от внутренних устройств через маршрутизатор, к которому они подключены, в Интернет, а затем из Интернета обратно на ваше eth0устройство. (Конечно, это самый простой способ объяснить это).

Однако ваш обратный прокси-сервер ненеттакже выполняет функцию маршрутизатора, поэтому он работает не так, как вы думаете.


Еще одна заметка:

Вы не можете отправить ping из внутреннего (который идет в eth1) eth0напрямую, который находится насовершенно другая подсетьЕсли только вы не пройдете через реальный маршрутизатор и не выйдете наружу, а затем не вернетесь обратно. Если только вы не настроите свой сервер, на котором также установлен nginx, как маршрутизатор, что, судя по вашим комментариям, не так. Так что это "невозможно пинговать через интерфейсы и подсети"ожидаемое поведение.

Связанный контент