2018年4月17日火曜日

YAMAHA RTXにてポート変換(NAT,NAPT)

利用機種:YAMAHA RTX1100

要件は以下となります

・外部から、SSHとWWWを通したい。
・SSHは通常のポートではなく、違うポートとし、RTX1100にて変換

前提

外部からの「全ポート」はクローズ状態とする
WWWサーバは192.168.10.100
SSHアクセスが必要なサーバは192.168.10.200、外部からのポートは12345とする
グローバルアドレスは持っている。DNS等々は別で管理のため今回は考慮除外

natの定義

nat descriptor masquerade static 1 1 192.168.10.100 tcp www
nat descriptor masquerade static 1 1 192.168.10.200 tcp 12345=22

ip filterの定義

ip filter 21001 pass * 192.168.10.100 tcpflag=0x0002/0x0017 * www
ip filter 21002 pass * 192.168.10.200 tcp * 22

まとめ

外部へのアクセスができる状態で運用できているのであればそれに対して外部からのポートを開ける設定と、natの設定をすれば実現可能
natが働いてからipfilterが働く

設定を開けたら外部サイトからのアクセスチェックをお忘れなく

ポート開放テスト
https://www.cman.jp/network/support/port.html

ポート全チェックテスト (ShieldsUP!)
https://www.grc.com/x/ne.dll?bh0bkyd2

2018年4月4日水曜日

TERATERMマクロでYAMAHA RTXのconfigをまとめて取得

概略

タイトルがマニアックですが、要は

1)ネットワーク内に管理したいルーターがたくさんある
2)各ルーターのConfigを取得してテキストへ保管したい
3)同じ処理を繰り返すので、マクロ(TTPMACRO)など活用で何とかしたい

という要件です。

管理端末から各ルーターへの疎通は当然できる状態で、
1.ログイン
2.ログ取得開始
3.CONFIGを表示する命令を実施
4.ログ取得終了
5.ログアウト

ができればOKとします。

マクロファイルの作り方

teratermインストールディレクトリに拡張子が.ttlのサンプルファイルがいくつかありますがそれを参考としました。

;マクロ例
;ホストのIPを指定。ルーターへはTelnet接続
HOST = '192.168.107.254'
ADDR = ''
LOGNAME = ''
;ホスト名を生成(ADDR)
strconcat ADDR HOST
strconcat ADDR ':23 /nossh /T=1'
;ログファイル名を生成
strconcat LOGNAME HOST
strconcat LOGNAME '.log'
connect ADDR
wait   'Password:'
sendln 'パスワードを記載'
wait   '>'
sendln 'administrator'
wait   'Password:'
sendln 'パスワードを記載'
logopen logname 0 0
sendln 'show config'
wait   '#'
logclose
sendln 'exit'
wait   '>'
sendln 'exit'
あとはこれを.ttlファイルとしてttpmacro.exeで読み込ませるだけです

ホストもたくさんあるのだが

上記を改良していきます。今回は上部の「IPアドレス」だけを変えて、あとは同じ動作をするようにします。
アプローチとして
1)上位にバッチファイルをかませてバッチファイルで書き換えていく
2)TERATERMのマクロでホスト名ファイルを読込んで処理する

の1)が始めの想定でしたが、2)ができることが分かったので2)で実装します。

HOSTFILE='IPLIST.TXT'
fileopen fh HOSTFILE 0
:readloop
filereadln fh buf
if result goto loop_exit
HOST = ''
strconcat HOST buf
if result<>1 CALL MAIN_OPERATION
goto readloop
:loop_exit
fileclose fh
end

:MAIN_OPERATION
;HOST = '192.168.107.254' ループ側で指定される
ADDR = ''
LOGNAME = ''
;ホスト名を生成(ADDR)
strconcat ADDR HOST
strconcat ADDR ':23 /nossh /T=1'
;ログファイル名を生成
strconcat LOGNAME HOST
strconcat LOGNAME '.log'
connect ADDR
wait 'Password:'
sendln 'パスワードを指定'
wait '>'
sendln 'administrator'
wait 'Password:'
sendln 'パスワードを指定'
logopen logname 0 0
sendln 'show config'
wait '#'
;早すぎてログが出力されないケースがあるのでpauseを入れる
pause 1
logclose
sendln 'exit'
wait '>'
;コンソールを閉じるわけではないのでclosettへ変更
closett
return
サーバーに接続できない場合のケースや実行日時を記録するなど、まだまだ追加機能は必要そうですが一旦はこれで完了とします