TeamSpeak3でTSDNSを使用せずにSRVレコードを使用する


TSDNS便利ですよね

複数のバーチャルサーバを起動してる際に、ポート番号を入力せずにTeamSpeak3サーバに接続可能にする技術です。
勿論デフォルトポートの9987は省略可能ですが、その他のポート番号も省略可能にしてしまいます。

// TSDNS未使用
example.com:9987 -> 12.34.56.78:9987
example.com:9989 -> 12.34.56.78:9988
example.com:9990 -> 12.34.56.78:9989
exmaple.com:9991 -> 12.34.56.78:9990
exmaple.com:9992 -> 12.34.56.78:9991

// TSDNS使用
1st.example.com -> 12.34.56.78:9987
2nd.example.com -> 12.34.56.78:9988
3rd.example.com -> 12.34.56.78:9989
4th.example.com -> 12.34.56.78:9990
5th.example.com -> 12.34.56.78:9991

基本的にTCPの41144番ポートでの通信を許可し、ホスト名等の設定をした上でTSDNSを起動すれば、TeamSpeak3クライアントでポート番号を入力せずに接続できるという訳です。

Which ports does the TeamSpeak 3 server use?


何が問題か

  • TSDNS自体を起動するのが面倒
  • 新たにポート開けてセキュリティリスクを増やしたくない
  • リソースが無駄
  • えとせとらえとせとら

で、DNSの拡張仕様であるSRVレコードを使用しましょう!というお話。
TeamSpeak社も公式でサポートしています。 わざわざ無駄なサービス起動せずに済むね。

Does TeamSpeak 3 support DNS SRV records?


SRVレコードの設定方法

設定する前に、そもそもSRVレコード is 何という。
細かく仕様等を読んでいないので曖昧ですが、各レコードに優先順位付けが出来たり、特定のサービスが特定のポートを使用しているといった情報を返すことが可能になるアレらしいです。 どれ。

上記のTeamSpeak3 KnowledgebaseにあるSRVレコードサポート云々ですが、見た限り2通り方法があるみたいです。

  • SRVレコードをTSDNS宛にし、TSDNSに解決を任せる
  • SRVレコードのみで完結させる

1番目の方法は凄い無駄な気がするので、何も考えずに2番めの方法を試してみます。

今回の環境

Server : TeamSpeak3 Server 3.0.11.1 Win64 (192.168.0.200:9988)
Client : TeamSpeak3 Server 3.0.16 Win64 (192.168.0.100)

とりあえず、レンタルDNSサーバを使用している方はコントロールパネルにログイン。
BINDとかのDNSサーバを自前で運用している方ならゾーンファイルをお好きなエディタでオープン。

レンタルDNS人は適当に設定

DNS Setting

BINDの人も適当に設定します

_ts3._udp.teamspeak.example.com. IN SRV 0 0 9988 example.com.
                                 IN A            192.168.0.200

各自設定を適応後、DNSが更新されるまで待った後にテストしてみてください。
TeamSpeak社によると名前解決の順番は以下の通りらしいので、Aレコードで解決している場合に比べ、理論上はレスポンスが良くなると思います。

  1. _ts3 SRV レコード
  2. _tsdns SRV レコード
  3. TSDNS
  4. DNS