ng_nat, vlan, pppoe, packet fragmentation
Добавлено: 2012-09-27 19:03:57
Всем привет!
Столкнулся с одной проблемкой на FreeBSD 8.2 i386.
Ядро собрано с:
Фря используется только для роутинга и подсчета статистики netflow, визуализации средствами nfsen.
На ней имеется один внешний интерфейс em2, который подвязан к одному провайдеру со статическим адресом. На этом же интерфейсе сделан vlan интерфейс, на котором сидит второй провайдер с типом подключения к инету через pppoe.
mpd5 поднимает pppoe подключение:
Проблема как раз со вторым провайдером. Все вроде как замечательно работает, скорость соответствует заявленной, только не проходят через сервер пакеты размером больше 1472 байт (не полностью "не проходят", процентов 95 потерь), которые попали в ipfw netgraph 20 где над ними постарался ng_nat:
Стоит перед правилом с "netgraph 20" поставить "ipfw add ... allow icmp from any to any via $iface", то все ОК.
Добавил правило:
В итоге серверу полегчало - он смог через это правило принять "ping -s 3000 ya.ru", но у клиентов за ним все по прежнему - не проходят пинги и большие пакеты (потери 95% и более).
Заметил, что сегодня днем я не мог пинговать свой второй сервер и ya.ru большими пакетами, а вечером смог пинговать сервер, но ya.ru не пингуется (правило ipfw reass отключено).
Я пробовал менять опции и, в том числе, mtu и multilink в mpd5 - безрезультатно.
Первый провайдер работает замечательно.
Что показывать tcpdump на втором сервере на команду "ping -s 3000 -n 1 83.220.*.*" когда пинг проходит:
Подскажите куда смотреть. Тут на сто процентов ясно, что как только пакет больше 1472 байт прошел ng_nat где надо сделать обратный алиас (деалиас), то он не воспринимается.
Столкнулся с одной проблемкой на FreeBSD 8.2 i386.
Ядро собрано с:
Код: Выделить всё
options NETGRAPH
options NETGRAPH_IPFW
options NETGRAPH_NAT
options NETGRAPH_NETFLOW
options NETGRAPH_SPLIT
options NETGRAPH_KSOCKET
options NETGRAPH_SOCKET
options NETGRAPH_BPF
options NETGRAPH_IFACE
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_MPPC_COMPRESSION
options NETGRAPH_PPP
options NETGRAPH_PPTPGRE
options NETGRAPH_TCPMSS
options NETGRAPH_VJC
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options LIBALIAS
options IPDIVERT
options DUMMYNET
На ней имеется один внешний интерфейс em2, который подвязан к одному провайдеру со статическим адресом. На этом же интерфейсе сделан vlan интерфейс, на котором сидит второй провайдер с типом подключения к инету через pppoe.
mpd5 поднимает pppoe подключение:
Код: Выделить всё
create bundle static PROVB
set bundle no compression
set iface up-script /usr/local/bin/scripts/mpd-up-ng0
set iface down-script /usr/local/bin/scripts/mpd-down-ng0
set iface enable tcpmssfix
set ifcae idle 0
set iface session 0
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
set ipcp no vjcomp
create link static PROVL pppoe
set link action bundle PROVB
set link yes acfcomp
set link yes protocomp
set link no check-magic
set link no magicnum
set auth authname ******
set auth password ******
set link max-redial 0
set link mtu 1472
set link disable multilink
set link keep-alive 10 60
set pppoe iface vlan2
set pppoe service ""
open
Код: Выделить всё
mkpeer ipfw: nat 20 in
name ipfw:20 nat2
connect ipfw: nat2: 14 out
msg nat2: setaliasaddr $ngnat_aliasaddr2
Добавил правило:
Код: Выделить всё
ipfw add 1 reass all from any to any
Заметил, что сегодня днем я не мог пинговать свой второй сервер и ya.ru большими пакетами, а вечером смог пинговать сервер, но ya.ru не пингуется (правило ipfw reass отключено).
Я пробовал менять опции и, в том числе, mtu и multilink в mpd5 - безрезультатно.
Первый провайдер работает замечательно.
Что показывать tcpdump на втором сервере на команду "ping -s 3000 -n 1 83.220.*.*" когда пинг проходит:
Код: Выделить всё
19:50:20.347950 IP 89.169.*.* > 83.220.*.*: ICMP echo request, id 19093, seq 0, length 1280
19:50:20.348078 IP 89.169.*.* > 83.220.*.*: icmp
19:50:20.348087 IP 89.169.*.* > 83.220.*.*: icmp
19:50:20.348155 IP 83.220.*.* > 89.169.*.*: ICMP echo reply, id 19093, seq 0, length 1480
19:50:20.348158 IP 83.220.*.* > 89.169.*.*: icmp
19:50:20.348161 IP 83.220.*.* > 89.169.*.*: icmp