Рейтинг:0

Настройка нескольких соединений Ethernet на сервере Linux

флаг cn

У меня следующая топология

                                                                                        . . . . . . . . . . . . . . . . . . . . . . .        
   — âââ _.â' `ââ.    
   , ' ' . 
   • ISP-маршрутизатор • Динамический IP-адрес; :
   │ с NAT - ... â–––––––––––––: Интернет;
   â â² â± 
   â â â ¬ ' . , '  
             `ââ. _.â'     
             â 10.0.0.1 `âââââââ¬ââââââ'         
             â                
      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .          
   , ' ' . — â , â ' ' .       
 ,'`. , ``.     
; Локальная сеть : статический DHCP ââââ´ââââ ââââ´ââââ Статический IP; Общественная сеть:    
: ; ; â â â eth1 â ¤ мой сервер â eth0 â â â â â : ;    
 â² 10.0.0.0/24 â± 10.0.0.5 ââââ¬ââââ âââ⬠1.2.3.5 1.2.3.4/20 1.2.3.4/20     
  `. , «Debian Buster — mydomain.com». ,'      
    ' . , ' ' . , '        
       ` ' - ` '

По историческим причинам мой интернет-провайдер использует отдельную сеть для предоставления статических IP-адресов. Это означает, что я должен подключить свой сервер напрямую к специальному соединению, которое напрямую подключено к Интернету (на диаграмме это eth0 с IP 1.2.3.5).

Однако я использую этот же сервер в качестве NAS у себя дома, и, поскольку это отдельная сеть, я подключаю его с помощью другого интерфейса. эт1 и создайте статическое распределение DHCP с адресом 10.0.0.5. Таким образом, другие устройства в домашней сети смогут найти его и получить доступ к сетевым креплениям.

Наконец, у меня есть запись DNS с моим доменом, в этом примере мой домен.com, указывает на 1.2.3.5.

Я столкнулся с несколькими проблемами:

  • Когда я пытаюсь получить доступ мой домен.com из моей локальной сети это не работает.Я считаю, что это потому, что сервер получает пакет из интерфейса eth0 но потом отвечаю через эт1 а другое устройство сбрасывает ответ, так как оно с другого IP-адреса.
  • При загрузке сервер должен выбрать 1.2.3.4 как сеть для направления интернет-трафика, так что внешний доступ работает через мой домен.com. Однако, поскольку оба eth0 и эт1 есть доступ в интернет через соответствующие шлюзы, он иногда загружается и ковыряется 10.0.0.1 в качестве шлюза по умолчанию, а затем получить доступ мой домен.com не работает. Я считаю, что это аналогичная проблема с трафиком, поступающим через eth0 но уходя через эт1.

Хотя я знаком с базовыми сетевыми вещами, у меня нет опыта работы с сервером, подключенным к нескольким сетям одновременно. В идеале я хотел бы настроить сервер так, чтобы:

  • Весь интернет-трафик уходит через eth0
  • Весь трафик от входа eth0 отвечает через eth0
  • Весь трафик от входа эт1 отвечает через эт1

На моем сервере работает Debian, буду признателен за любую помощь.

РЕДАКТИРОВАТЬ: Итак, отключив шлюз eth1 и немного поиграв с tcpdump Я смог подтвердить, что трафик входит с eth0 и уходит с eth1. Проблема в том, что провайдер не выполняет NAT для трафика, идущего к конечной точке. 1.2.3.5 а затем сервер идентифицирует 10.0.0.Х адреса, расположенные на интерфейсе эт1.

флаг in
Это проблема маршрутизации, а не проблема брандмауэра. Iptables здесь практически ничего не делает для вас.
флаг in
https://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html
Jose Javier Gonzalez Ortiz avatar
флаг cn
Я вижу, ты прав. Я отредактировал вопрос, чтобы отразить это.
флаг in
Не используйте DHCP во внутренней сети, также используйте статический и не добавляйте маршрут по умолчанию. Маршрутизатор ISP должен иметь весь трафик NAPT, и ваш сервер eth0 должен видеть этот динамический IP-адрес, а не IP-адреса вашей внутренней сети. Не «верьте», проверяйте с помощью `tcpdump` или подобных инструментов, какой трафик куда идет.
Рейтинг:1
флаг us

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

Видеть http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html Больше подробностей.

Jose Javier Gonzalez Ortiz avatar
флаг cn
Я попробовал это, как предложил один из комментариев. Однако это неэффективно, так как провайдер не транслирует трафик через NAT на 1.2.3.5, поэтому пакеты с ips 10.0.0.X достигают eth0, а затем таблицы маршрутизации заставляют их возвращаться через eth1.
Falstone avatar
флаг us
Интересно, если изменить файл hosts на каждом из хостов в сети 10.0.0.X, чтобы они отправляли запросы на mydomain.com на 10.0.0.5. Или вы можете настроить локальный DNS, например: https://tech.surveypoint.com/posts/installing-a-local-dns-server-behind-a-hardware-router/
Рейтинг:0
флаг in

Я считаю, что это связано с тем, что сервер получает пакет с интерфейса eth0, но затем отвечает через eth1.

Нет. Маршрутизатор интернет-провайдера с NAT будет транслировать адрес вашего клиента 10.0.0.0 на динамический адрес интернет-провайдера, поэтому ваш сервер будет отвечать на этот адрес, а не на внутренний. Существуют исключения, такие как FTP, которые не обязательно совместимы с NAT, поскольку они будут передавать ваш внутренний IP-адрес на другой конец соединения, однако в общем случае ваш трафик NAT останется на eth0.

Проверьте свои журналы, чтобы убедиться, что клиенты отправляются на 1.2.3.4, а сервер получает соединения с NAT-адресов ip.ip.ip.ip.

При загрузке сервер должен выбрать 1.2.3.4 в качестве сети для направления интернет-трафика, чтобы внешний доступ работал через mydomain.com. Однако, поскольку и eth0, и eth1 имеют доступ в Интернет через соответствующие шлюзы

Не делай этого. Наличие нескольких шлюзов по умолчанию в многодомных конфигурациях редко работает так, как это предполагается. Грубо говоря, несколько шлюзов по умолчанию следует использовать только тогда, когда оба пути обеспечивают доступ к идентичным сетям, например, для резервирования/высокой доступности маршрутизатора в корпоративных условиях. Поскольку ваш маршрутизатор интернет-провайдера в Интернете и ваше прямое подключение к общедоступной сети не идентичны, вы должны удалить это. eth0 должен иметь маршрут по умолчанию, eth1 должен иметь маршрут до 10.x.x.x. Вы все еще можете сделать это с помощью DHCP, однако я бы подошел к этому как к резервированию/исключению для 10.0.0.5 и настроил IP-адрес сервера вручную.

Помимо постороннего маршрута по умолчанию, то, что вы описали, является нормальной операцией по умолчанию. Обязательно поищите другие проблемы, не описанные выше:

  • Хост-файлы, отличные от DNS (вы пытались заставить клиентов подключаться к 10.0.0.5 вместо 1.2.3.4? Мне нравится использовать техническое имя внутри, такое как webserver1.internalfqdn.com, и понятное имя снаружи, такое как www.externalfqdn.com)
  • Таблицы ручных маршрутов, не отраженные выше (вы пытались связать 10.0.0.x с 1.2.3.4 по 10.0.0.5 в качестве маршрутизатора? - это может работать, но требует дополнительной настройки)
  • Протоколы маршрутизации (например, RIP) (на самом деле вариант выше, но если у вас включен RIP или другая публикация маршрутов, вы можете публиковать неверные маршруты
Jose Javier Gonzalez Ortiz avatar
флаг cn
Итак, отключив шлюз eth1 и немного поиграв с tcpdump, я смог убедиться, что трафик поступает с eth0 и уходит с eth1. Проблема в том, что провайдер не выполняет NAT для трафика, идущего к конечной точке 1.2.3.5, а затем сервер идентифицирует адреса 10.0.0.X как расположенные на интерфейсе eth1.
Doug avatar
флаг in
Если они не используют NAT, вся конфигурация недействительна. Подсеть 10.x.x.x/8 не должна появляться в Интернете, так как это зарезервированное адресное пространство. Я подозреваю, что что-то еще не так, поскольку я никогда не ожидал, что даже ужасный интернет-провайдер сделает что-то настолько плохо.
Рейтинг:0
флаг cn

В итоге я решил проблему, используя разделенный DNS подход, развернув DNS-сервер на моем хосте и заставив всю локальную сеть использовать его в качестве DNS-сервера по умолчанию. Там я добавил пользовательские правила перезаписи DNS для мой домен.com перенаправить на 10.0.0.5 вместо публичного адреса.Таким образом, хосты в локальной сети разрешают мой домен во внутренний IP-адрес, а хосты за пределами локальной сети разрешают его в общедоступный IP-адрес, благодаря чему локальный трафик не должен выходить через сеть интернет-провайдера, как раньше.

Другая альтернатива, которая, как я считаю, должна быть в состоянии решить эту проблему: шпилька. Однако маршрутизатор, который предоставляет мой провайдер, похоже, не поддерживает это.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.