Новичок я тут Posted February 7, 2019 Posted February 7, 2019 Доброго вечера, хотел бы услышать мнение знающих людей, какой фаервол выбрать для ната что удобней, производительней ? ipfw или pf кто что использует
a_n_h Posted February 8, 2019 Posted February 8, 2019 (edited) https://pcvector.ru/t1940 Edited February 8, 2019 by a_n_h
KaYot Posted February 8, 2019 Posted February 8, 2019 Лучший НАТ на БСД это любой дистрибутив linux 1 1 2
Sоrk Posted February 8, 2019 Posted February 8, 2019 (edited) ipfw kernel nat на Xeon E5-1650 v4 + Intel X520 + FreeBSD 12.0-RELEASE-p1 результат такой. Реально ли на PF NAT получить меньшую нагрузку? Edited February 8, 2019 by Sоrk
masters Posted February 8, 2019 Posted February 8, 2019 36 минут назад, Sоrk сказал: Реально ли на PF NAT получить меньшую нагрузку? Процентов 10, может 15 выиграете. Пробовали и то и другое, разница не такая уж критичная. Сейчас используем pf.
Pautiina Posted February 8, 2019 Posted February 8, 2019 58 минут назад, Sоrk сказал: ipfw kernel nat на Xeon E5-1650 v4 + Intel X520 + FreeBSD 12.0-RELEASE-p1 результат такой. Реально ли на PF NAT получить меньшую нагрузку? просьба кинуть конфиги, тюнинг, количество процов привязку даминет и сетевок в лс
WideAreaNetwork Posted February 8, 2019 Posted February 8, 2019 1 минуту назад, Pautiina сказал: в лс так интересно всем же
Stalker1 Posted February 8, 2019 Posted February 8, 2019 12 минут назад, WideAreaNetwork сказал: так интересно всем же И мне в личку спасибо
Sоrk Posted February 8, 2019 Posted February 8, 2019 Настройки ядра: /usr/src/sys/amd64/conf/GENERIC - ничего особенного #options INET6 #disable IPv6 options IPFIREWALL options IPFIREWALL_NAT options IPFIREWALL_DEFAULT_TO_ACCEPT options HZ=1000 options NETGRAPH options NETGRAPH_IPFW options NETGRAPH_NAT options NETGRAPH_NETFLOW options NETGRAPH_SPLIT options NETGRAPH_ETHER options NETGRAPH_KSOCKET options NETGRAPH_SOCKET options NETGRAPH_BPF options NETGRAPH_IFACE options NETGRAPH_PPTPGRE options NETGRAPH_TCPMSS options NETGRAPH_VJC device lagg /boot/loader.conf alias_ftp_load="YES" alias_pptp_load="YES" net.inet.tcp.tcbhashsize=4096 net.isr.maxthreads=2 net.isr.defaultqlimit=4096 net.isr.bindthreads=1 cc_htcp_load="YES" cc_chd_load="YES" net.inet.tcp.hostcache.cachelimit="0" net.inet.tcp.tso=0 net.link.ifqmaxlen="2048" hw.ix.tx_process_limit=-1 hw.ix.rx_process_limit=-1 /etc/sysctl.conf net.inet.ip.fw.dyn_max=5000000 net.inet.ip.fw.dyn_buckets=65535 net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1 net.inet.ip.ttl=128 kern.ipc.somaxconn=4096 net.link.ether.inet.log_arp_movements=0 net.inet.icmp.drop_redirect=1 net.inet.icmp.log_redirect=1 net.inet.icmp.bmcastecho=0 net.inet.icmp.maskrepl=0 net.inet.ip.sourceroute=0 net.inet.ip.accept_sourceroute=0 net.inet.tcp.rfc1323=1 net.inet.tcp.hostcache.expire=1 net.inet.ip.redirect=0 net.inet.ip.forwarding=1 net.isr.dispatch=direct net.inet.raw.maxdgram=16384 net.inet.raw.recvspace=16384 net.link.ether.inet.max_age=300 kern.ipc.maxsockbuf=2097152 net.inet.tcp.sendbuf_max=2097152 net.inet.tcp.recvbuf_max=2097152 net.inet.tcp.cc.algorithm=htcp net.inet.tcp.cc.htcp.adaptive_backoff=1 net.inet.tcp.cc.htcp.rtt_scaling=1 kern.ipc.soacceptqueue=1024 net.inet.tcp.mssdflt=1460 net.inet.tcp.nolocaltimewait=1 net.inet.tcp.syncache.rexmtlimit=0 net.inet.tcp.maxtcptw=40960 net.inet.tcp.tso=0 net.inet.tcp.abc_l_var=44 kern.sync_on_panic=1 net.inet.tcp.syncookies=0 net.inet.ip.portrange.first=1024 net.inet.ip.portrange.hifirst=1024 kern.random.harvest.mask=351 net.route.netisr_maxqlen=2048 hw.intr_storm_threshold=9000 net.inet.tcp.rfc6675_pipe=1 ipfw show 00010 allow ip from me to any 00030 allow icmp from any to me 00040 reject tcp from any to table(63) in via vlan10 00050 reject udp from any to table(63) in via vlan10 00110 nat 123 ip from table(5) to any out via vlan21 00120 nat 124 ip from table(6) to any out via vlan21 00130 nat 125 ip from table(16) to any out via vlan21 00140 nat tablearg ip from table(3) to any out via vlan21 00210 nat 123 ip from any to table(7) in via vlan21 00220 nat 124 ip from any to table(8) in via vlan21 00230 nat 125 ip from any to table(17) in via vlan21 00240 nat tablearg ip from any to table(4) in via vlan21 65535 allow ip from any to any vlan10 - внутрнний vlan21 - внешний table 3 #внутренние сети dynamic nat tablearg (ipfw table 3 add 172.17.0.0/16 5) table 5 #внутренние адреса static nat 123 table 6 #внутренние адреса static nat 124 table 16 #внутренние адреса static nat 125 table 4 #внешние адреса dynamic nat tablearg (ipfw table 4 add 99.88.77.66/32 5) table 7 #внешние адреса static nat 123 table 8 #внешние адреса static nat 124 table 17 #внешние адреса static nat 125 пример настройки статик-нат (таких трансляций более 500) ipfw nat 123 config log unreg_only redirect_addr 172.18.1.1 99.88.77.11 redirect_addr 172.18.1.2 99.88.77.12 redirect_addr ... ipfw nat 124 config log unreg_only redirect_addr 172.18.2.2 99.88.77.13 redirect_addr 172.18.2.3 99.88.77.14 redirect_addr ... ipfw nat 125 config log unreg_only redirect_addr 172.18.3.4 99.88.77.15 redirect_addr 172.18.3.5 99.88.77.16 redirect_addr ... Пример настройки динамик-ната (таких трансляций более 100) ipfw table 3 add 172.17.0.0/16 5 ipfw table 4 add 99.88.77.66/32 5 ipfw nat 5 config ip 99.88.77.66 log deny_in unreg_only reset ipfw nat show log nat 5: icmp=0, udp=16, tcp=278, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=294 nat 7: icmp=6, udp=306, tcp=7075, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=7387 nat 8: icmp=34, udp=658, tcp=8342, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=9034 nat 10: icmp=30, udp=1539, tcp=11562, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=13131 nat 11: icmp=23, udp=548, tcp=11726, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=12297 nat 12: icmp=53, udp=1650, tcp=42239, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=43942 nat 13: icmp=31, udp=2079, tcp=29572, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=31682 nat 14: icmp=22, udp=1399, tcp=34059, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=35480 nat 16: icmp=41, udp=1350, tcp=31768, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=33159 nat 17: icmp=8, udp=1592, tcp=14672, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=16272 nat 18: icmp=57, udp=1170, tcp=28944, sctp=0, pptp=0, proto=1, frag_id=0 frag_ptr=0 / tot=30172 nat 19: icmp=19, udp=566, tcp=13708, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=14293 nat 20: icmp=12, udp=854, tcp=10584, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=11450 nat 21: icmp=18, udp=400, tcp=4506, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=4924 nat 22: icmp=43, udp=1546, tcp=20871, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=22460 nat 23: icmp=49, udp=1829, tcp=25230, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=27108 nat 24: icmp=26, udp=62, tcp=2269, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=2357 nat 25: icmp=35, udp=611, tcp=16542, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=17188 nat 26: icmp=14, udp=193, tcp=1122, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=1329 nat 27: icmp=1, udp=80, tcp=2590, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=2671 nat 28: icmp=48, udp=2055, tcp=26846, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=28949 nat 29: icmp=12, udp=397, tcp=9285, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=9694 nat 30: icmp=33, udp=1770, tcp=27310, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=29113 nat 31: icmp=78, udp=836, tcp=19699, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=20613 nat 32: icmp=69, udp=1807, tcp=32956, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=34832 nat 33: icmp=1, udp=29, tcp=2796, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=2826 nat 34: icmp=69, udp=479, tcp=24091, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=24639 nat 35: icmp=3, udp=140, tcp=4799, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=4942 nat 37: icmp=17, udp=251, tcp=4281, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=4549 nat 38: icmp=63, udp=2679, tcp=43268, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=46010 nat 64: icmp=0, udp=199, tcp=2941, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=3140 nat 65: icmp=0, udp=610, tcp=2999, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=3609 nat 66: icmp=1, udp=1690, tcp=7648, sctp=0, pptp=2, proto=0, frag_id=2 frag_ptr=0 / tot=9343 nat 67: icmp=4, udp=1061, tcp=6268, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=7333 nat 68: icmp=0, udp=1567, tcp=3770, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=5337 nat 69: icmp=65, udp=652, tcp=5133, sctp=0, pptp=0, proto=0, frag_id=86 frag_ptr=0 / tot=5936 nat 70: icmp=4, udp=2047, tcp=6630, sctp=0, pptp=2, proto=0, frag_id=0 frag_ptr=0 / tot=8683 nat 71: icmp=4, udp=315, tcp=5447, sctp=0, pptp=4, proto=0, frag_id=0 frag_ptr=0 / tot=5770 nat 72: icmp=3, udp=338, tcp=3401, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=3742 nat 73: icmp=3, udp=1012, tcp=6264, sctp=0, pptp=1, proto=0, frag_id=0 frag_ptr=0 / tot=7280 nat 74: icmp=5, udp=1799, tcp=11373, sctp=0, pptp=3, proto=0, frag_id=0 frag_ptr=0 / tot=13180 nat 75: icmp=9, udp=2026, tcp=12259, sctp=0, pptp=8, proto=0, frag_id=0 frag_ptr=0 / tot=14302 nat 76: icmp=1, udp=597, tcp=4629, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=5227 nat 77: icmp=2, udp=328, tcp=2967, sctp=0, pptp=3, proto=0, frag_id=0 frag_ptr=0 / tot=3300 nat 78: icmp=6, udp=3333, tcp=16732, sctp=0, pptp=58, proto=0, frag_id=97 frag_ptr=0 / tot=20226 nat 79: icmp=2, udp=647, tcp=3746, sctp=0, pptp=1, proto=0, frag_id=0 frag_ptr=0 / tot=4396 nat 80: icmp=1, udp=2256, tcp=13327, sctp=0, pptp=20, proto=0, frag_id=0 frag_ptr=0 / tot=15604 nat 81: icmp=7, udp=1887, tcp=10885, sctp=0, pptp=9, proto=0, frag_id=0 frag_ptr=0 / tot=12788 nat 82: icmp=29, udp=1353, tcp=8849, sctp=0, pptp=5, proto=0, frag_id=0 frag_ptr=0 / tot=10236 nat 83: icmp=2, udp=495, tcp=4295, sctp=0, pptp=28, proto=0, frag_id=0 frag_ptr=0 / tot=4820 nat 84: icmp=8, udp=821, tcp=6017, sctp=0, pptp=0, proto=0, frag_id=1 frag_ptr=0 / tot=6847 nat 85: icmp=0, udp=42, tcp=610, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=652 nat 87: icmp=6, udp=637, tcp=5908, sctp=0, pptp=2, proto=0, frag_id=0 frag_ptr=0 / tot=6553 nat 88: icmp=6, udp=3040, tcp=5745, sctp=0, pptp=0, proto=0, frag_id=4 frag_ptr=0 / tot=8795 nat 90: icmp=4, udp=576, tcp=5988, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=6568 nat 91: icmp=0, udp=1237, tcp=2647, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=3884 nat 92: icmp=4, udp=1155, tcp=5125, sctp=0, pptp=2022, proto=0, frag_id=0 frag_ptr=0 / tot=8306 nat 93: icmp=6, udp=1085, tcp=10667, sctp=0, pptp=2, proto=0, frag_id=0 frag_ptr=0 / tot=11760 nat 94: icmp=13, udp=277, tcp=1646, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=1936 nat 95: icmp=2, udp=583, tcp=3391, sctp=0, pptp=2, proto=0, frag_id=0 frag_ptr=0 / tot=3978 nat 96: icmp=1, udp=136, tcp=2157, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=2294 nat 97: icmp=3, udp=26, tcp=573, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=602 nat 98: icmp=1, udp=1006, tcp=4728, sctp=0, pptp=1, proto=0, frag_id=0 frag_ptr=0 / tot=5736 nat 99: icmp=8, udp=903, tcp=6259, sctp=0, pptp=1, proto=0, frag_id=0 frag_ptr=0 / tot=7171 nat 100: icmp=3, udp=216, tcp=4377, sctp=0, pptp=3, proto=0, frag_id=0 frag_ptr=0 / tot=4599 nat 101: icmp=0, udp=20, tcp=165, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=185 nat 102: icmp=16, udp=7776, tcp=10331, sctp=0, pptp=13, proto=0, frag_id=3 frag_ptr=0 / tot=18139 nat 103: icmp=0, udp=14, tcp=121, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=135 nat 104: icmp=0, udp=13, tcp=298, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=311 nat 105: icmp=0, udp=2, tcp=91, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=93 nat 109: icmp=3, udp=1335, tcp=8232, sctp=0, pptp=15, proto=0, frag_id=0 frag_ptr=0 / tot=9585 nat 111: icmp=5, udp=384, tcp=1994, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=2383 nat 112: icmp=0, udp=11, tcp=140, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=151 nat 116: icmp=0, udp=49, tcp=472, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=521 nat 118: icmp=0, udp=42, tcp=236, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=278 nat 119: icmp=5, udp=32, tcp=782, sctp=0, pptp=11, proto=0, frag_id=0 frag_ptr=0 / tot=830 nat 123: icmp=0, udp=0, tcp=15, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=15 nat 124: icmp=0, udp=1, tcp=16, sctp=0, pptp=2, proto=0, frag_id=0 frag_ptr=0 / tot=19 nat 125: icmp=140, udp=3929, tcp=24986, sctp=0, pptp=380, proto=5, frag_id=0 frag_ptr=0 / tot=29440 nat 128: icmp=0, udp=20, tcp=1858, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=1878 привязка прерываний к ядру (HT отключен): cpuset -l 0 -x 264 cpuset -l 1 -x 265 cpuset -l 2 -x 266 cpuset -l 3 -x 267 cpuset -l 0 -x 269 cpuset -l 1 -x 270 cpuset -l 2 -x 271 cpuset -l 3 -x 272 пропатчен размер таблицы: /sys/netinet/libalias/alias_local.h #define LINK_TABLE_OUT_SIZE 63997 #define LINK_TABLE_IN_SIZE 63997 3
Sоrk Posted February 8, 2019 Posted February 8, 2019 и да, сервер занимается исключительно задачей NAT - никаких dummynet, dns, webserver, netflow/ipcad, dhcp rc.conf ifconfig_ix0="-tso4 -tso6 -lro -vlanhwtso" ifconfig_ix1="-tso4 -tso6 -lro -vlanhwtso" powerd_enable="YES" powerd_flags="-a maximum" tcp_restrict_rst="YES" tcp_drop_synfin="YES" icmp_drop_redirect="YES" icmp_log_redirect="YES" icmp_bmcastecho="NO" tcp_extensions="YES" все сети для статик-нат отправлены в blackhole (если такого не сделать и этот IP почему-то не попал в трансляцию/не занят весь входящих трафик на него будет попадать в L3 петлю BORDER<->NAT SERVER до истечения TTL) route add -net 99.88.77.0/25 127.0.0.1 -blackhole 2
Pautiina Posted February 8, 2019 Posted February 8, 2019 (edited) Спасибо, тюнинг норм. Патчить libalias никогда не пробовал, нужно будет попробовать. Рекомендации от меня: это на хрен выкинуть с сервера НАТ: cc_htcp_load="YES" cc_chd_load="YES" net.inet.tcp.cc.algorithm=htcp net.inet.tcp.cc.htcp.adaptive_backoff=1 net.inet.tcp.cc.htcp.rtt_scaling=1 выше указанные параметры нужны для апаче. И к стати не пробовали второй проц поставить, и разделить прерывания по 4 на каждый проц? Edited February 8, 2019 by Pautiina 1
KaYot Posted February 8, 2019 Posted February 8, 2019 (edited) 40 минут назад, Pautiina сказал: И к стати не пробовали второй проц поставить, и разделить прерывания по 4 на каждый проц? Вы как попробуете поставить 2шт e5-1650, сразу нам напишите. Посмеемся вместе. И в чем смысл выделять по 4 прерывания на 6ти ядерный проц?) Edited February 8, 2019 by KaYot 1
Pautiina Posted February 8, 2019 Posted February 8, 2019 23 минуты назад, KaYot сказал: Вы как попробуете поставить 2шт e5-1650, сразу нам напишите. Посмеемся вместе. И в чем смысл выделять по 4 прерывания на 6ти ядерный проц?) Мог бы и не ржать, а сказать: ты там ошибся, наверное по 6-ть имел ввиду?!
Новичок я тут Posted February 8, 2019 Author Posted February 8, 2019 Вопрос на засыпку, есть разница будет pf вкомпилен в ядро или подгружаться модулем? какое влияние на производительность.
KaYot Posted February 8, 2019 Posted February 8, 2019 (edited) Никакой разницы. Edited February 8, 2019 by KaYot
supportod Posted February 11, 2019 Posted February 11, 2019 В 08.02.2019 в 15:24, Sоrk сказал: #options INET6 #disable IPv6 После этой опции можно не смотреть дальше. Выпиливание этой опции приводит к странным последствиям в TCP стеке. PR с такой опцией стараются не решать.
Kto To Posted February 11, 2019 Posted February 11, 2019 1 час назад, supportod сказал: После этой опции можно не смотреть дальше. Выпиливание этой опции приводит к странным последствиям в TCP стеке. PR с такой опцией стараются не решать. Да что вы говорите? Расскажите это тем у кого PPPOE и MPD :)))) У меня на уйме своих и тех что я веду акцесниках вырезан нах@р IPV6 в ядре - несколько лет полет нормальный. 1
kvirtu Posted February 11, 2019 Posted February 11, 2019 2 часа назад, supportod сказал: После этой опции можно не смотреть дальше. Выпиливание этой опции приводит к странным последствиям в TCP стеке. PR с такой опцией стараются не решать. с какой версии фри ?
maxx Posted February 11, 2019 Posted February 11, 2019 (edited) 4 минуты назад, kvirtu сказал: с какой версии фри ? c 4й В смысле выпиливать в6 начали с 4й. полет нормальный. Edited February 11, 2019 by maxx 1 1
D780 Posted February 11, 2019 Posted February 11, 2019 Если не используется ipnat то ipV6 вырезаю тоже, для ipnat нужен этот параметр в ядре, по крайней мере так было в 10.* и 11, как в 12-й ветке не знаю, не тестировал. А так на всех серверах где ipV6 не используется он вырезан, глюков не замечено.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now