__ ______ ____ ___ ____ ____ ______ / / / / __ / __ __ ____ / __ / __ / ____/ / / / / / / / /_/ /_/ // __ / /_/ / /_/ / / / /_/ / /_/ / ____/ __// /_/ / _, _/ ____/ /___ ____/_____/_/ /____/__, /_/ |_/_/ ____/ /____/
Этот проект во многом вдохновлен udp2raw.
Туннель, который превращает UDP-трафик в зашифрованный трафик gRPC/TCP, помогает вам обойти межсетевые экраны UDP (или нестабильную среду UDP). Предположим, что ваш UDP заблокирован, имеет QOS или просто плохо поддерживается.
Извлеките образ dockerhub
docker pull mrjoshlab/udp2grpc: последний
Загрузите двоичный выпуск с https://github.com/mrjosh/udp2grpc/releases.
Предположим, что IP-адрес вашего сервера — 127.0.0.1, а домен вашего сервиса — example.com.
# генерировать для конкретного IP-адреса utg gen-certificates --dir ./cert --ip 127.0.0.1# генерировать для конкретного доменного имени utg gen-certificates --dir ./cert --domain example.com# генерировать как для домена, так и для iputg gen -сертификаты --dir ./cert --domain example.com --ip 127.0.0.1
utg genkey# вывод# R1kviSImDxxRS1AnMDUrSy0xVg9XFzhDCyszGSdAX04=
utg Peer -n Джошуа-MBP -r 127.0.0.1:51820
выход
server side config: ------------------------------------------------------------- ... peers: - name: Joshua-MBP privatekey: LlRIVyEqVxtZORxdIgoiMTg6UxIsTCBYRC4/K0U4VjM= remote: 127.0.0.1:51820 available_from: - 0.0.0.0/0 ... client side config: ------------------------------------------------------------- client: privatekey: LlRIVyEqVxtZORxdIgoiMTg6UxIsTCBYRC4/K0U4VjM= remote: '{{ server ip address }}' ...
Конфигурационный файл на стороне сервера
сервер: частный ключ: "{{ супер-безопасный-сервер-частный-ключ }}" слушать: 0.0.0.0:52935 tls:insecure: falsecert_file: ./cert/server.crtkey_file: ./cert/server.key сверстники: - имя: "PeerName" личный ключ: "{{ super-secure-client-private-key }}" удаленный: "127.0.0.1:51820"available_from: - 192.168.1.0/24
Конфигурационный файл на стороне клиента
client: Privatekey: "{{ super-secure-client-private-key }}" слушать: 0.0.0.0:51820 удаленный: 127.0.0.1:52935 постоянныйKeepalive: 30 tls:insecure: falsecert_file: ./cert/server.crt
Предположим, что ваш серверный домен example.com и у вас есть служба, прослушивающая udp-порт 51820. Если вы хотите запустить сервер без tls, используйте флаг --insecure
для клиента и сервера.
# Запуск на стороне сервера: utg server --config-file server.yaml# Запуск на стороне клиента: utg client --config-file client.yaml
версия: '3.7'services: # init-container # генерируем сертификаты для сервера и клиента gen-сертификаты: изображение: mrjoshlab/udp2grpc: последняя команда: - "gen-certificates" # IP-адрес сервера - "--ip" - "127.0.0.1" # каталог сертификатов - "--dir" - "/cert"volumes: - "$PWD/серт/:/серт" # серверный контейнер udp2grpc udp2grpc-сервер: изображение: mrjoshlab/udp2grpc:latestports: - Команда «52935:52935/tcp»: - "сервер" - "--config-file" - "/config/server.yaml" тома: - "$PWD/cert/:/cert" - "$PWD/server.yaml:/config/server.yaml"перезапуск: если не остановлен, зависит_он: gen-certificates: условие: service_completed_successfully # клиентский контейнер udp2grpc udp2grpc-клиент: изображение: mrjoshlab/udp2grpc:latestports: - Команда «51820:51820/udp»: - "клиент" - "--config-file" - "/config/client.yaml" тома: - "$PWD/cert/server.crt:/cert/server.crt" - "$PWD/client.yaml:/config/client.yaml"перезапуск: если не остановлен, зависит_он: gen-certificates: условие: service_completed_successfully
Спасибо, что решили внести свой вклад в проект UDP2gRPC!
UDP2gRPC — это программное обеспечение с открытым исходным кодом, лицензированное по лицензии MIT.