Программирование

Обзор В предыдущей статье мы написали программу, использующую программу XDP для DROPPING всех пакетов. Легкое руководство по XDP Теперь давайте напишем программу, использующую eBPF Map, чтобы подсчитать количество DROPPED пакетов. На этот раз мы также поговорим о том, как быстро ознакомиться с XDP и eBPF Map. Поэтому я опущу подробные объяснения по eBPF и описания видов Map, которые не используются. Настройка окружения Предполагается использование Ubuntu 22.04. Рекомендуется попробовать реализовать это в виртуальной машине для управления сетевым интерфейсом с помощью XDP.
Что я сделал? Я внедрил OpenDKIM в заметках по добавлению OpenDKIM к Postfix + DMARC, но захотел добавить поддержку ARC подписей и переключился на arcmilter. arcmilter — это milter для выполнения ARC подписей, но он также может выполнять DKIM подписания. arcmilter написан на языке Go. Он написан, или точнее, я его написал…? arcmilter доступен в следующем репозитории. github.com/masa23/arcmilter rpm и deb пакеты находятся в разделе Release, так что вы можете использовать их или собрать из исходников.
Обзор Это статья о быстром знакомстве с XDP. Поэтому я опущу подробные объяснения, такие как eBPF. XDP — это фреймворк для обработки пакетов на самом раннем этапе сетевого стека ядра Linux, который позволяет непосредственно вставлять программы в NIC (сетевую карту) с помощью eBPF. XDP позволяет обрабатывать пакеты быстрее, чем фильтры, такие как iptables, поскольку позволяет манипулировать пакетами на самом раннем этапе сетевого стека ядра Linux. В целом, можно считать, что программу XDP можно прикрепить к интерфейсу NIC, используя eBPF.
При отладке программы, собранной с помощью gcc на GDB в FreeBSD, может возникнуть ошибка, если формат отладочной информации отличается. Запись на этот случай. Не удается При отладке программы, собранной с помощью gcc на GDB в FreeBSD, может возникать ошибка отсутствия символов. # gcc -g test.c # gdb a.out Удачно Если настроить использование отладочной информации в формате DWARF-2, в gdb начнут отображаться символы. # gcc -g -gdwarf-2 test.c # gdb a.out
Контент, перенесенный из Qiita. Чтобы указать формат даты в Golang, используется метод Format из пакета time, но необходимо было сделать формат для graphite-api. Однако, по какой-то причине были среды, где это работало, и среды, где это не работало, и я потратил время впустую. В конечном итоге, похоже, это была ошибка? Да, она была исправлена с обновлением версии golang. Указание формата Указанный формат HH:SS_YYYYMMDD поэтому, для Golang это будет Format("15:04_20060102") Тестовый код package main import ( "fmt" "time" ) func main() { now := time.
Это контент, перенесенный из Qiita. При программировании на языке Go в Vim можно использовать синтаксис, а также утилиты gofmt и goimports, что позволяет упростить кодирование. Тем не менее, статьи, написанные другими авторами, показались мне несколько запутанными, поэтому я решил объединить информацию для удобства. Установка golang OS X $ brew install golang CentOS $ sudo yum install golang --enablerepo=epel Ubuntu $ sudo apt install golang Создание директории для GOPATH $ mkdir $HOME/go Настройка переменных окружения в .