Данная поделка является попыткой реализации VPN туннеля точка-точка через WebSocket, для того чтобы туннель можно было поднимать за ReverseProxy и чтобы трафик был не отличим от HTTPs.
По умолчанию никакого шифрования нет, но можно посадить туннель за ReverseProxy и использовать шифрование с помощью SSL/TLS.
Так же программа слушает на :8080
, порт указывается в коде(на данный момент).
Перед сборкой установить зависимости.
git clone https://github.com/Kudes1/websocketTunnel.git
cd websocketTunnel
go mod tidy
go build -o websockettunnel
Перед запуском программы требуется создать tun интерфейс в системе и указать его название в конфигурационном файле config.yaml
, так же будет браться MTU от tun адаптера.
Пример создания туннеля:
ip tuntap add dev tun55 mode tun
ip addr add 192.168.55.1/24 dev tun55
ip link set tun55 up
Убедитесь что в папке с исполняемым файлом есть config.yaml
Для проксирования я использовал Caddy с перенаправлением пути /vpn на 127.0.0.1:8080 Вот пример Caddyfile:
example.net:443 {
reverse_proxy /vpn 127.0.0.1:8080 {
transport http {
versions 1.1
compression off
}
}
tls [email protected]
}
Программа работает из шела, как службу не пытался запускать, когда-нибудь в планах. По замерам iperf3 максимум удавалось получить 70-80Mbit/s.