Здравствуйте, DjoBlakk, Вы писали:
DB>Необходимо программно проверять доступность сетевых интерфейсов путем удаленного сокет подключения к северу.
DB>В процессе работы возникло проблема, gateway существует только для активного на данный момент подключения.
Понятие gateway вообще трудноформализуемое.
Простейшее определение: gateway — это тот маршрутизатор, через который идёт весь трафик. Ну, кроме машин, непосредственно находящихся в нашем сегменте. То есть строчка с destination = 0.0.0.0/0 в таблице рутинга.
Но это никак не помогает в случае более чем одного интерфейса, и тут возникают сложности.
Пусть мы — домашний рутер с двумя интерфейсами. Один наружу, за ним провайдерский рутер, через него весь Интернет (и поэтому он — гейтвей внешнего интерфейса). Другой внутрь, за ним дешёвый 8-портовый свитч, в него воткнуто напрямую ещё два компа и телевизор. Кого из них считать гейтвеем и почему?
Теперь пусть мы на этом рутере ещё подняли openvpn до работы. Он нам даёт ещё один (виртуальный) интерфейс. За ним — vpn-сервер предприятия и через него мы ходим на конторские машины, скажем, это сеть 10.54.0.0/16. А вот на ютюб и вконтакт мы продолжаем ходить через своего провайдера, потому что фу нафиг перед админами с работы светиться, куда мы там ходим. В этой ситуации у нас провайдерский рутер продолжает быть гейтвеем. Также, по логике, гейтвеем является и vpn-сервер компании, несмотря на то, что ему в таблице рутинга отведена всего лишь небольшая подсетка /16.
А теперь воткнём ещё второго провайдера. Потому что у него, скажем, прямой пиринг с НГУ с отличными скоростями и бесплатно (а у НГУ отличное зеркало Ubuntu), а в остальном он так себе провайдер, так что основной трафик продолжает литься через первого провайдера. А через этого завернём только диапазоны IP-адресов НГУ. Теперь маршрутизатор второго провайдера тоже гейтвей.
Внезапно, друг из второй сетки решил поделиться с нами своим NAS’ом с тоннами вкусного контента, который мы с ним долго собирали. NAS у него за домашним же рутером, до которого у нас есть прямой пинг через сетку провайдера. (Ну повезло так, живём в соседних подъездах же, один сегмент.) Теперь, получается, за интерфейсом, торчащим в сеть второго провайдера, у нас… два гейтвея. Один — маршрутизатор провайдера, через него мы ходим на Яндекс. А второй — рутер друга, через него мы качаем фильмы.
TL;DR:
За интерфейсом может быть единственный гейтвей.
За интерфейсом может не быть ни одного гейтвея (случай дикого сегмента).
За интерфейсом может быть более одного гейтвея (особые случаи).