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 -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20150606202818.gc10...@sie.protva.ru