Skip to content

Instantly share code, notes, and snippets.

View Snawoot's full-sized avatar

Snawoot

View GitHub Profile

From LinuxBender @ HN

Create /etc/modprobe.d/nf_conntrack.conf:

options nf_conntrack expect_hashsize=256400 hashsize=256400

And then in /etc/sysctl.conf:

#!/bin/sh
set -e
require() {
if ! command -v "$1" > /dev/null 2>/dev/null ; then
>&2 echo "$1 utility not found!"
exit 1
fi
}
@Snawoot
Snawoot / haproxy.cfg
Last active December 3, 2024 18:22
dumbproxy HMAC auth on HAProxy 3.0+
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
@Snawoot
Snawoot / rsaopt.py
Created October 1, 2024 18:14
Utility which optimizes secret exponent of RSA key for faster power calculation
#!/usr/bin/env python
import sys
from Crypto.PublicKey import RSA
from fractions import gcd
if __name__ == '__main__':
if len(sys.argv) != 2:
print >> sys.stderr, "Usage: %s <RSA privatekey file>" % sys.argv[0]
exit(2)
@Snawoot
Snawoot / openvswitch-ipsec.service
Last active March 16, 2024 21:14
Fixes for openvswitch-ipsec to make it work on recent Ubuntu
# /lib/systemd/system/openvswitch-ipsec.service
[Unit]
Description=Open vSwitch IPsec daemon
Requires=openvswitch-switch.service
After=openvswitch-switch.service
[Service]
Type=forking
PIDFile=/run/openvswitch/ovs-monitor-ipsec.pid
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \

Сегодня 12 августа 2023 года

Метод, описанный в данной статье, создан для борьбы с китайским файерволом, который, начиная с 2019 года, учился блокировать зашифрованный трафик (протокол Shadowsocks) на основе анализа длины первого пакета соединения и энтропию его полезной нагрузки. Более подробно про этот метод блокировки описан в статье Роскомсвободы: https://roskomsvoboda.org/post/chinese-firewall/.

Метод XTLS-Reality отличается от других методов обхода блокировки тем, что определение свой/чужой сервером Xray происходит на этапе так называемого TLS-рукопожатия, когда клиент и сервер обмениваются сообщениями ClientHello. Подробнее про TLS-рукопожатия написано здесь: https://tproger.ru/articles/tls-handshake-explained/. Так вот, когда цензор стучится в этот сервер и пытается методом active probing проверить сервер, последний отправляет цензора на совершенно реальный и безобидный сайт, поддерживающий TLS1.3, и цензол получает настоящие данные этого сайта.

Данный гайд написан новичком для новичков. Я в гайде

@Snawoot
Snawoot / exclude_routes.sh
Created August 29, 2023 11:29
exclude IP address from wireguard routes
{ ipcalc -j -d 0.0.0.0-167.235.232.135 ; ipcalc -j -d 167.235.232.137-223.255.255.255 ; } | jq -r -s 'map(.DEAGGREGATEDNETWORK) | flatten | join(",")'
0.0.0.0/1,128.0.0.0/3,160.0.0.0/6,164.0.0.0/7,166.0.0.0/8,167.0.0.0/9,167.128.0.0/10,167.192.0.0/11,167.224.0.0/13,167.232.0.0/15,167.234.0.0/16,167.235.0.0/17,167.235.128.0/18,167.235.192.0/19,167.235.224.0/21,167.235.232.0/25,167.235.232.128/29,167.235.232.137/32,167.235.232.138/31,167.235.232.140/30,167.235.232.144/28,167.235.232.160/27,167.235.232.192/26,167.235.233.0/24,167.235.234.0/23,167.235.236.0/22,167.235.240.0/20,167.236.0.0/14,167.240.0.0/12,168.0.0.0/5,176.0.0.0/4,192.0.0.0/3

Poor Man's Global Traffic Manager

Sometimes we need to add redundancy to some service or server which happen to be a public-facing entry point of our infrastructure. For example, imagine we want to add a high availability pair for a load balancer which sits on the edge of network and forwards traffic to alive backend servers.

                                             ┌─────────────┐
                                             │             │
                                      ┌─────►│  Backend 1  │
                                      │      │             │
                                      │      └─────────────┘
@Snawoot
Snawoot / remote.conf
Created July 10, 2022 13:08
syslog-ng config for nice remote logging. place it into /etc/syslog-ng/conf.d/remote.conf
template remote {
template("${ISODATE} ${LEVEL} ${MSGHDR}${MESSAGE}\n");
};
destination d_sorted {
file(
"/var/log/remote/${PROGRAM}/${C_YEAR}_${C_MONTH}_${C_DAY}_${C_HOUR}.log"
create-dirs(yes)
template(remote)
time_zone("UTC")
@Snawoot
Snawoot / tanos.sh
Last active August 23, 2022 04:22
Halves old logs
#!/bin/bash
set -euo pipefail
treshold=${HIGH_WATER_PCT:-85}
cleanup_dir=${DIR:-/var/log/remote/}
fraction=${DELETE_FRACTION:-0.5}
(
if ! flock -n 9 ; then