LINUX.ORG.RU
решено ФорумAdmin

Linux шлюз. Случайная блокировка траффика.


0

1

Здравствуйте!
Суть.
Есть сеть на 2000 человек - Linux шлюз - интернет.
Некоторые адреса internet у юзверей в сети хаотически перестают открываться. Все бы ладно, но начались такие глюки с фкантагтом. Визуально выглядит так: пинги проходят идеально, telnet vk.com 80 - неале. Пусть у этого юзверя ip 10.10.1.1/24 а у другого, у которого 10.10.2.1/24 все нормально. Когда делаю
tcpdump -v -x -i eth1 host 10.10.1.1 и tcpdump -v -x -i eth1 host 10.10.2.1 - запросы приходящие на локальный инетрфейс сервера ни чем друг от друга не отличаются. Размеры пакета, структура, адреса, все одинаково. Только на 10.10.1.1 не приходят ответы от vk.com. Но появляются и другие подобные случаи. Оба адреса на одном и том же свиче. Весь трафик с сети 10.0.0.0/8 проходит через snat
-A POSTROUTING -s 10.0.0.0/8 -j SNAT --to-source xx.xxx.xxx.xx
sysctl.conf, сейчас такой. Но на дефайлтном тоже пробовали.
net.core.netdev_max_backlog = 100000
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
kernel.sysrq = 0
net.ipv4.conf.default.accept_source_route = 0
kernel.panic = 10
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
fs.file-max = 8192
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.core.rmem_default = 201250
net.core.wmem_default = 201250
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_fin_timeout = 15
net.core.somaxconn = 300000
net.ipv4.tcp_keepalive_intvl = 5
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_mtu_probing = 1

Есть у кого хотябы предположения, куда копать? Чем такая «избирательность» может быть вызвана?


Ответ на: комментарий от kombrig

Проверяю с одного и того же компа одного и того же свича. На vlan 2 ip прибито.

gich
() автор топика

пинги проходят идеально, telnet vk.com 80 - неале.

пинги ходят — значит с маршрутами всё ОК.

запросы приходящие на локальный инетрфейс сервера ни чем друг от друга не отличаются. Размеры пакета, структура, адреса, все одинаково. Только на 10.10.1.1 не приходят ответы от vk.com.

с vlan тоже порядок

Есть у кого хотябы предположения, куда копать? Чем такая «избирательность» может быть вызвана?

я бы проверил правила iptables, особенно обращая внимание на маски сетей

anonymous
()

чему равно net.ipv4.netfilter.ip_conntrack_max? И отключи syn_cookies - на роутере они не нужны(хотя и не вредны, вроде)

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

net.netfilter.nf_conntrack_generic_timeout = 600
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 432000
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
net.netfilter.nf_conntrack_tcp_loose = 1
net.netfilter.nf_conntrack_tcp_be_liberal = 0
net.netfilter.nf_conntrack_tcp_max_retrans = 3
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 180
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_acct = 1
net.netfilter.nf_conntrack_events = 1
net.netfilter.nf_conntrack_events_retry_timeout = 15
net.netfilter.nf_conntrack_max = 65536
net.netfilter.nf_conntrack_count = 65535
net.netfilter.nf_conntrack_buckets = 16384
net.netfilter.nf_conntrack_checksum = 1
net.netfilter.nf_conntrack_log_invalid = 0
net.netfilter.nf_conntrack_expect_max = 256
net.nf_conntrack_max = 65536

gich
() автор топика
Ответ на: комментарий от gich

Изменил
net.netfilter.nf_conntrack_max = 1048576
net.nf_conntrack_max = 1048576
Также фигня. Легче не стало.
dmesg ничего про отбрасываемые пакеты не говорит.

gich
() автор топика
Ответ на: комментарий от ventilator

Внутренний ethtool -S eth1
NIC statistics:
rx_packets: 415851724
tx_packets: 423273452
rx_bytes: 288972037283
tx_bytes: 421636332205
rx_broadcast: 69795
tx_broadcast: 863
rx_multicast: 103282
tx_multicast: 3792
rx_errors: 0
tx_errors: 0
tx_dropped: 0
multicast: 103282
collisions: 0
rx_length_errors: 0
rx_over_errors: 0
rx_crc_errors: 0
rx_frame_errors: 0
rx_no_buffer_count: 337
rx_missed_errors: 354
tx_aborted_errors: 0
tx_carrier_errors: 0
tx_fifo_errors: 0
tx_heartbeat_errors: 0
tx_window_errors: 0
tx_abort_late_coll: 0
tx_deferred_ok: 0
tx_single_coll_ok: 0
tx_multi_coll_ok: 0
tx_timeout_count: 0
tx_restart_queue: 26
rx_long_length_errors: 0
rx_short_length_errors: 0
rx_align_errors: 0
tx_tcp_seg_good: 407
tx_tcp_seg_failed: 0
rx_flow_control_xon: 0
rx_flow_control_xoff: 0
tx_flow_control_xon: 0
tx_flow_control_xoff: 0
rx_long_byte_count: 288972037283
rx_csum_offload_good: 405977381
rx_csum_offload_errors: 187
rx_header_split: 0
alloc_rx_buff_failed: 0
tx_smbus: 0
rx_smbus: 0
dropped_smbus: 0
rx_dma_failed: 0
tx_dma_failed: 0


Внешний ethtool -S eth0
NIC statistics:
rx_packets: 468353106
tx_packets: 434500200
rx_bytes: 427953662049
tx_bytes: 291994413376
rx_broadcast: 620
tx_broadcast: 521
rx_multicast: 0
tx_multicast: 10
rx_errors: 0
tx_errors: 0
tx_dropped: 0
multicast: 0
collisions: 0
rx_length_errors: 0
rx_over_errors: 0
rx_crc_errors: 0
rx_frame_errors: 0
rx_no_buffer_count: 2425
rx_missed_errors: 3228
tx_aborted_errors: 0
tx_carrier_errors: 0
tx_fifo_errors: 0
tx_heartbeat_errors: 0
tx_window_errors: 0
tx_abort_late_coll: 0
tx_deferred_ok: 0
tx_single_coll_ok: 0
tx_multi_coll_ok: 0
tx_timeout_count: 0
tx_restart_queue: 1
rx_long_length_errors: 0
rx_short_length_errors: 0
rx_align_errors: 0
tx_tcp_seg_good: 0
tx_tcp_seg_failed: 0
rx_flow_control_xon: 0
rx_flow_control_xoff: 0
tx_flow_control_xon: 0
tx_flow_control_xoff: 0
rx_long_byte_count: 427953662049
rx_csum_offload_good: 406682531
rx_csum_offload_errors: 5964
alloc_rx_buff_failed: 0
tx_smbus: 0
rx_smbus: 0
dropped_smbus: 0

gich
() автор топика
Ответ на: комментарий от gich

Заметил следствие из проблемы. Если сделать так:
-A POSTROUTING -s 10.0.0.0/16 -j SNAT --to-source xx.xxx.xxx.xx
-A POSTROUTING -s 10.1.0.0/16 -j SNAT --to-source xx.xxx.xxx.xy
-A POSTROUTING -s 10.2.0.0/16 -j SNAT --to-source xx.xxx.xxx.xz
-A POSTROUTING -s 10.10.0.0/16 -j SNAT --to-source xx.xxx.xxx.zz

То все у всех работает. Какая-то связь между количеством натящихся адресов. Есть предположения, с чем это может быть связано?

gich
() автор топика

gich ventilator

Воздержитесь от ответов на провокации и оскорбления, я их тру.

tazhate ★★★★★
()
Ответ на: комментарий от gich

Ну если учесть, что броузер открывает сразу кучу коннектов для параллельного скачивания сайта, то на 2000 пользователей это получается: 65535 / 2000 =~ 30 коннектов на юзера. Совсем не много. Так что нать сразу на несколько айпишников.

PS: Модератор, не надо стирать корректные сообщения.

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

Некоторые ресурсы вполне могут лимитировать количество запросов с одного адреса.

ventilator ★★★
()
Ответ на: комментарий от blind_oracle

кроме того 65535 / 2000 =~ 30 коннектов на юзера _на один_ дестинейшн адрес+порт. Вряд ли все юзеры ломятся на один сервер.

ventilator ★★★
()
Ответ на: комментарий от ventilator

Потому лимита на количество сессий к разным серверам особо нет, у нас вот до 150к сессий на один ип ната.

ventilator ★★★
()
Ответ на: комментарий от GHhost

На внешнем смотреть безсмысленно. Слишком много запросов туда уходит постоянно, а информация о источнике уже отсутствует.
На внутреннем не было ответов.
Проблема такая наблюдалась на соцсетях.
Сейчас сделал пул из 10 ипов. Вроде теперь все везде открывается без проблем
Спасибо за участие и поддержку в поисике тарблов.

gich
() автор топика
Ответ на: комментарий от gich

Как ты раньше в это не упёрся? Мы пока не разбросали людей так, что б получалось по 200-300 на ip у людей icq не работала. Там ограничение, по крайней мере раньше было, у них на кол-во коннектов с одного ip.

Lego_12239 ★★
()
Ответ на: комментарий от blind_oracle

Сейчас я сделал в SNAT пул на 10 внешних IP. Есть ли какой-то способ расчета потребного количества адресов в пуле? Может, ему 20 лучше.
А вот почему раньше не уперся-не смогу сказать. Все открывалось вроде.Бывали иногда какие-то странные глюки, но радикально такого, чтобы выловить явно и поднять в условиях лабы - как-то не случалось.

gich
() автор топика
Ответ на: комментарий от gich

К слову по поводу icq. Миранда на пример, очень плохо коннектилась последние месяца 2.

Знает ли кто как iptables распоеделяет адреса в пуле?

gich
() автор топика
Ответ на: комментарий от blind_oracle

У меня сейчас сделано так:
-A POSTROUTING -s 10.0.0.0/8 ! -d 10.0.0.0/8 -j SNAT --to-source xx.xx.xx.1-xx.xx.xx.9 --persistent
К слову, если не указать в iptables snat pool опцию --persistent, то icq не будет работать, будет отвалилваться или плохо работать потоковая передача данных - видео, музыка. Я так понимаю, что оптимально на 200-300 человека добавлять по 1 адресу на пул?

gich
() автор топика
Ответ на: комментарий от mumpster

Чукча не читатель, чукча писатель. Накопировал из гугла да.

net.core.wmem_default
net.core.rmem_default
net.core.wmem_max
net.core.rmem_max
net.core.somaxconn

Нука расскажи нам как это вообще к нату и маршрутизации относится?

PS: для ната есть практически две крутилки

net.netfilter.nf_conntrack_max
net.netfilter.nf_conntrack_buckets

Причем net.netfilter.nf_conntrack_buckets нужно устанавливать в значение равное максимуму net.netfilter.nf_conntrack_count

ventilator ★★★
()
Ответ на: комментарий от ventilator

ну я как бы лезть и не стал с ними поэтому. но вот похожие проблемки видел из-за net.core.wmem_max. услвоия были специфичечкие но всё же.

mumpster ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.