Documentation
¶
Overview ¶
Package transport собирает параметры QUIC и TLS для обеих сторон туннеля.
TLS здесь выполняет роль транспортной обёртки, а не источника доверия: сервер поднимается на самоподписанном сертификате, а личность пира проверяется рукопожатием Noise по закреплённому статическому ключу. Так мы обходимся без PKI и не зависим от срока действия сертификата.
Index ¶
Constants ¶
const DefaultServerName = "localhost"
DefaultServerName подставляется в сертификат, если имя не задано. Нейтральное значение лучше говорящего: сертификат не виден пассивному DPI (в QUIC он едет под ключами TLS 1.3), но выдаст себя при активном пробинге, когда сервер опрашивают напрямую.
const KeepAlivePeriod = 10 * time.Second
KeepAlivePeriod - период PING-кадров QUIC, удерживающих NAT-биндинг.
const MaxIdleTimeout = 30 * time.Second
MaxIdleTimeout - через сколько тишины QUIC признаёт соединение мёртвым.
Variables ¶
This section is empty.
Functions ¶
func ClientTLS ¶
ClientTLS отключает проверку сертификата осознанно: доверие строится не на цепочке X.509, а на статическом ключе сервера, закреплённом в конфиге клиента. Без верного ключа рукопожатие Noise не сойдётся, и подменивший TLS-сертификат посредник дальше не пройдёт.
serverName уезжает в ClientHello как SNI - открытым текстом, доступным любому DPI. Пустое значение означает ClientHello без SNI: в дикой природе такого почти не бывает, и само по себе это заметный признак.
func QUICConfig ¶
QUICConfig - общие параметры соединения для клиента и сервера.
Types ¶
This section is empty.