[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: