udp-holepunch - Python script for UDP holepunching using a webserver. With an example of SSH using this and sctp-echo.

git clone https://benconnors.ca/git-repos/udp-holepunch

About | Log | Files | Refs

commit e524b8196a06fbaab84356b8b748e6c368aeb201
parent 98624cf9da2804b27566a38c51dbf840c76faad5
Author: Ben Connors <benconnors@outlook.com>
Date:   Fri, 11 Sep 2026 10:07:20 -0400

Use absolute link in README

Diffstat:
MREADME.md | 2+-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md @@ -81,7 +81,7 @@ client SSH --A-> client socat --B-> server socat --C-> server SSH ``` Connections A and C are both entirely reliable: A uses file descriptors and C uses TCP. Connection B, however, uses UDP and is not reliable. The result is that the whole connection `client SSH -> server SSH` is unreliable, yet since SSH is designed to run over TCP it has no facilities for dealing with this. At the first lost, corrupted, etc. packet the SSH session will be terminated. -We fix connection B using SCTP-over-UDP via [sctp-echo](/cgit/sctp-echo). For the reasons described there, we require the use of [usrsctp](https://github.com/Kurento/libusrsctp) rather than the kernel implementations of SCTP. +We fix connection B using SCTP-over-UDP via [sctp-echo](https://benconnors.ca/git/sctp-echo). For the reasons described there, we require the use of [usrsctp](https://github.com/Kurento/libusrsctp) rather than the kernel implementations of SCTP. The two files `ssh_holepunch_client.py` and `ssh_holepunch_server.py` implement the two sides of this. We use `ssh_holepunch_server.py` just as `udp_holepunch.py server`, except it will open a connection to the SSH server once holepunching has been established.