In our discussion yesterday, @bradfitz asked if weak pointers made it possible to maintain a map of expensive derived information about something without preventing the GC of that something. Here is a worked example of how weak pointer enables that:
var cache struct { mu sync.Mutex m map[weak.Pointer[Foo]]*derived } func init() { cache.m = make(map[weak.Pointer[Foo]]*derived)
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 | |
| } |
| 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 |
| #!/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) |
| # /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, и цензол получает настоящие данные этого сайта.
Данный гайд написан новичком для новичков. Я в гайде
| { 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 |
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 │
│ │ │
│ └─────────────┘
| 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") |