STUNサーバのインストール

出典: Asterisk works Wiki
目次 |
はじめに
Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs) (STUN) はRFC3489で規定されており、アプリケーションにパブリック・インターネットとの間にあるNATやファイアウォールの存在やタイプを発見することを許可する軽量プロトコルです。また、STUNはアプリケーションにNATによって割り当てられたパブリックIPアドレスを決定する能力を提供します。STUNは多くの既存NATと共に動作し、それらから特別の振る舞いを要求しません。結果として、STUNは種々様々のアプリケーションが既存のNATインフラ越しに動作することを可能にします。
STUNはNATに関連した問題のための万病薬ではありません。NATを越えて入って来るTCP接続を可能にしません。大企業において一般的なSymmetric NAT(以下で定義)を越えて入って来るUDPパケットを可能にしません。同じNATの背後にある仲間と通信するアドレスを取得するために使用される場合、STUNは動作しません。
| NATタイプ | 定義 |
|---|---|
| Full Cone | 同じ内部のIPアドレスおよびポートからのリクエストがすべて同じ外部のIPアドレスおよびポートに写像されるNATです。更に、写像された外部のアドレスへパケットを送信することにより、どんな外部ホストでも内部ホストにパケットを送信することができます。 |
| Restricted Cone | 同じ内部のIPアドレスおよびポートからのリクエストがすべて同じ外部のIPアドレスおよびポートに写像されるNATです。Full Coneと異なり、内部ホストが以前にIPアドレスXへパケットを送信したことがある場合に限り、(IPアドレスXを持つ)外部ホストは内部ホストへパケットを送信することができます。 |
| Port Restricted Cone | Restricted Coneに似ていますが、制限にポート番号を含んでいます。特に、内部ホストが以前にIPアドレスXおよびポートPへパケットを送信したことがある場合に限り、外部ホストはソースIPアドレスXおよびソースポートPを用いて内部ホストへパケットを送信することができます。 |
| Symmetric | 同じ内部のIPアドレスおよびポートから特定の目的IPアドレスおよびポートへのリクエストがすべて同じ外部のIPアドレスおよびポートに写像されるものです。同じホストが同じソース・アドレスおよびポートを用いても、異なる目的地へパケットを送信する場合は、異なる写像が使用されます。更に、パケットを受信する外部ホストだけが内部ホストにUDPパケットを返信することができます。 |
手順
使用するIPの準備
- /etc/sysconfig/network-scriptsに「ifcfg-eth0:1」、「ifcfg-eth0:2」作成
- ネットワークの再起動
$ /etc/rc.d/init.d/network restart
使用するポートの準備
- ルール確認
$ iptables -L
- 拒否されている場合はACCEPT設定を追加して、サービスを再起動
$ service iptables save $ service iptables restart
STUNサーバのインストール
- stun.zipを/usr/local/stunに解凍
$ cd /usr/local/stun $ unzip stun.zip $ rm stun.zip
- ビルド
$ cd /usr/local/stun $ make server
- スクリプトstundを環境に合わせて編集
$ cd /usr/local/stun $ vi stund
プログラムserverに指定できるオプションは以下の通り (-H、-AはF/Wの内側にSTUNサーバを配備する場合に利用)
| オプション | 内容 |
|---|
- サービスに登録
$ cd /usr/local/stun $ chmod a+x stund $ cp stund /etc/rc.d/init.d $ ln -s /etc/rc.d/init.d/stund /etc/rc.d/rc0.d/K19stund $ ln -s /etc/rc.d/init.d/stund /etc/rc.d/rc1.d/K19stund $ ln -s /etc/rc.d/init.d/stund /etc/rc.d/rc2.d/S81stund $ ln -s /etc/rc.d/init.d/stund /etc/rc.d/rc3.d/S81stund $ ln -s /etc/rc.d/init.d/stund /etc/rc.d/rc4.d/S81stund $ ln -s /etc/rc.d/init.d/stund /etc/rc.d/rc5.d/S81stund $ ln -s /etc/rc.d/init.d/stund /etc/rc.d/rc6.d/K19stund
確認
- サーバ起動
$ service stund start
- 別PCよりポートの開き確認
$ nmap -sU -p 3478,3479 xxx.xxx.xxx.xxx $ nmap -sU -p 3478,3479 xxx.xxx.xxx.xxx
