LINUX.ORG.RU

Сообщения Mironov

 

Маршрутизация и NAT для отдельных адресов

В общем, ситуация такая. Есть провайдер со своей локальной сеткой. Доступ в интернет в основном происходит через NAT, но есть возможность арендовать статический внешний адрес, что я и сделал. Дома стоит системник, выполняющий функцию NAT для домашней сети. Решил я в локальную сеть выходить без NAT, и попросил провайдера выделить подсеть локальных адресов и смаршрутизировать её на внешний интерфейс системника. Дома адреса назначил из выделенного диапазона, NAT прописал в iptables чтобы работало только для внешних адресов. А вот внутри локалки трафик не маршрутизируется. Точно проблема у меня, так как пробовал трассировку по одному из выделенных адресов от друга, подключённого к этому же провайдеру - они приходят на внешний интерфейс - а дальше не проходят. Что я сделал не так? Вот правила таблицы NAT iptables:

root@anime:~# iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N locals
-A POSTROUTING -o eth0 -j locals
-A locals -d 10.0.0.0/8 -o eth0 -j RETURN
-A locals -d 172.16.0.0/12 -o eth0 -j RETURN
-A locals -d 192.168.0.0/16 -o eth0 -j RETURN
-A locals -o eth0 -j SNAT --to-source <внешний_IP_адрес>

Таблица маршрутизации:

root@anime:~# netstat -rn
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 <IP_шлюза_провайдера> 0.0.0.0 UG 0 0 0 eth0
<адрес_подсети_белых_адресов> 0.0.0.0 255.255.255.252 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.115.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

Выданная мне подсеть локальных адресов - 192.168.115.0/24

Mironov
()

Переход в поллинг сетевой карты со снижением скорости

У меня периодически в логе kern.log появляется следующая последовательность записей, после чего интернет становится существенно медленней. При этом помогает выполнение команды /etc/init.d/networking restart. Такое случается, предположительно, когда у прова появляются проблемы с инетом.

Nov  6 03:29:56 anime kernel: [292873.739991] irq 19: nobody cared (try booting with the "irqpoll" option)
Nov  6 03:29:56 anime kernel: [292873.739998] Pid: 0, comm: swapper Tainted: G         C  3.0.0-12-server #20-Ubuntu
Nov  6 03:29:56 anime kernel: [292873.740001] Call Trace:
Nov  6 03:29:56 anime kernel: [292873.740003]  <IRQ>  [<ffffffff810cef3d>] __report_bad_irq+0x3d/0xe0
Nov  6 03:29:56 anime kernel: [292873.740014]  [<ffffffff810cf365>] note_interrupt+0x135/0x180
Nov  6 03:29:56 anime kernel: [292873.740018]  [<ffffffff810cd369>] handle_irq_event_percpu+0xa9/0x220
Nov  6 03:29:56 anime kernel: [292873.740022]  [<ffffffff810cd52e>] handle_irq_event+0x4e/0x80
Nov  6 03:29:56 anime kernel: [292873.740026]  [<ffffffff810cfc94>] handle_fasteoi_irq+0x64/0xf0
Nov  6 03:29:56 anime kernel: [292873.740030]  [<ffffffff8100c212>] handle_irq+0x22/0x40
Nov  6 03:29:56 anime kernel: [292873.740034]  [<ffffffff8160866a>] do_IRQ+0x5a/0xe0
Nov  6 03:29:56 anime kernel: [292873.740039]  [<ffffffff815fed53>] common_interrupt+0x13/0x13
Nov  6 03:29:56 anime kernel: [292873.740041]  <EOI>  [<ffffffff81347e7b>] ? intel_idle+0xcb/0x120
Nov  6 03:29:56 anime kernel: [292873.740051]  [<ffffffff81347e5d>] ? intel_idle+0xad/0x120
Nov  6 03:29:56 anime kernel: [292873.740057]  [<ffffffff814bcba2>] cpuidle_idle_call+0xa2/0x1d0
Nov  6 03:29:56 anime kernel: [292873.740062]  [<ffffffff8100920b>] cpu_idle+0xab/0x100
Nov  6 03:29:56 anime kernel: [292873.740066]  [<ffffffff815c8c0e>] rest_init+0x72/0x74
Nov  6 03:29:56 anime kernel: [292873.740072]  [<ffffffff81ce6c2b>] start_kernel+0x3d4/0x3df
Nov  6 03:29:56 anime kernel: [292873.740076]  [<ffffffff81ce6388>] x86_64_start_reservations+0x132/0x136
Nov  6 03:29:56 anime kernel: [292873.740080]  [<ffffffff81ce6140>] ? early_idt_handlers+0x140/0x140
Nov  6 03:29:56 anime kernel: [292873.740084]  [<ffffffff81ce6459>] x86_64_start_kernel+0xcd/0xdc
Nov  6 03:29:56 anime kernel: [292873.740087] handlers:
Nov  6 03:29:56 anime kernel: [292873.740097] [<ffffffffa008af40>] ahci_interrupt
Nov  6 03:29:56 anime kernel: [292873.740102] [<ffffffffa009a3f0>] rtl8139_interrupt
Nov  6 03:29:56 anime kernel: [292873.740104] Disabling IRQ #19

На 19-м прерывании сидит сетевушка, подключённая к провайдеру. Как я понимаю, отключается обработка прерывания с переходом в режим полинга, при вызове сетевушкой некоторого прерывания, которое драйвер сетевушки не признаёт. В результате резко снижается производительность сети. Вопрос в том, что тут можно сделать? Можно ли сделать, чтобы при наступлении такого события обработка данного прерывания не прекращалась? Буду рад любым соображениям по данному вопросу.

Mironov
()

Possible SYN flooding

Во время работающего KTorrent в лог /var/log/kern.log сыплются много вот таких сообщений почти каждую секунду:

Nov  2 18:09:14 anime kernel: [  218.649020] TCP: Possible SYN flooding on port 7881. Sending cookies.
7881 - это порт, на котором сидит KTorrent.

При этом,

kirill@anime:~$ sysctl net.ipv4.tcp_max_syn_backlog
net.ipv4.tcp_max_syn_backlog = 2048
kirill@anime:~$ netstat -n | grep SYN_RECV | wc -l
16
То есть, полуоткрытых соединений всего 16, а лимит - 2048. Не могу понять в чём подвох.

Mironov
()

RSS подписка на новые темы