← All posts tagged Linux

oxpa
Linux из епеля для рхел 7 убрали libmaxminddb, потому что его перетащили в базовую поставку.
Теперь во всяких rocky, alma, amazon2 linux'ах не будет всяких mod geoip.

Особенно радует тут amazon2. Вот в оракле подумали и в oel 7 либа давно идёт в базовой поставке. А в амазоне — нет. Потому что пошли вы к чёрту, вот почему.
oxpa
Linux сначала гугл скинул патч, чтобы можно было делать bind(), а ядро выбирало адрес и порт только непосредственно в момент connect'а patchwork.ozlabs.org
Это нужно, чтобы можно было использовать 1 порт для разны подключений (4 tuple socket всё равно уникальный получается)
А потом пару патчей, которые меняют логику выделения портов для bind() и connect(). Чтобы если у вас есть приложение, которое использует кучу портов, остальные всё равно могли работать (хттп прокси + днс клиент, например) git.kernel.org
последние патчи вносят интереную регрессию: если у вас local port range 5000-64999, то у вас доступно 60 тысяч портов. Но когда вы в приложении используете около половины — всё начинает дико тупить. Потому что ядро сначала проверяет все чётные порты (для connect'a), а только потом лезет в нечётные (по умочанию "забиты" под bind()). Проверка 30 тысяч портов долгая. Если соединений много, то очень долгая. То есть фактически, больше половины портов лучше не использовать.
Можно чуть схитрить и использовать для части соединений connect(), а для части — bind(). Теоретически, такой подходи поделит соединения между чётными и нечётными и можно будет использовать больше портов без тормозов.
Но есть нюанс: если у вас включена опция ip_bind_address_no_port при bind'е, то ядро для таких соединений будет использовать логику от connect'а. И значит, только чётные порты и 30 тысяч проверок перед переходом на нечётный диапазон.
Шах и мат: откатываем ядро на начало четвёртой ветки без второй серии патчей и живём радостно. Ну или собираем своё ядро, где патчи ревертнуты, если в ядре есть ещё что-то нужное вам.
Гугл в этом смысле молодец: наверняка сам использует не то ядро, которое кормит остальным >_<
oxpa
Linux
/sbin/sysctl net.ipv4.conf.$iface.disable_policy=1
сука, три часа вчера тупил. На одном сервере без этого работает, на другом — нет.
oxpa
Linux почти 15 лет назад я грузил свой п4 с опциями ядра "noapic nolapic". Я уже смутно помню зачем и что вообще эти опции делают. Но этиже опции "чинят" мне зависания на ноуте сегодня.
oxpa
Linux давеча узнал удобный способ грепать процессы: ps ax | grep [p]rogramm. Сам grep в результаты не попадает при этом.
oxpa
Linux TIL хотя на самом деле даже не сегодня, а вчера:
lwn.net
lwn.net
lwn.net

Если коротко, в ядре можно подебажить кучу всего с помощью готовой инфраструктуры. В принципе, куда удобней простых printk по коду.
oxpa
Linux Что-то я никогда не думал про такое: wiki.strongswan.org
Если коротко, то мужики ловят пакеты с помощью iptables nflog, а потом tcpdump используют только чтобы показать трафик с этого nflog.
Шансов сломать всё в процессе — сколько хотите. Но прям like
oxpa
Linux выяснил, что моя вайфай карточка имеет 4 очереди. Пришлось к каждой очереди присандалить с помощью tc свою очередь, в каждую очередь — свой фильтр (он 1, на самом деле, просто фильтрует в разных очередях). Выхлоп tc -s class show dev wlan0 сейчас — сплошное месиво. Не представляю как с этим правильно работать...