Re: настройка сетевых интерфейсов
On Sat, Jun 06, 2015 at 09:29:43PM +0300, Artem Chuprina wrote:
> Кроме того. У меня в свое время был, гм, опыт. Были сервера в офисе.
> Было два провайдера, основной и резервный. Адреса, правда, разные
> (failover средствами DNS), но существенно не это. Существенно то, что
> входящий TCP на резервный канал работал на ура, а вот UDP не везло,
> потому что ответ на TCP идет с того же интерфейса, поскольку сеанс, а
Нет, в tcp никакой привязки коннекции к интерфейсу нет, поэтому такое
соединение должно было бы рваться, если бы не была обеспечена маршрутизация
пакетов с определёнными src_ip через своего провайдера. В линуксе это
достигается с помощью ip rules.
И в этом отношении никакого отличия udp от tcp нет. Отличие лишь в том,
что для udp нет неявной привязки src_ip исходящих пакетов к какому-то
адресу, и если приложение не делает bind() на нужный адрес, то ответные
пакеты попадают в ядро с пустым src_ip и ядро заполняет src_ip по
применённому маршруту. В частности, может подставить в src_ip адрес
выходного интерфейса. С tcp такого никогда не происходит, потому что
tcp-коннекция изначально создаётся со строго определённым квадруплетом
(src_ip, src_port, dst_ip, dst_port).
> ответ на UDP - по общим правилам маршрутизации, т.е. пока (по мнению
> сервера) основной жив - через основной.
Правила маршрутизации для tcp и udp одинаковые, они вообще применяются
на другом уровне стека протоколов -- на уровне ip (L3).
> И я подозреваю, что дополнительный эффект этой ситуации будет в том, что
> даже в случае одного адреса на двух интерфейсах TCP-сеанс будет рваться,
> если упадет тот интерфейс, через который он был установлен. Хотя это
> надо проверять, может быть, и нет.
Нет.
--
Eugene Berdnikov
Reply to: