カテゴリ:ネットワーク( 53 )
RTXルータでパケットフィルタのログを確認する
ヤマハのRTX1100ルータでフィルタリングの設定をしたのですが、どうもうまく行ってないような感じがするので、フィルタされたかどうかログを確認しようと思いました。
show log コマンドでログが確認できますが、デフォルト設定ではパケットフィルタされた情報は残りません。

RTXには以下の3つのログタイプがあります。

NOTICE : パケットフィルタリングで、落としたパケットの情報
INFO : 通常の情報(デフォルトで有効)
DEBUG : 障害解析などの為に、ISDNやPPPのデバッグ情報



今回はパケットフィルタされた情報が欲しいので以下のように NOTICE タイプのログを有効にします。

syslog notice on


これで通信を試しログを表示して見ました。


show log

1980/03/13 15:57:20: LAN1 Rejected at OUT(10000) filter: TCP 10.10.210.23:110
> 192.168.0.10:1374
1980/03/13 15:57:23: LAN1 Rejected at IN(5000) filter: UDP 192.168.0.10:138 >
192.168.37.255:138
1980/03/13 15:57:23: LAN1 Rejected at OUT(10000) filter: TCP 10.10.210.23:110
> 192.168.0.10:1374



フィルタされていると上記のようなログが出ます。

ログの削除は下記コマンドで出来ます。

clear log


調査が終わったら、下記コマンドでログの出力を停止しておくのが良いでしょう。

no syslog notice


なお、RTXルータはリセットすると日時までリセットされるようなので、リセット後は日時の設定をしておいたほうが無難です。
また、NTPのスケジュールを仕掛けておくといいと思います。

date yyyy/mm/dd
time hh:mm:ss

↓ntpで時刻合わせしたほうが楽だと思います。
ntpdate xxx.xxx.xxx.xxx
↓毎日1:00に時刻合わせを行います。
schedule at 1 */* 1:00 * ntpdate xxx.xxx.xxx.xxx


現在の日時は以下のコマンドでわかります。

show environment


参考:
fujishinko 雑記帳 : YAMAHA RTX1100に関するメモ
ヤマハルータでログを取得する(syslog機能)公開 : マロンくん.NET
[PR]
by jehoshaphat | 2014-02-03 00:04 | ネットワーク | Trackback | Comments(0)
プロキシ自動構成スクリプトを使ってみた(特定ドメインのみプロキシ利用しない)

IEを始め、多くのブラウザはプロキシを自動設定するスクリプトに対応してます。

(ActiveDirectoryのグループポリシーを使えば、IEのプロキシは一元設定できますが、ADがない環境やIE以外のブラウザでプロキシを一元設定したいときにはこのスクリプトが有効かと思われます)

このスクリプトはJavaScriptとなっているようで、FindProxyForURL 関数を実装することで動きを指定できるようです。


今回は特定のドメインアクセス時のみプロキシを使わない設定にするというものだったので、以下のように書きました。


function FindProxyForURL(url, host)
{
//条件にある文字列を含むURLアクセス時はプロキシ使わずダイレクトにアクセスする
if ( url.indexOf("hogedomain.com") >= 0 ||
url.indexOf("piyodomain.org") >= 0 ||
url.indexOf("192.168.") >= 0
)
{
return "DIRECT";
}
else {
//プロキシサーバのアドレスを指定
return "PROXY 192.168.0.2:8080";
}
}


このファイルを社内のWEBサーバや共有フォルダに配置します。(ローカル上でもOKです)
次に、IEの[インターネットオプション]→[接続]タブ→[LANの設定]で、[自動構成スクリプトを使用する]にチェックを入れ、アドレス欄に上記のファイルを保存したアドレスを入力します。
WEBサーバ上に配置した場合は、http://hoge/proxy.pac というようにURLで指定します。
Windows共有フォルダ上やローカルに置いた場合は file://c:\proxy.pac というように file プロトコルで記述します。


ただ、return "DIRECT" で指定したところにアクセスするとIEのダメな仕様ですべてイントラネットゾーンになってしまいます。
これを防ぐには、インターネットオプションの[セキュリティ]タブ→[ローカルイントラネット]→[サイト]で、[プロキシサーバを使用しないサイトをすべて含める]のチェックをオフにします。
このあたりの話は、@IT:検証 IEの自動Proxy設定とセキュリティ・ゾーンで解説されています。

参考:
@IT:WebブラウザのProxy設定を行うための4つの方法 - WPADのススメ -
プロキシの自動設定方法
自動設定ファイル(proxy.pac)の作成
TechNet:付録 B : 自動プロキシ構成スクリプトの例
Proxyサーバー続編
[PR]
by jehoshaphat | 2014-01-30 23:57 | ネットワーク | Trackback | Comments(0)
VPN環境で閲覧できないWEBサイトの原因は、MTU...
YAMAHAのRTX1200でVPNを組みました。
構成としては以下のようなスター型のネットワークで、外部へのインターネットもセンター側を経由して行くようにしています。
e0091163_16361044.jpg


さて、拠点側から一部のWEBサイトが見えないという問合せがありました。
例えばMicrosoftのサイト(htt://www.microsoft.com/)とか、借りている一部のレンタルサーバ上のWEBとかです。
IEで見ると、ずっと接続に行ってるような感じですが、何も表示されず最終的にタイムアウトしてしまっているようです。
Googleとかは普通に表示されまし、センター側の端末も何も問題なく表示されます。


ということで、拠点側のPCで WireShark を使ってパケットをキャプチャして見ました。
閲覧できないレンタルサーバ上(IP:xxx.xxx.xx.xxx)に、数キロバイトのHTMLを置きそれにアクセスした時の状態です。

No. Time Source Sport Destination Dport Protocol Length Info
5 13.089742 192.168.100.100 1738 xxx.xxx.xx.xxx 80 TCP 62 gamegen1 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1
6 13.116909 xxx.xxx.xx.xxx 80 192.168.100.100 1738 TCP 62 http > gamegen1 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 SACK_PERM=1
7 13.116934 192.168.100.100 1738 xxx.xxx.xx.xxx 80 TCP 54 gamegen1 > http [ACK] Seq=1 Ack=1 Win=65535 Len=0
8 13.117216 192.168.100.100 1738 xxx.xxx.xx.xxx 80 TCP 609 gamegen1 > http [PSH, ACK] Seq=1 Ack=1 Win=65535 Len=555
9 13.945675 xxx.xxx.xx.xxx 80 192.168.100.100 1712 TCP 60 http > registrar [RST, ACK] Seq=1 Ack=1 Win=65535 Len=0
10 16.269908 192.168.100.100 1738 xxx.xxx.xx.xxx 80 TCP 609 [TCP Retransmission] gamegen1 > http [PSH, ACK] Seq=1 Ack=1 Win=65535 Len=555
11 22.285239 192.168.100.100 1738 xxx.xxx.xx.xxx 80 TCP 609 [TCP Retransmission] gamegen1 > http [PSH, ACK] Seq=1 Ack=1 Win=65535 Len=555
12 34.316287 192.168.100.100 1738 xxx.xxx.xx.xxx 80 TCP 590 [TCP Retransmission] [TCP segment of a reassembled PDU]
13 46.456608 192.168.100.100 1738 xxx.xxx.xx.xxx 80 TCP 590 [TCP Retransmission] gamegen1 > http [ACK] Seq=1 Ack=1 Win=65535 Len=536
14 58.597028 192.168.100.100 1738 xxx.xxx.xx.xxx 80 TCP 609 [TCP Retransmission] gamegen1 > http [PSH, ACK] Seq=1 Ack=1 Win=65535 Len=555
15 59.854326 xxx.xxx.xx.xxx 80 192.168.100.100 1738 TCP 60 http > gamegen1 [RST, ACK] Seq=2829 Ack=556 Win=65535 Len=0
16 59.854345 192.168.100.100 1738 xxx.xxx.xx.xxx 80 TCP 54 [TCP Dup ACK 14#1] gamegen1 > http [ACK] Seq=556 Ack=1 Win=65535 Len=0
17 59.880261 xxx.xxx.xx.xxx 80 192.168.100.100 1738 TCP 60 http > gamegen1 [RST] Seq=1 Win=0 Len=0


最初のTCPのコネクションは上手く行っているようですが、その後クライアントからの[TCP Retransmission]が大量に出ていますね。
TCP Retransmissionは再送要求をしているようです。時間内にサーバからパケットが来なかったので要求してると思われます。
で、最終的にサーバ側から RST フラグつまり、TCP接続を中断したというメッセージが来ています。
(TCPのフラグの意味は@IT:TCPパケットの構造を参照)


で、今度は別の閲覧可能なレンタルサーバ上(IP:xxx.xx.xx.xxx)に、同じく数キロバイトのHTMLを置きそれにアクセスした時は以下のようになりました。

No. Time Source Sport Destination Dport Protocol Length Info
1 0 192.168.100.100 1661 xxx.xx.xx.xxx 80 TCP 62 netview-aix-1 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1
2 0.013593 xxx.xx.xx.xxx 80 192.168.100.100 1661 TCP 62 http > netview-aix-1 [SYN, ACK] Seq=0 Ack=1 Win=5632 Len=0 MSS=1408 SACK_PERM=1
3 0.01362 192.168.100.100 1661 xxx.xx.xx.xxx 80 TCP 54 netview-aix-1 > http [ACK] Seq=1 Ack=1 Win=65535 Len=0
4 0.013877 192.168.100.100 1661 xxx.xx.xx.xxx 80 HTTP 496 GET /hoge.html HTTP/1.1
5 0.026311 xxx.xx.xx.xxx 80 192.168.100.100 1661 TCP 60 http > netview-aix-1 [ACK] Seq=1 Ack=443 Win=6432 Len=0
6 0.02715 xxx.xx.xx.xxx 80 192.168.100.100 1661 TCP 1294 [TCP segment of a reassembled PDU]
7 0.027209 xxx.xx.xx.xxx 80 192.168.100.100 1661 TCP 1294 [TCP segment of a reassembled PDU]
8 0.027221 192.168.100.100 1661 xxx.xx.xx.xxx 80 TCP 54 netview-aix-1 > http [ACK] Seq=443 Ack=2481 Win=65103 Len=0
9 0.027235 192.168.100.100 1661 xxx.xx.xx.xxx 80 TCP 54 [TCP Dup ACK 8#1] netview-aix-1 > http [ACK] Seq=443 Ack=2481 Win=65103 Len=0
10 0.04047 xxx.xx.xx.xxx 80 192.168.100.100 1661 TCP 1294 [TCP segment of a reassembled PDU]
11 0.040535 xxx.xx.xx.xxx 80 192.168.100.100 1661 TCP 1294 [TCP segment of a reassembled PDU]
12 0.040549 xxx.xx.xx.xxx 80 192.168.100.100 1661 HTTP 652 HTTP/1.1 200 OK (text/html)
13 0.040581 192.168.100.100 1661 xxx.xx.xx.xxx 80 TCP 54 netview-aix-1 > http [ACK] Seq=443 Ack=5559 Win=64505 Len=0
14 0.04062 192.168.100.100 1661 xxx.xx.xx.xxx 80 TCP 54 [TCP Dup ACK 13#1] netview-aix-1 > http [ACK] Seq=443 Ack=5559 Win=64505 Len=0


データ受信時に[TCP segment of a reassembled PDU]が発生してますが、これはセグメントが分割されて送ってきたよというメッセージのようです。
(分割には、IPレベルで分割というかフラグメントする方法がありますが、これはそれではありません。IPレベルでの分割の場合が起こっている場合、Wiresharkでは [Fragmented IP protocol] となります。IPレベルで分割されると、ルータがパケットを分割するためスループットが非常に悪くなります。よって、大抵の通信はIPプロトコルで分割しないフラグ Don't Fragment をONにしてるようです)

この[TCP segment of a reassembled PDU]は大きなデータを送受信するときは必ず発生します。
なぜなら、通信では1回の転送で送信できるデータの最大値(MTU)が決まっていますが、アプリケーション側からみた1回のデータの送信はMTU(IPパケット全体の長さ)やMSS(IPパケット内のデータ部分の長さ)を考えないからです。
送信時に、大きいデータはお互いの通信路で適切なMTU値に分割されて、受信側で、[TCP segment of a reassembled PDU]で送られてきたパケットを結合してアプリケーション側に渡していると思われます。
このことから、この分割は普通、アプリケーションから送るデータがMSSを超えている場合に起こることがわかります。

さて、サーバとクライアントはどのように分割するサイズ、つまりMSSを知るのでしょうか。
TCPではコネクションを確立する3wayハンドシェイクで、お互いのMSSを通知し合って、値が小さい方を採用するようです。
例えば、上記の閲覧できたレンタルサーバのパケットキャプチャを見ると、以下のようになっていることがわかります。
e0091163_16362489.jpg


で、今回問題となっていたのはVPN内のMTUです。
@IT:pingでMTUサイズを調査するを参考にして、センター側と拠点間のMTUサイズを測って見ました。
最終的に以下のパケットサイズより大きい値にすると、"Packet needs to be fragmented but DF set."エラーが出てしまいました。つまり、1253以上のパケットになるとIPフラグメントするわけですね。

ping xxx.xxx.xxx.xxx -l 1252 -f


なのでこのVPNルータ間のMTUは以下の計算によると、1280Byteのようです。
1252+8(ICMPヘッダ)+20(IPヘッダ)=1280(MTU)
(1280なのはヤマハのRTXルータでVPN組んだ時のデフォルト値のようです。本当はもっと大きい値でも問題なさそうな気がするのですが。。。)

IP,TCPのヘッダはそれぞれ20Byteなので、このVPNルータ間のMSSは以下のように1240Byteになります。

1280-20(IP)-20(TCP)=1240(MSS)


さて、送られてきたデータのサイズが大きすぎる場合でDFビットON(分割不可)の場合、ルータはパケットを破棄し、ICMP Type3 Coede4を送信元ホストに送信し、ホストはそれによりパケットサイズを調整して再送という段取りをとるようです。
上記のような仕組みを、Path MTU Discovery(経路MTU検索)と言うようです。
DFビットが設定されていないと、ルータはフラグメントを行なってパケットを送信するようです。(スループットは落ちます)
e0091163_16363449.jpg


しかし、送信元に「パケットでかいから小さくしてよ」というICMPパケットがFWなどによって遮断されるとどうなるでしょうか。
WEBサーバ側はクライアントからACKパケットが帰ってこないため、RST パケットを送り、パケットが届かねぇから通信辞めると捨て台詞を吐いてるようです。
おそらく、MSのサイトを始め幾つかのサイトが見れなかったのはこれが原因だと思います。
試しに、拠点側PCのMTUを強制的に 1280 に書き換えてみたところ、閲覧出来なかったサイトも見れるようになりました。
MTUのサイズを変更するには、MSサポート:ブラック ホール ルーターの問題をトラブルシュートする方法の方法3に有るように、以下の手順を行います。(以下引用)
(ネットワークのMTUサイズを変更する - @ITにも書かれてます)

1.[スタート] ボタン、[コントロール パネル] の順にクリックします。

2.[ネットワークとインターネット接続]をクリックし、[ネットワーク接続] をクリックして開きます。

3.複数のネットワーク接続が表示された場合は、各接続をダブルクリックし、表示された [状態] インターフェイスの [サポート] タブをクリックします。[デフォルト ゲートウェイ] エントリが表示された場合、その接続がインターネット接続に使用されているネットワーク接続であると考えられます。接続名 ("ローカル エリア接続 2" など) をメモします。

4.レジストリ エディタ (Regedit.exe) を起動します。

5.HKEY_LOCAL_MACHINE ツリーの下にある次のレジストリ キーに移動します。
SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\

6.このキーの下に、数字の識別子を持ついくつかのキーがあります。各キーには Connection サブキーが設定されています。次のようなキーをすべて調べます。
アダプタの ID\Connection
Connection サブキーの [Name] 値には、ネットワーク接続フォルダに使用されるネットワーク接続名が設定されています。ステップ 3 でメモした名前と一致するものが見つかったら、そのネットワーク接続名の アダプタの ID をメモします。

7.HKEY_LOCAL_MACHINE に戻り、次のレジストリ キーに移動します。
SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\アダプタの ID
アダプタの ID は、ステップ 6 でメモした番号です。このキーを強調表示すると、画面の右側にいくつかの値が表示され、その中に [DefaultGateway] および [EnableDHCP] が含まれています。

8.画面の右側を右クリックし、[新規] をクリックして、[DWORD 値] をクリックします。この値に [MTU] という名前を付けます。

9.その値をダブルクリックして編集します。[表記] を [10 進数] に変更し、Ping テストで確認した MTU の最大許容サイズを入力します。

10.レジストリ エディタを終了します。


以下のような感じです。
e0091163_16364499.jpg


このあたりの話は、Path MTU Discovery 1で詳しく図入りでまとめられています。


この現象を再現するために、センター側にxpでWEBサーバを立てて検証して見ました。
全パケット素通しにした場合は、VPNの向こう側の拠点からページの閲覧できました。(MTUは1280になっており、ルータからICMPパケットが届いているのが確認できました。)
しかし、WEBサーバ側にFW(今回はフリーのKerio使いました)を入れ、ICMP全遮断すると、拠点からページの閲覧ができない状態になりました。


さて、この場合の解決方法としてはどうすればいいのでしょうか。
ICMPパケットがブロックされるのは向こう側の問題なので、どうしようもありません。つまり、経路MTU検索は使えないというわけです。
拠点側のクライアント全部のMTUを、VPNのMTUより小さくすればOKですが、端末数が多い場合設定に手間取ります。
幸い今回VPNルータに使ったYAMAH RTX1200には、TCPコネクション開始時にMSSを調整してくれる機能があるようです。
コマンドどしては以下になります。

ip tunnel tcp mss limit auto


上記のコマンドによって以下のようになります。
e0091163_1636534.jpg


これで、なんとかまともに通信ができるようになりました。
補足ですが、強制的にMTUを指定したい場合は以下のように出来ます。
(設定する値はMSS(MTUから40バイト引いた値)なので、MTUと間違えないように注意)

ip tunnel tcp mss limit 1240


LAN3のインターフェイスでMSS指定したい場合は以下のようにします。

ip lan3 tcp mss limit 1240


今回のように、経路MTU検索が使えず、VPN内でMTUが小さくなる故に通信できなくなるという現象は、VPN組んでいると結構あるようです。
ルータによっては経路MTUより検索に対応しておらず、ICMP type3 code4パケットを返さないものもあるようで、このようなルータはブラックホールルータと呼ばれているようです。

まぁ理屈がわかれば非常に簡単な話ですが、TCP/IPの基礎を忘れかけてた3流PGは、原因突き止めるのに結構時間がかかってしまいました。


参考:
ペンギンの覚書: ネットワーク更改時のトラブル "YAMAHAのルータではVPN等のMTUがデフォルトで1280バイトになっている。対応策は、ip tunnel tcp mss limit auto"
◎IPの分割化と再構築 ここの"3.MTUとMSSとの違い。"に、ヤマハルータでのMSS自動調整"ip tunnel tcp mss limit auto"に関する記述があります。
あんじーのテクニカルブログ: MTUが小さいVPN間でファイル共有通信をすると通信できなくなる問題 "VPN通信では1280Byte、それ以外は1500Byteになっていて、ICMPパケットを破棄する設定になっていると通信できなくなる問題を引き起こすようです。"
@IT:VPNの実力を知る(後編)"(4)MTUに関する確認"あたりにMTUの話があります。
PPPoE ルータ同志で IPsec を構築するときの問題 - nabeの雑記帳
忘れっぽいエンジニアのメモ MTUとMRUとMSSについて
経路MTU探索 - Networkキーワード:ITpro
[PR]
by jehoshaphat | 2014-01-15 00:34 | ネットワーク | Trackback(1) | Comments(3)
OP25B対策Part2 メールサーバを構築し別メールサーバに全転送【sendmail編】
OP25B対策Part1 Linuxルータでポート変換(非推奨)でOP25Bされている環境で、ポート25をポート587に変換して送る方法を書きました。
これはかなり強引で非推奨な実験的環境です。


ということで、より一般的で推奨できるOP25B対策は、LAN内にメールサーバを立てて、プロバイダもしくはレンタルしてるメールサーバに丸投げする方法です。
LAN内の送信ポート変更できないソフト,機器はこのLAN内のメールサーバに送信メールを投げます。

イメージとしては以下のような感じです。
上段がプロバイダのメールサーバを経由させる方法、下段がレンタルしてるメールサーバを経由させる方法です。
e0091163_2344727.jpg


プロバイダのメールサーバを使うにしろ、別のレンタルしているメールサーバを使うにしろ、どちらの方法でも sendmail の設定は変わりません。(設定としては(Linux)LogwatchのログメールをGmailに送りたいに書いている内容と似ています。)
今回使った sendmail は 8.13.8 で、CentOS5.6上で動かしています。
また、プロバイダはNTT-MEの wakwak を使っています。

まず、以下のようにsendmail.mcを編集します。(sendmail.mcでは dnl がコメントアウト)


# vi /etc/mail/sendmail.mc

dnl define(`SMART_HOST', `smtp.your.provider')dnl の下に以下を追加。
define(`SMART_HOST', `[am.wakwak.com]') dnl 丸投げするメールサーバを指定。プロバイダのメールサーバに丸投げ。 [ ]の意味ついては後ほど。これを指定しない場合kの値のMXレコードにアクセスする。
define(`ESMTP_MAILER_ARGS', `TCP $h 587') dnl 宛先を587ポートにする設定
define(`RELAY_MAILER_ARGS', `TCP $h 587') dnl 宛先を587ポートにする設定
FEATURE(authinfo, DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`authinfo') dnl SMTP認証で使うファイルの指定。
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') dnl SMTP認証の認証方式
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') dnl SMTP認証の認証方式


DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
↓ コメントアウトする。自信以外からのアクセスも許可。これをしないとLAN内の別端末からのメール受け取れない
dnl ####DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

sendmail.mcで設定が書き終わったら、以下コマンドで実際の設定ファイル sendmail.cf を作成します。


m4 /usr/share/sendmail-cf/m4/cf.m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

sendmailをリロードもしくは、再起動します。

service sendmail reload
OR
service sendmail restart



自身宛かどうか
sendmailでは、/etc/mail/local-host-names に設定してあるドメイン名が送られてきたメールのドメイン名と一致すれば自分のサーバ宛と判断し保存します。
それ以外は外部の MTA に転送します。なので、OP25B対策での専用サーバではこのファイル内に設定はしません。


転送制限設定
sendamilでは、/etc/mail/access.db ファイルで、メールを受け入れるかどうかのアクセス制御をしています。
以下のようにファイルを編集し、LAN内の他の端末からのメールを受け入れるようにします。
RELAYは許可、REJECTは拒否、OK(もしくは無指定時)は自身宛と判断し保存します。


# vi /etc/mail/access

Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY
# ↓192.168.0から始まるIPアドレスのホストからのメールリレーを認める
Connect:192.168.0 RELAY
# ↓10.0.1.1のIPアドレスのホストからのメールリレーを認めない
Connect:10.0.1.1 REJECT
# ↓10.0.1.2のIPアドレスのホストからは自身宛と判断し、宛先が/etc/mail/local-host-namesにあれば保存、なければ受信拒否。
Connect:10.0.1.2 OK

以下コマンドで、/etc/mail/accessから、設定ファイル(/etc/mail/access.db)を作成します。
このコマンドで設定ファイルを作成した場合、sendmailを再起動させることなく即時反映ができるようです。

makemap hash /etc/mail/access.db < /etc/mail/access

(もし、インターネット側からこのsendmailサーバにメールが届くようにFWやNATで設定しているのであれば、スパムの踏み台にされる可能性がありますので、/etc/mail/access の設定を慎重にしましょう)


SMTP AUTH設定
このsendmailサーバが、プロバイダ、レンタル等丸投げにするメールサーバとのSMTP認証できるように設定を行います。
/etc/mail/authinfo に以下のように設定を書きます。

# vi /etc/mail/authinfo

AuthInfo:am.wakwak.com "U:user" "P:passwd" "M:DIGEST-MD5 CRAM-MD5 LOGIN PLAIN"
(Uは認証に使うメールアドレスの@より前、Pはパスワードを入れ、Mで認証方式を設定します)

上記では、認証方式を DIGEST-MD5 CRAM-MD5 LOGIN PLAIN の4つに設定してますが、送信メールサーバがどの認証に対応しているかは、telnetでわかります。

%gt;telnet am.wakwak.com 587
220 am.wakwak.com ESMTP Sendmail 8.14.3/8.14.3/2011-11-15; Sat, 3 Dec 2011 20:40:19 +0900 (JST)
ehlo localhost ←このコマンドを入力すると、↓のように各種情報でてくる。
250-am.wakwak.com Hello xxxxxx.ppp.wakwak.ne.jp [xxx.xxx.xxx.xxx], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 20971520
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN ←対応しているSMTP認証方式がこれでわかる。
250-DELIVERBY
250 HELP
quit ←認証方式わかったのでオサラバ
221 2.0.0 am.wakwak.com closing connection


ホストとの接続が切断されました。

authinfoファイルが作成できたらauthinfo.dbファイルを作成します。
makemapコマンドでsendmail用のデータベースマップを作成できます。る

makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo


これで、設定は終了です。
後は、LAN内の送信したい端末のSMTPサーバ欄に、このsendmailサーバのアドレスを入れてやります。
クライアント~sendmailサーバ間はポートは25でOKですし、SMTP認証も掛ける必要はありません。
(クライアント~sendmailサーバ間のポートも587にしたいときは DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea') を書きます。“a”はESMTPでの認証を必須とする指定、“E”はETRNコマンドを禁止する指定です。MPT認証を有効しに、クライアント側でその設定しないと、530 5.7.0 Authentication required になってしまいます。)

クライアントからメールを送信して、/var/log/maillog に以下のように正常に終わった旨が残り、相手先に届いていればOKです。

Dec 3 20:51:09 localhost sendmail[3088]: pB3Bp8NU003088: from=<hoge@hogepiyo.info>, size=334, class=0, nrcpts=1, msgid=<20111203205107.6FA1.CA40460F@hogepiyo.info>, proto=ESMTP, daemon=MTA, relay=[192.168.0.9]
Dec 3 20:51:09 localhost sendmail[3090]: pB3Bp8NU003088: to=<third.rate.pg@gmail.com>, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=120334, relay=am.wakwak.com. [211.9.230.130], dsn=2.0.0, stat=Sent (pB3BpAYN018000 Message accepted for delivery)



今回はまった点はMXレコード
さて、今回ハマった点が、丸投げ先のメールサーバの指定です。
当初、丸投げするメールサーバを以下のように指定していました。

define(`SMART_HOST', `am.wakwak.com')

しかし、この設定では、メールキューにメールがずっと残ったままで、/var/log/maillog に以下のようなログが出ていました。

Dec 3 18:21:43 localhost sendmail[2319]: pB39LhqT002319: from=<hoge@hogepiyo.info>, size=382, class=0, nrcpts=1, msgid=<20111203182143.6F69.B01E2D28@am.wakwak.com>, proto=ESMTP, daemon=MTA, relay=[192.168.0.11]
Dec 3 18:22:43 localhost sendmail[2326]: pB39LhqT002319: to=<third.rate.pg@gmail.com>, delay=00:01:00, xdelay=00:01:00, mailer=relay, pri=120382, relay=am.mds.wakwak.com. [211.9.230.163], dsn=4.0.0, stat=Deferred: Connection timed out with am.mds.wakwak.com.

Connection timed out しているようです。
なんで? と思いました。ポートをサブミッションポートを使わず、25で送るようにしたら、タイムアウトすることはなくなったんですが、以下のようなエラーメールが帰ってきます。

----- The following addresses had permanent fatal errors -----
<third.rate.pg@gmail.com>
(reason: 550 5.7.1 <third.rate.pg@gmail.com>... Relaying denied)

----- Transcript of session follows -----
... while talking to am.mds.wakwak.com.:
>>> DATA
<<< 550 5.7.1 <third.rate.pg@gmail.com>... Relaying denied
550 5.1.1 <third.rate.pg@gmail.com>... User unknown
<<< 503 5.0.0 Need RCPT (recipient)

このメールログと、エラーメールでふと気付いたのが、am.mds.wakwak.com につなぎに行っていることでした。
丸投げ先のプロバイダのメールサーバは am.wakwak.com です。
じゃぁ am.mds.wakwak.com ってなんだ?と思って思いついたのがMXレコードです。

案の定 nslookup で確認したら、am.mds.wakwak.com は am.wakwak.com のMXレコードの値でした。

> nsloolup
> set type=MX
> am.wakwak.com
権限のない回答:
am.wakwak.com MX preference = 10, mail exchanger = am.mds.wakwak.com
↑MXレコードのサーバ名

> set type=A
> am.wakwak.com
権限のない回答:
名前: am.wakwak.com
Address: 211.9.230.130
↑AレコードのサーバのIP


つまり、本来 am.wakwak.com(211.9.230.130)に接続しないといけないのに、sendmailは am.wakwak.com のMXレコードである am.mds.wakwak.com を見に行っていたわけです。
では、どうすれば DNS のMXレコードを引かずに、Aレコードを参照するようになるかというのは、UNIX/SendMail - 1円切手のメモに書いてるようにホスト名を [ ] でくくることが必要みたいでした。

define(`SMART_HOST', `am.wakwak.com')
  ↓ [ ] でくくる
define(`SMART_HOST', `[am.wakwak.com]')
define(`SMART_HOST', `[10.0.0.1]') dnl ←IPで指定したい場合も [ ] でくくる

sendmailの設定はなかなかクセが強いので、苦労しました。
ただ、前回は設定の意味もよくわかっていないままでしたが、今回はだいぶsendmailの挙動について理解できるようになりました。

なお、Postfixでの方法もOP25B対策Part2 メールサーバを構築し別メールサーバに全転送【Postfix編】で書いています。

参考:
sendmailですべてのメールを中継サーバーのSubmission portに送る
◇sendmail.mcの編集と設定◇初心者のためのLinuxサーバー構築講座(CentOS 自宅サーバー対応)☆お便利サーバー.com☆
◇受信/転送に関する設定◇初心者のためのLinuxサーバー構築講座(CentOS 自宅サーバー対応)☆お便利サーバー.com☆
◇サブミッションポートの設定◇初心者のためのLinuxサーバー構築講座(CentOS 自宅サーバー対応)☆お便利サーバー.com☆
sendmailをSMTPクライアントにしてWAKWAKからメール送信する。 - hosonya blog
OP25B(Outbound Port 25 Blocking)対策 - CentOSで自宅サーバー構築
SMTP/POP3 プロトコルエラー応答一覧
[PR]
by Jehoshaphat | 2013-04-01 23:04 | ネットワーク | Trackback | Comments(0)
OP25B対策Part1 Linuxルータでポート変換(非推奨)
会社のインターネット用プロバイダが、今まで固定IP使ってたんですが、経費削減で動的IPに変更させられました。
このプロバイダでは、固定IP以外からはOP25B(Outbound Port 25 Blocking)されています。
(OP25Bについては、OCN|OCN迷惑メール対策:,WAKWAK - Outbound Port25 Blocking等参考。)

で、会社のメインのメールはプロバイダとは別のレンタルサーバを使っています。
クライアントのメーラはサブミッションポート(587)を使うように設定しなおせばいいんですが、問題は各種サーバはPCの監視ソフト、スキャンメールができる複合機で、送信ポートが設定できないものがあるということです。

ということで、送信ポートが設定できないソフトや機械でどうやってレンタルメールサーバに送るか検討してみました。

一つはルータでのポート変換を行うという強引策と、もうひとつは自社にメールサーバを立てるという方法です。


Linuxルータでポート変換

これはかなり強引な方法で、送信先ポートが25になっているのをルータで587に変換してしまうという方法です。
レンタルサーバ上のメールサーバがSMTP認証がなくても使えるので、クライアントからメールサーバ宛のパケットの送信先ポートを変換してしまいます。

手持ちのインターネットゲートウェイに使っているルータが、送信先ポート変換ができなさそうだったので、ゲートウェルータとLANとの間にLinuxルータを置いてみました。
で、iptablesのDANT機能でポートを変換します。

イメージとしては以下のような感じです。
e0091163_2313977.jpg


Linuxルータのiptablesの設定は以下のようにしました。
静的NATを使って設定したので、仮想インターフェイスの作成が必要です。
(仮想インターフェイスの作成については、(Linux)CentOSでちょっとトリッキーなNATルータを構築してみたを参照)

iptables -F
iptables -t nat -F
iptables -X


iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT


#NATの設定リセット
iptables -t nat -F

#クライアントからのパケットを仮想インターフェイスのIPにアドレス変換
iptables -t nat -A POSTROUTING -s 10.0.0.2 -j SNAT --to 192.168.0.10
#仮想インターフェイスに入ってくるパケットをクライアントのIPアドレスに変換
iptables -t nat -A PREROUTING -d 192.168.0.10 -j DNAT --to 10.0.0.2


#DNAT例 ここで25ポートを587ポートに変換 (xxx.xxx.xxx.xxxはメールサーバのIP)
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination xxx.xxx.xxx.xxx:587


この環境で、クライアントからメール送信(25ポート宛て)した時に、Linuxルータ側でパケットキャプチャしたときは以下のようになってました。

# tcpdump -n tcp port 25 or 587
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on seth0, link-type EN10MB (Ethernet), capture size 96 bytes
19:54:25.039575 IP 192.168.0.10.aztec > xxx.xxx.xxx.xxx.submission: S 3954643844:3954643844(0) win 65535
19:54:25.061470 IP xxx.xxx.xxx.xxx.submission > 192.168.0.10.aztec: S 373935822:373935822(0) ack 3954643845 win 65535
19:54:25.062094 IP 192.168.0.10.aztec > xxx.xxx.xxx.xxx.submission: . ack 1 win 64970
19:54:25.089189 IP xxx.xxx.xxx.xxx.submission > 192.168.0.10.aztec: P 1:30(29) ack 1 win 33120
19:54:25.093427 IP 192.168.0.10.aztec > xxx.xxx.xxx.xxx.submission: P 1:17(16) ack 30 win 64955
19:54:25.115068 IP xxx.xxx.xxx.xxx.submission > 192.168.0.10.aztec: P 30:53(23) ack 17 win 33120
19:54:25.150178 IP 192.168.0.10.aztec > xxx.xxx.xxx.xxx.submission: P 17:57(40) ack 53 win 64944
19:54:25.171725 IP xxx.xxx.xxx.xxx.submission > 192.168.0.10.aztec: P 53:61(8) ack 57 win 33120
19:54:25.172503 IP 192.168.0.10.aztec > xxx.xxx.xxx.xxx.submission: P 57:95(38) ack 61 win 64940
19:54:25.193558 IP xxx.xxx.xxx.xxx.submission > 192.168.0.10.aztec: P 61:69(8) ack 95 win 33120
19:54:25.194221 IP 192.168.0.10.aztec > xxx.xxx.xxx.xxx.submission: P 95:101(6) ack 69 win 64936
19:54:25.215981 IP xxx.xxx.xxx.xxx.submission > 192.168.0.10.aztec: P 69:83(14) ack 101 win 33120
19:54:25.220544 IP 192.168.0.10.aztec > xxx.xxx.xxx.xxx.submission: P 101:1285(1184) ack 83 win 64929
19:54:25.342188 IP xxx.xxx.xxx.xxx.submission > 192.168.0.10.aztec: . ack 1285 win 33120
19:54:25.342812 IP 192.168.0.10.aztec > xxx.xxx.xxx.xxx.submission: P 1285:1290(5) ack 83 win 64929
19:54:25.375987 IP xxx.xxx.xxx.xxx.submission > 192.168.0.10.aztec: P 83:111(28) ack 1290 win 33120
19:54:25.389477 IP 192.168.0.10.aztec > xxx.xxx.xxx.xxx.submission: P 1290:1296(6) ack 111 win 64915
19:54:25.410860 IP xxx.xxx.xxx.xxx.submission > 192.168.0.10.aztec: P 111:134(23) ack 1296 win 33120
19:54:25.411031 IP xxx.xxx.xxx.xxx.submission > 192.168.0.10.aztec: F 134:134(0) ack 1296 win 33120
19:54:25.411620 IP 192.168.0.10.aztec > xxx.xxx.xxx.xxx.submission: . ack 135 win 64903
19:54:25.411817 IP 192.168.0.10.aztec > xxx.xxx.xxx.xxx.submission: F 1296:1296(0) ack 135 win 64903
19:54:25.433325 IP xxx.xxx.xxx.xxx.submission > 192.168.0.10.aztec: . ack 1297 win 33119

25 packets captured
25 packets received by filter
0 packets dropped by kernel

どうやら、ちゃんとレンタルのメールサーバと会話できているようです。

しかし、上記のiptablesの設定は、あくまで実験環境なので実際に運用するにはLinuxルータ側でNAPTの設定が必要かと思われます。
DNATの --to-destination でポート変換がかけれるわけですが、IPも必ず指定しないと行けません。
ということで、インターネット側のメールサーバはひとつしか使えないことになるので、複数メールサーバを使っている場合にはNGです。
また、指定時はIPアドレスでないといけないこともネックですね。(もし、レンタルサーバのメールサーバのIPが変わったら変更しないといけません)

ということで、この方法は余り現実出来ではありません。

もう一つの方法OP25B対策Part2 sendmailでメールサーバを構築し別メールサーバに全転送(推奨)のほうが現実的です。(Postfixでの方法はOP25B対策Part2 メールサーバを構築し別メールサーバに全転送【Postfix編】で書いています。)


余談ですが、iptabelsの設定の中で、"REDIRET" というのがあります。
これを使えば、ポートだけ変換できるじゃん!と思ったんですが、これはLinux自身でパケットを受信する場合のみポートリダイレクトするようです。
今回のように、ルータとしての役割を持たせてパケット転送するときには使えないということです。

iptables -t nat -A PREROUTING -p tcp --dport 25 -j REDIRECT --to-port 587

このことは、@IT:natテーブルを利用したLinuxルータの作成の最後の方に 「「-j REDIRECT」は、ホスト自身の別サービスポートにしかリダイレクトできません。そのためLinuxルータとHTTPプロキシサーバが同一のホストで動作していない場合は、REDIRECTも使用できません。」 と書いてました。



参考:
iptables のテーブル表示 と アクセス許可/natの例 - ihirokyの日記
Mazn.net iptablesでポートフォワーディング
iptablesの設定あれこれ
iptablesによるパケットフィルタリング
REDIRECTターゲット REDIRECTがホスト自身に対してしか適用されないことが書いてません。。
[PR]
by Jehoshaphat | 2013-04-01 23:00 | ネットワーク | Trackback | Comments(0)
Privoxyでホワイトリスト方式のプロキシを立ててみた
WindowsPCで、許可したサイトしか閲覧できないようにして欲しいという依頼がありました。
IEのコンテンツアドバイザを使っても良かったんですが、今回はそのPC自身にプロキシソフトをいれて、そこでフィルタリング出来ないか試してみました。

PrivoxyはオープンソースのWebフィルタでプロキシとして動作するようです。フィルタの設定がかなり柔軟で、主に広告コンテンツを除去したりするのに使われているようです。さらにtorと一緒に使ってさらに匿名性を挙げるためにも使われるようです。

インストールファイルが終われば設定ファイルを触ります。
config.txtには全般的な設定が入っています。
アクションファイルには、どのURLにどのフィルタをかけるかの設定を書きます。
フィルタファイルには、フィルタを正規表現で定義します。

ホワイトリスト方式の設定はFAQ(公式日本語訳)/設定に載っていました。

まず、config.txtを探して以下のようにuser.acitionファイルを使う設定になっているか確認します。

actionsfile user.action

(個別のアクションはuser.actionファイルに記述するのが良いようです)
次に、user.actionファイルで以下のように定義すると、全てのURLがブロックされます。

{ +block }

このあとに{ -block }を定義し許可するサイトを指定していきます。

{ -block }
.jehupc.exblog.jp
.youtube.com
.google.com
.jehupc.com

この時、パターンの書き方がちょっと特殊なので気をつけます。(この点がPrivoxy アクションファイル( user.action )のパターン指定で気をつけたいこと - digital 千里眼に書かれています。)

このドメインのパターンが部分一致でないのです。
例えば、jehupc.comと定義した時、jehupc.comのページはOKですが、xx.jehupc.comはNGになります。
そのドメイン全体に適用させたい場合は、ドメイン名の先頭に「.」を入れればOKなようです。


設定が終わればブラウザにプロキシの設定しをします。
デフォルトであれば待ち受けポートは8118なので、127.0.0.1:8118をプロキシ先として設定します。

これでprivoxy.exeを起動し、ブラウザでアクセスすると指定したURL以外は見なくなっているはずです。
指定したサイト以外にアクセスするとブロック画面が出るんですが、この画面の"go there anyway. "をいうリンクを押下すると見えてしまいます。
なので、このリンクをのけます。そのためには、configt.txt で以下のように設定するといいようです。

enforce-blocks 1


また、毎回exeを起動するのも面倒なのでサービスとしてインストールしてしまう方法も書いておきます。

コマンドプロンプトで、privoxyの引数に --install をつければいいようです。

privoxy.exe --install



参考:
Privoxyであれこれ
Privoxy 3.0.19 User Manualアクションファイルの公式マニュアル。英語。
Privoxyで、Webページの読み込みが不完全になることがある件。こういう場合、keep-alive-timeoutを無効化するといいようです。
Privoxyとは - はてなキーワード
IE7のコンテンツアドバイザーでフィルタリングを試す~Googleを子供向けポータルにする方法(2) コンテンツアドバイザを使う場合の方法です。
[PR]
by Jehoshaphat | 2013-01-04 01:19 | ネットワーク | Trackback | Comments(0)
インターフェイスを指定してrouteコマンドで静的ルートを設定する
ルーティングテーブルを操作しゲートウェイを設定するで、Windows環境でスタティックルートを設定する方法を書きました。
しかし、NICが複数ある場合はどのNICにするか指定しないといけないようです。

route コマンドの IF オプションで指定できます。ヘルプを見ると、インターフェース・インデックスを指定するようにとなっています。

インターフェイスインデックスは route print で確認できます。
以下のような感じです。


>route print
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...xx xx xx xx xx xx ...... Intel(R) 82562V-2 10/100 Network Connection - パケット スケジューラ ミニポート
0x3 ...xx xx xx xx xx xx ...... VirtualBox Host-Only Ethernet Adapter - パケット スケジューラ ミニポート
===========================================================================
...省略...

3番目(VirtualBox Host-Only Ethernet Adapter)に設定するには以下のようにします。

>route -p add 10.0.128.0 mask 255.255.255.0 10.0.0.2 IF 3


参考:
route - Windowsコマンド集:ITpro
Windowsでインタフェースindex番号の確認方法 - ゴー!ゴー!けいじ!!
[PR]
by Jehoshaphat | 2012-12-01 21:28 | ネットワーク | Trackback | Comments(0)
(L2スイッチ)Cisco Catalyst 2940のポートが一つ通信できない
CISCO Catalyst 2940-8TT-S インテリジェント イーサネット スイッチ WS-C2940-8TT-S


Cisco の Catalyst 2940 L2スイッチを使っているんですが、その内の8番ポートにLANケーブルを接続しても通信できません。

このL2スイッチはIPを設定できるんですが、設置時の設定資料が残ってないためIPも不明です。

裏側にコンソール用のRJ45ポートがあったので、コンソールケーブル(RJ45-DB9)を使って、ターミナルから設定を見てみました。

CLIのコマンドの一覧は、http://www.cisco.com/cisco/web/support/JP/docs/SW/LANSWT-Access/CAT2940SWT/CR/001/15505_05_2.html?bid=0900e4b1825ae691で確認できます。


試しにshow interfacesコマンドを叩いてみました。
すると、8番ポートの部分が以下のようになっていました。

Switch>show interfaces
....
FastEthernet0/8 is up, line protocol is down (monitoring)
Hardware is Fast Ethernet, address is 0022.xxxx.xxxx (bia 0022.xxxx.xxxx)
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
reliability 255/255, txload 3/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Full-duplex, 100Mb/s, media type is 100BaseTX
input flow-control is unsupported output flow-control is unsupported
ARP type: ARPA, ARP Timeout 04:00:00
Last input never, output 00:05:25, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
Output queue: 0/40 (size/max)
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 1564000 bits/sec, 1042 packets/sec
97 packets input, 11861 bytes, 0 no buffer
Received 85 broadcasts (0 multicast)
0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
0 watchdog, 17 multicast, 0 pause input
0 input packets with dribble condition detected
764978 packets output, 145841414 bytes, 0 underruns
0 output errors, 0 collisions, 2 interface resets
0 babbles, 0 late collision, 0 deferred
0 lost carrier, 0 no carrier, 0 PAUSE output
0 output buffer failures, 0 output buffers swapped out
....


1行目の末尾のところが他のポートでは、connected もしくは notconnect になっているのに、このポートは monitoring になっています。
ということはミラーの設定がされているのか?と思い、ミラーの設定の確認をしてみました。
以下のコマンドで確認できるようです。


Switch> show monitor session 1
Session 1
---------
Type : Local Session
Source Ports :
Both : Fa0/3
Destination Ports : Fa0/8
Encapsulation : Native
Ingress: Disabled


やはり、ミラーの設定がされていたようです。3番ポートのパケットをミラーするようになっていますね。
引数に detail を加えるとさらに詳しい情報が確認できます。


Switch>show monitor session 1 detail
Session 1
---------
Type : Local Session
Source Ports :
RX Only : None
TX Only : None
Both : Fa0/3
Source VLANs :
RX Only : None
TX Only : None
Both : None
Source RSPAN VLAN : None
Destination Ports : Fa0/8
Encapsulation : Native
Ingress: Disabled
Reflector Port : None
Filter VLANs : None
Dest RSPAN VLAN : None




ミラーの設定は以下のようにするようです。(3番ポートの通信を8番ポートへ転送する例です)

Switch>en ←特権モードへ移行
Switch#configure terminal ←コンフィグモードへ移行
Switch(config)#monitor session 1 source int fastethernet 0/3 (キャプチャ元のポート設定。1はセッションNoで任意、0/3はどのポートかを指定)
Switch(config)#monitor session 1 destination int fastethernet 0/8 (キャプチャ先のポート設定。1はセッションNoで↑と合わせる、0/8はどのポートかを指定)
Switch(config)# end


逆にミラーの設定を解除するには、monitor session [セッションNO] でいいようです。

Switch(config)#no monitor session 1


参考:
SPAN(ミラーリング その1) CCNP実機で学ぶ
SPAN(ミラーリング その3) CCNP実機で学ぶ
Catalyst 2940、2950、2955、2970、3550または3750 シリーズ スイッチでのポート モニタ(SPAN)の設定方法
ポートモニターの設定
[PR]
by Jehoshaphat | 2012-11-24 13:07 | ネットワーク | Trackback | Comments(0)
nslookup でDNSサーバを明示的に指定したい
通常 nslookup を叩くとデフォルトのDNSサーバに対してクエリを発行します。
これを任意のDNSサーバに対して名前解決を要求する方法ですが、nslookup の第二引数にDNSサーバを指定してやればいいようです。

nslookup hoge.exsamle ns1.piyo.ne.jp
Server: ns1.piyo.ne.jp
Address: xxx.xxx.xxx.xxx

Name: hoge.exsamle
Address: yyy.yyy.yyy.yyy


参考:
@IT:Windows TIPS -- Tips:nslookupの基本的な使い方(イントラネット編)
[PR]
by Jehoshaphat | 2012-05-16 00:35 | ネットワーク | Trackback | Comments(0)
RTX1000でNATテーブルが溢れた
RTX1000でIPマスカレードを使ってて、ふとNATテーブルを確認すると、結構な量使ってました。
には以下のコマンドが使えます。IPマスカレードの変換テーブルも見れます。

show nat descriptor address
...
Masqueradeテーブル
外側アドレス: 192.168.0.150 ポート範囲=60000-64095 3015個使用中
プロトコル 内側アドレス 宛先 マスカレード TTL(秒)


このままでは端末が増えたときにテーブル使いきってしまうおそれがあるため、ポート範囲を広げようと思いました。
デフォルトが60000-64095っぽいので、nat descriptor masquerade port range コマンドで40000-60000までにしてみます。


nat descriptor masquerade port range 1 40000 20000
エラー: パラメータが範囲を越えています


なぬ?
どうやら調べてみると、RTX1000はポート範囲は 4096 しか使えないようです。
RTX1500や1100も同様でした。
RTX1200はポート範囲20000までいけるようです。(仕様のNATセッション数)

どうしたものか悩んでると、ともちゃ日記 - 元大学生の悪魔^H^H魔神OL日記-で対応策が載ってました。

どうやら、NATテーブルで保持してるセッション情報の保持期間を短くしてやるといいようです。
デフォルトは全プロトコルで15分間(900秒)IPマスカレードのセッション情報を保持しているようです。

この保持期間を変更するには、nat descriptor timerコマンドを使うようです。


NATディスクリプタ1の全プロトコルでセッション保持期間を10分に変更するには以下のようにします。

nat descriptor timer 1 600


TCPの80宛のセッション保持期間を120秒にするには以下のようにします。

nat descriptor timer 1 protocol=tcp port=80 120


セッション保持期間を短くすると確かに、使うポート範囲が小さくなり使用するNATテーブルの使用量を抑えれました。


これでもポート消費量が減らず、特定の端末が大量にセッションを消費している場合はnat descriptor masquerade session limitコマンドでホスト毎のセッションの最大数を指定してやるといいようです。(RTX1100以上。RTX1000は使えないみたい)

例えば以下のようにすると端末毎のセッション数を200に出来ます。

nat descriptor masquerade session limit 1 1 200



参考:
RTX1000設定-sshが切れる/NATテーブル溢れ
YAMAHA RTX1100 とセッション数制限 - かぼちゃ日記
[PR]
by Jehoshaphat | 2012-02-06 00:47 | ネットワーク | Trackback | Comments(0)