そんなレベルで中継サーバー用意するとか可能なのか?

クライアントからサーバーにアクセスすれば穴が開くんだよ。
そうじゃないとサーバーからの応答も受信出来ないだろ。

その穴に向かってクライアント同士がパケットを
送る。それだけ。
TCP はセッションがあるので、空いた穴に向かって送ってクライアントが受信してもセッションがないので不正パケットとして捨てられてしまう。
UDPはセッションレスなのでアプリまで届く。あとはよろしく頑張る。