среда, 22 ноября 2017 г.

Сборка актуальной версии trafgen из пакета netsniff-ng на Ubuntu 14.04

cd /usr/src
git clone git://github.com/netsniff-ng/netsniff-ng.git
cd netsniff-ng
apt-get install -y libcli-dev libnet1-dev libnacl-dev  libpcap-dev liburcu-dev ccache libgeoip-dev libnetfilter-conntrack-dev  libncurses5-dev libnl-3-dev flex bison libnl-genl-3-dev libnl-3-dev libnl1 zlib1g-dev libnl-route-3-dev
./configure  --prefix=/opt/netsniff-ng
make
make install

Потом берем шаблон флуда: https://raw.githubusercontent.com/netoptimizer/network-testing/master/trafgen/udp_example01.trafgen


Кроме этого обязательно нужно обновить ядро до версии 4.4 и выше из пакета hardware support! Ибо используются модные AF_PACKET и чем новее ядро - тем будет быстрее.

Потом открываем файл udp_example01.trafgen и корректируем там MAC адрес целевой машины. А также программируем порты и прочее.

После этого запускаем:
/opt/netsniff-ng/sbin/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size 500KiB  --cpu 8
В случае ошибки "Cannot allocate TX_RING" рекомендую убрать --ring-size вовсе.

 Итого, на Intel(R) Core(TM) i7 CPU         950  @ 3.07GHz удалось выжать 3.5 MPPS ценой полной загрузки всех ядер машины:

  1  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]     5  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
  2  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]     6  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
  3  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]     7  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
  4  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]     8  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
  Mem[|||                                                   190/48400MB]     Tasks: 32, 65 thr; 9 running
  Swp[|                                                        3/8190MB]     Load average: 0.64 1.37 4.28
                                                                             Uptime: 01:23:24

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 3728 root       20   0 13616  1760  1364 R 100.  0.0  0:09.22 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
 3732 root       20   0 13616  1780  1384 R 100.  0.0  0:09.22 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
 3721 root       20   0 13620  1780  1384 R 100.  0.0  0:09.22 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
 3722 root       20   0 13616  1764  1368 R 99.0  0.0  0:09.20 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
 3724 root       20   0 13616  1780  1384 R 99.0  0.0  0:09.21 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
 3723 root       20   0 13616  1768  1372 R 99.0  0.0  0:09.21 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
 3725 root       20   0 13616  1780  1384 R 99.0  0.0  0:09.20 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size
 3730 root       20   0 13616  1768  1372 R 98.0  0.0  0:09.12 /opt/trafgen --cpp --dev eth1 --rand --num 0 -i udp_example01.trafgen --cpp --ring-size


пятница, 10 ноября 2017 г.

Отличные инженерные вакансии компании Cloudflare Inc

Всем привет! :)

Знаю, что меня читает много отличных инженеров! Поэтому предлагаю рассмотреть замечательную компанию, в которой очень много прекрасных инженерных позиций - Cloudflare. Полный список вакансий тут: https://www.cloudflare.com/careers/departments/

Если Вам нравится Linux, C, Go или Вам более близок фроентед - милости просим :) 

вторник, 7 ноября 2017 г.

Как сделать из Mac OS NAT сервер чтобы дать доступ в интернет через машину на Mac?

Я все буду делать в macOS High Sierra.

Включаем форвардинг в ядре:
sudo sysctl -w net.inet.ip.forwarding=1
Если внешний интерфейс (с интернетом) это en0, а внутренний, которому требуется дать интернет - en6, то сделать это так:
echo "nat on en0 from en6:network to any -> (en0)" > rules
sudo pfctl -f ./rules -e
Очистка правил так: 
sudo pfctl -d
Источник: https://roelant.net/2015/share-your-vpn-mac-el-capitan.html 

Создание загрузочного USB диска на Ubuntu

Отличный вариант - Etcher, https://etcher.io Не требует никаких низкоуровневых команд и все можно сделать из GUI.

воскресенье, 23 июля 2017 г.

Каталог работодателей, предлагающих хорошие вакансии, где требуется Linux

Всем привет!

Я довольно часто приватно получаю сообщения с просьбой порекомендовать того или иного работодателя, где можно будет заниматься сугубо Линуксом.

Быстрого и легкого ответа на вопрос мне найти не удалось и я решил привлечь дорогих читателей.

Собственно, прошу как работодателей, так и работющих в данных прекрасных компаниях делиться ими в комментариях и я буду по мере накопления данных переносить их в этот пост.

Смысла ограничивать географию не вижу :) Требование простое - на работе нужен хардкорный Linux и его отличное знание :)

вторник, 25 апреля 2017 г.

sflowtool compilation

Very very very simple:
cd /tmp
wget https://github.com/sflow/sflowtool/releases/download/v3.41/sflowtool-3.41.tar.gztar -xf sflowtool-3.41.tar.gz
cd sflowtool-3.41
./configure --prefix=/opt/sflowtool
make install
It's very useful toolkit for reading sFLOW dumps.

You could try to read sFLOW in pcap format:
/opt/sflowtool/bin/sflowtool -r sflow.pcap
Or you cal start it and it will listen on sFLOW port:
/opt/sflowtool/bin/sflowtool
Here you could find example of output:
startDatagram =================================
datagramSourceIP 127.0.0.1
datagramSize 696
unixSecondsUTC 1435146070
datagramVersion 5
agentSubId 100000
agent 192.168.122.162
packetSequenceNo 3175
sysUpTime 786000
samplesInPacket 1
startSample ----------------------
sampleType_tag 0:2
sampleType COUNTERSSAMPLE
sampleSequenceNo 27
sourceId 2:1
counterBlock_tag 0:2001
counterBlock_tag 0:2010
udpInDatagrams 5430
udpNoPorts 24321676
udpInErrors 0
udpOutDatagrams 8154
udpRcvbufErrors 0
udpSndbufErrors 0
udpInCsumErrors 0
counterBlock_tag 0:2009
tcpRtoAlgorithm 1
tcpRtoMin 200
tcpRtoMax 120000
tcpMaxConn 4294967295
tcpActiveOpens 119
tcpPassiveOpens 11
tcpAttemptFails 0
tcpEstabResets 10
tcpCurrEstab 2
tcpInSegs 225262
tcpOutSegs 263644
tcpRetransSegs 10
tcpInErrs 0
tcpOutRsts 1668
tcpInCsumErrors 0
counterBlock_tag 0:2008
icmpInMsgs 2694
icmpInErrors 0
icmpInDestUnreachs 0
icmpInTimeExcds 2690
icmpInParamProbs 0
icmpInSrcQuenchs 0
icmpInRedirects 0
icmpInEchos 0
icmpInEchoReps 4
icmpInTimestamps 0
icmpInAddrMasks 0
icmpInAddrMaskReps 0
icmpOutMsgs 0
icmpOutErrors 0
icmpOutDestUnreachs 12148804
icmpOutTimeExcds 247174
icmpOutParamProbs 12148797
icmpOutSrcQuenchs 0
icmpOutRedirects 0
icmpOutEchos 0
icmpOutEchoReps 0
icmpOutTimestamps 3
icmpOutTimestampReps 4
icmpOutAddrMasks 0
icmpOutAddrMaskReps 0
counterBlock_tag 0:2007
ipForwarding 2
ipDefaultTTL 64
ipInReceives 25451365
ipInHdrErrors 0
ipInAddrErrors 2
ipForwDatagrams 0
ipInUnknownProtos 0
ipInDiscards 0
ipInDelivers 24555065
ipOutRequests 12420612
ipOutDiscards 412852
ipOutNoRoutes 0
ipReasmTimeout 0
ipReasmReqds 0
ipReasmOKs 0
ipReasmFails 0
ipFragOKs 0
ipFragFails 0
ipFragCreates 0
counterBlock_tag 0:2005
disk_total 20091629568
disk_free 75268096
disk_partition_max_used 99.62
disk_reads 49609
disk_bytes_read 2410784768
disk_read_time 64008
disk_writes 71505
disk_bytes_written 2536456192
disk_write_time 1195352
counterBlock_tag 0:2004
mem_total 14447202304
mem_free 12821819392
mem_shared 0
mem_buffers 104521728
mem_cached 1174110208
swap_total 922742784
swap_free 922742784
page_in 1177603
page_out 1238504
swap_in 0
swap_out 0
counterBlock_tag 0:2003
cpu_load_one 0.130
cpu_load_five 0.350
cpu_load_fifteen 0.430
cpu_proc_run 0
cpu_proc_total 125
cpu_num 8
cpu_speed 3600
cpu_uptime 269214
cpu_user 923700
cpu_nice 0
cpu_system 308060
cpu_idle 2150608980
cpu_wio 307440
cpuintr 290
cpu_sintr 518020
cpuinterrupts 27964221
cpu_contexts 43373068
cpu_steal 15120
cpu_guest 0
cpu_guest_nice 0
counterBlock_tag 0:2006
nio_bytes_in 446691530
nio_pkts_in 7430121
nio_errs_in 0
nio_drops_in 0
nio_bytes_out 476011841
nio_pkts_out 6730531
nio_errs_out 0
nio_drops_out 0
counterBlock_tag 0:2000
hostname debian
UUID 5b-5a-d7-11-9e-5b-7c-48-bf-5b-cb-41-78-cd-a0-2b
machine_type 3
os_name 2
os_release 3.16.0-4-amd64
endSample   ----------------------
endDatagram   =================================
startDatagram =================================
datagramSourceIP 127.0.0.1
datagramSize 160
unixSecondsUTC 1435146073
datagramVersion 5
agentSubId 100000
agent 192.168.122.162
packetSequenceNo 3176
sysUpTime 789000
samplesInPacket 1
startSample ----------------------
sampleType_tag 0:2
sampleType COUNTERSSAMPLE
sampleSequenceNo 27
sourceId 0:14
counterBlock_tag 0:1005
ifName eth5
counterBlock_tag 0:1
ifIndex 14
networkType 6
ifSpeed 10000000000
ifDirection 1
ifStatus 3
ifInOctets 445441800
ifInUcastPkts 7424030
ifInMulticastPkts 4294967295
ifInBroadcastPkts 4294967295
ifInDiscards 0
ifInErrors 0
ifInUnknownProtos 4294967295
ifOutOctets 126
ifOutUcastPkts 3
ifOutMulticastPkts 4294967295
ifOutBroadcastPkts 4294967295
ifOutDiscards 0
ifOutErrors 0
ifPromiscuousMode 0
endSample   ----------------------
endDatagram   =================================

четверг, 23 марта 2017 г.

Установка ipt_netflow на Ubuntu 14.04

Ставим зависимости:
sudo apt-get install -y iptables-dev locate pkg-config make gcc git dkms libsnmp-dev snmpd
Собираем:
cd /tmp
wget https://github.com/aabc/ipt-netflow/archive/v2.2.tar.gz
tar -xf v2.2.tar.gz
cd ipt-netflow-2.2/
./configure
make all
sudo make install
sudo dkms build ipt-netflow/2.2
sudo dkms install ipt-netflow/2.2
Запуск:
sudo modprobe ipt_NETFLOW protocol=9 destination=127.0.0.1:2055 inactive_timeout=10 hashsize=65535 maxflows=4000000 active_timeout=15
И направляем трафик:
sudo iptables -I INPUT -i lo -j NETFLOW

четверг, 2 марта 2017 г.

How to install Apache Kafka on Ubuntu 14.04

Install JRE:
sudo apt-get update
sudo apt-get install default-jre

Install Zoo Keeper:
sudo apt-get install zookeeperd

Restrict it to only localhost:
sudo vim /etc/zookeeper/conf/zoo.cfg 

And fix line:
clientPortAddress=127.0.0.1

And apply changes:
sudo service zookeeper restart
Then we need to download pre-compiled Kafka binaries and install them.

wget 'http://www-eu.apache.org/dist/kafka/0.10.2.0/kafka_2.11-0.10.2.0.tgz' -Okafka_2.11-0.10.2.0.tgz
sudo tar -xf kafka_2.11-0.10.2.0.tgz -C /opt
cd /opt/kafka_2.11-0.10.2.0/

Create user for Kafka:
sudo useradd kafka -m 

Change permissions:
sudo chown -R kafka:kafka /opt/kafka_2.11-0.10.2.0/

Create folder for kafka logs:
sudo mkdir /tmp/kafka-logs
sudo chown kafka:kafka /tmp/kafka-logs
Move configuration to proper place:
sudo mkdir /etc/kafka
sudo cp config/server.properties /etc/kafka

Create Kafka Upstart script:
sudo vim /etc/init/kafka.conf

 With following content:
description "Kafka Broker"
start on runlevel [2345]
stop on starting rc RUNLEVEL=[016]
respawn
respawn limit 2 5
env HOME=/etc/kafka
env KAFKA_HOME=/opt/kafka_2.11-0.10.2.0
umask 007
kill timeout 300
pre-start script
    #Sanity checks
    [ -r $HOME/server.properties ]
end script
setuid kafka
setgid kafka
exec $KAFKA_HOME/bin/kafka-server-start.sh $HOME/server.properties

And finally start Kafka:

суббота, 28 января 2017 г.

Как использовать OpenVZ с ZFS?

Прошу любить и жаловать прекрасный проект, которые открывает возможность квотировать использование айндов (число файлов) в дополнение к квотированию лимита на размер дисков при использовании ZFS вместе с OpenVZ: https://github.com/FastVPSEestiOu/zfs-quota

понедельник, 26 декабря 2016 г.

Как подсветить в Git реальные правки?

Очень часто размер правок в пределах одной строки очень незначительный и если строка достаточно длинна - можно при выполнении git diff пропустить ошибку, в этом случае я рекомендую использовать специальный флаг для git diff --color-words, который приедет к тому, что git подсветит цветом конкретные изменения в пределах одной строки вместо отображения оригинальной строки и новой :) 

воскресенье, 4 декабря 2016 г.

Правка файла на удаленном сервере

Как часть проекта FastNetMon мне часто приходится редактировать файлы на машине, которая не может собрать проект (при всем моем желании!).

Поэтому машина, которая используется для правки кода не совпадает с той, которая его собирает.

Как же жить в данной ситуации? Выручает, конечно, vim. Но он не так удобен, когда приходится проводить массовый рефакторинг кода и копировать / переносить очень большие блоки по куче файлов.

В этом случае я использую Sublime и имею один и тот же репозиторий на двух машинах. Но это негибко по множеству причин - ошибка и приходится делать повторный коммит уже с машины сборки где исправлять баг.

Что же делать? Использовать Sublime плагин: https://wbond.net/sublime_packages/sftp

Он дает огромную гибкость и удобство! Для его установки Вам нужно сначала установить Package Control плагин для Sublime, а потом поставить сам  плагин SFTP.

Далее кейсы интеграции отличаются, плагин очень гибок. Я остановился на подходе, когда копия проекта есть на моей клиентской машине и все изменения я заливаю на удаленную машину по клику мыши.

В этом случае настройка очень проста, создайте папку (в нее будет скопирован по sftp удаленный проект), откройте её, по меню правой кнопки маши выберите map to remote и далее укажите реквизиты для удаленной машины и путь, где размещается проект, после этого выбирайте Download и ждите, пока проект сольется на вашу машину.

После этого после правки файла достаточно тыкнуть Upload в контекстном меню и все, иcправленный файл зальется на удаленную машину! :)

воскресенье, 6 ноября 2016 г.

Немного о провайдерах в Англии

Всем привет!

Продолжаю серию не особо связанных с линуксом постом, скорее больше о жизни в Англии.

В Англии довольно интересная ситуация, для де-монополизации рынка некоторое время назад гос-во де-монополизировало рынок и разбило крупного местного монополиста BT на оператора сети и непосредственно компанию, которая продает интернет.

Первая стала называться https://www.openreach.co.uk и её суть в том, что любой другой провайдер может получить доступ к клиенту (т.н. последняя миля) не прокладывая своих каналов, а арендую их у BT.

Например для моего района список провайдеров, которые я могу подключить через этот самый Open Reach - вот такой:

Кроме этого, есть еще более продвинутые ребята,  https://www.ifnl.net идея та же самая, но технология уже немного серьезнее - современный FTTH - оптика до квартиры! :)

Список провайдеров около десятка-полтора, большая часть - это провайдера для бизнеса, из провайдеров. Вот их список: https://www.ifnl.net/availableisps Сам я использую: seethelight.co.uk

Если говорить о тарифах, то у меня тариф 25 фунтов в месяц (смотрите по курсу ЦБ) за 60 мегабит без каких-либо ограничений в принципе. 

Еще стоит отметить, что по отзывам друзей и моему личному впечатлению, это 60 правда гарантированных мегабит.

Я реально вижу эту скорость например на 2ip.ru и при скачивании файлов.