Страница 1 из 1
Странный kernel-based ipfw NAT
Добавлено: 2009-01-04 16:29:27
godlike
Очень странный глюк:
при
Код: Выделить всё
${fwcmd} add nat 1 all from ${intnet} to any
${fwcmd} add nat 1 all from any to ${extip}
${fwcmd} nat 1 config if ${extint} same_ports reset unreg_only
ipfw не шейпт исходящий от сети 192.168.0.0/16 трафик
Код: Выделить всё
03200 229 19236 pipe 8 ip from table(1) to 192.168.25.6 out via tun0
03300 0 0 pipe 9 ip from 192.168.25.6 to table(1) in via tun0
03400 87 7308 pipe 10 ip from any to 192.168.25.6 out via tun0
03500 0 0 pipe 11 ip from 192.168.25.6 to any in via tun0
причем, tcpdump ловит нормальный трафик на всех интерфейсах (как внутренних так и внешних).
При возврате к
Код: Выделить всё
${fwcmd} add divert 8668 ip from ${intnet} to any out via ${extint}
${fwcmd} add divert 8668 ip from any to ${extip}
у нас все отлично:
Код: Выделить всё
03200 258 21384 pipe 8 ip from table(1) to 192.168.25.6 out via tun0
03300 251 21084 pipe 9 ip from 192.168.25.6 to table(1) in via tun0
03400 103 8652 pipe 10 ip from any to 192.168.25.6 out via tun0
03500 103 8652 pipe 11 ip from 192.168.25.6 to any in via tun0
Не подскажете, чем лечить? Заранее спасибо!
З.Ы.
Да,
Код: Выделить всё
net.inet.ip.fw.one_pass=1
kern.polling.enable=1
net.inet.ip.fastforwarding=1
net.inet.ip.dummynet.io_fast=1
net.inet.ip.dummynet.hash_size=10240
net.inet.ip.dummynet.max_chain_len=32
kern.ipc.somaxconn=4096
io_fast=1 не виноват

, проверял.
Re: Странный kernel-based ipfw NAT
Добавлено: 2009-01-04 17:46:45
hizel
one_pass учитываете?
зачем натить везде подряд?
достаточно
Код: Выделить всё
${fwcmd} add nat 1 all from ${intnet} to any out via ${outint}
${fwcmd} add nat 1 all from any to ${extip} in via ${outint}
Re: Странный kernel-based ipfw NAT
Добавлено: 2009-01-04 17:55:38
godlike
Да, действительно, оптимальнее натить только на ${extint}

, спасибо.
А насчет one_pass, я думал, он относится только к dummynet... Прто что что он учитывает также и NAT, не знал, сейчас попробую...
Re: Странный kernel-based ipfw NAT
Добавлено: 2009-01-04 18:09:42
hizel
man ipfw

Re: Странный kernel-based ipfw NAT
Добавлено: 2009-01-04 18:31:34
godlike
О великий кудесник, спасибо тебе!
Ты просветил меня, и с небольшой помощью моих мозгов у меня все заработало!!!

Re: Странный kernel-based ipfw NAT
Добавлено: 2009-03-24 16:32:15
wel
Помогите победить

Раньше Я работал со связкой pf(только НАТ), ipfw (dummynet для нарезания скорости пользователей). Но почему-то когда Я установил этот тазик, то pf nat по каким-то причинам забил натить нормально - нельзя было поиграть в любые онлайн игры. Я решил, что правило "работает не трожь" уже не работает

И решил сократить зоопарк фаерволов.
Откомпилил ядро с ipfw kernel NAT, "настроил", но теперь если нарезаю пользователям скорость, то входящая скорость нормально режется, а вот с исходящей проблемы - на speedtest.net скорость 4-6Кбит/сек, Я захожу на upload.com.ua и начинаю закидывать туда какой-нить файл, через несколько секунд файл начинает загружаться, но скорость нарастает очень медленно и не доходит до требуемой допустим режу до 64Кбайт/сек, а скорость 40-46Кбайт/сек
net.inet.ip.dummynet.io_fast=1 /0 ничего не меняют
Код: Выделить всё
nas1# uname -a
FreeBSD nas1 7.1-RELEASE-p4 FreeBSD 7.1-RELEASE-p4 #12: Tue Mar 24 12:33:03 EET 2009 root@nas1:/usr/obj/usr/src/sys/NAS amd64
Код: Выделить всё
00002 25360 5266430 nat 123 ip from any to 91.203.ХХХ.ХХХ in via vlan20
00003 18461 1704816 deny ip from any to any dst-port 137-141
00011 0 0 pipe 11 ip from not 10.0.0.0/8 to table(11) in
00011 0 0 pipe 11 ip from table(11) to not 10.0.0.0/8 out
00012 0 0 pipe 12 ip from not 10.0.0.0/8 to table(12) in
00012 0 0 pipe 12 ip from table(12) to not 10.0.0.0/8 out
00013 0 0 pipe 13 ip from not 10.0.0.0/8 to table(13) in
00013 0 0 pipe 13 ip from table(13) to not 10.0.0.0/8 out
00014 0 0 pipe 14 ip from not 10.0.0.0/8 to table(14) in
00014 0 0 pipe 14 ip from table(14) to not 10.0.0.0/8 out
00015 0 0 pipe 15 ip from not 10.0.0.0/8 to table(15) in
00015 0 0 pipe 15 ip from table(15) to not 10.0.0.0/8 out
00016 0 0 pipe 16 ip from not 10.0.0.0/8 to table(16) in
00016 0 0 pipe 16 ip from table(16) to not 10.0.0.0/8 out
00017 0 0 pipe 17 ip from not 10.0.0.0/8 to table(17) in
00017 0 0 pipe 17 ip from table(17) to not 10.0.0.0/8 out
00018 0 0 pipe 18 ip from not 10.0.0.0/8 to table(18) in
00018 0 0 pipe 18 ip from table(18) to not 10.0.0.0/8 out
00019 0 0 pipe 19 ip from not 10.0.0.0/8 to table(19) in
00019 0 0 pipe 19 ip from table(19) to not 10.0.0.0/8 out
00020 0 0 pipe 20 ip from not 10.0.0.0/8 to table(20) in
00020 0 0 pipe 20 ip from table(20) to not 10.0.0.0/8 out
00021 0 0 pipe 21 ip from not 10.0.0.0/8 to table(21) in
00021 0 0 pipe 21 ip from table(21) to not 10.0.0.0/8 out
00022 0 0 pipe 22 ip from not 10.0.0.0/8 to table(22) in
00022 0 0 pipe 22 ip from table(22) to not 10.0.0.0/8 out
00023 0 0 pipe 23 ip from not 10.0.0.0/8 to table(23) in
00023 0 0 pipe 23 ip from table(23) to not 10.0.0.0/8 out
00024 0 0 pipe 24 ip from not 10.0.0.0/8 to table(24) in
00024 0 0 pipe 24 ip from table(24) to not 10.0.0.0/8 out
00025 0 0 pipe 25 ip from not 10.0.0.0/8 to table(25) in
00025 0 0 pipe 25 ip from table(25) to not 10.0.0.0/8 out
00026 0 0 pipe 26 ip from not 10.0.0.0/8 to table(26) in
00026 0 0 pipe 26 ip from table(26) to not 10.0.0.0/8 out
00027 23084 6132097 pipe 27 ip from not 10.0.0.0/8 to table(27) in
00027 37761 16607288 pipe 27 ip from table(27) to not 10.0.0.0/8 out
00127 1437 173665 nat 123 ip from table(1) to not 10.0.0.0/8
65535 594474 281978942 allow ip from any to any
Код: Выделить всё
nas1# pfctl -d
No ALTQ support in kernel
ALTQ related functions disabled
pfctl: pf not enabled
Код: Выделить всё
nas1# cat /etc/sysctl.conf | grep -v #
security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.tcp.sendspace=65536
net.inet.tcp.recvspace=65536
net.link.ether.inet.max_age=1200
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0
net.inet.icmp.icmplim=10000
net.inet.tcp.msl=7500
kern.ipc.somaxconn=32768
net.inet.ip.ttl=128
security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
net.inet.ip.ttl=128
net.inet.icmp.bmcastecho=0
kern.maxfiles=128000
kern.maxfilesperproc=65000
kern.ipc.maxsockets=204800
kern.ipc.nmbclusters=65536
net.inet.ip.portrange.first=1024
net.inet.ip.portrange.last=65534
net.inet.ip.portrange.randomized=0
net.inet.ip.fastforwarding=1
net.inet6.ip6.forwarding=1
net.inet.ip.redirect=1
net.inet.ip.fw.one_pass=0
net.inet.ip.dummynet.io_fast=1
net.inet.ip.dummynet.hash_size=10240
net.inet.ip.dummynet.max_chain_len=32
Re: Странный kernel-based ipfw NAT
Добавлено: 2009-05-07 5:34:51
qwe
попробуйте оптимизировать правила ipfw так, чтоб каждое правило описывало и интерфейс, для которого это правило в Вашем уме формировалось (редко, когда одним правилом Вы хотите затронуть несколько интерфейсов. Например это правил с pipe касается)
О проблеме, которая у Вас была с pf: Вы смотрели pfctl -si , когда проблема возникала?
Re: Странный kernel-based ipfw NAT
Добавлено: 2009-05-07 11:06:45
wel
qwe писал(а):попробуйте оптимизировать правила ipfw так, чтоб каждое правило описывало и интерфейс, для которого это правило в Вашем уме формировалось (редко, когда одним правилом Вы хотите затронуть несколько интерфейсов. Например это правил с pipe касается)
Оказалось, что это глюки speedtest + то, что Я в сеть через vpn попадаю.....
qwe писал(а):О проблеме, которая у Вас была с pf: Вы смотрели pfctl -si , когда проблема возникала?
Я всегда хотел избавиться от лишних фаерволов

тоесть оставить или pf или ipfw...
Re: Странный kernel-based ipfw NAT
Добавлено: 2010-07-24 22:36:24
KES1
А как решили проблему опишите пожалуйста!