RV-S340NE(NTTのひかり電話対応VDSLルータ)の静的IPマスカレード設定(以下、NAT設定)をCLIから行うためのツール
自宅サーバ向けにNAT設定を変更する際のルータのレスポンスが悪いため、コマンド操作で設定できるようにしました
現状はCLIでの操作のみですがAPIとして利用できるよう改良予定です
- RV-S340NEと同一LAN内のホストでツールを起動する必要があります
- Selenium Webdriverを利用しているため依存ライブラリのインストールが必要です(セットアップ参照)
- 動作はRV-S340NEの2016年3月21日時点での最新ファームウェアVersion 19.41で確認しています
Selenium Webdriverを利用するため以下の初期設定が必要です
他にも不足しているライブラリ等があるかもしれませんので、エラーメッセージ等から適宜必要なライブラリをインストールしてください
$ sudo apt-get install ruby build-essential firefox xvfb
$ sudo gem install bundler --no-ri --no-rdoc
$ bundle install --path vendor/bundle
$ sudo dnf groupinstall -y "RPM Development Tools"
$ sudo dnf groupinstall -y "C Development Tools and Libraries"
$ sudo dnf install -y ruby ruby-devel gem firefox libXtst-devel xorg-x11-server-Xvfb
$ sudo gem install bundler --no-ri --no-rdoc
$ bundle install --path vendor/bundle
$ brew cask install xquartz # XQuartz導入済みであれば不要
$ brew cask install firefox # Firefox導入済みであれば不要
$ export GEM_HOME=~/.gem
$ gem install bundler
$ bundle install --path vendor/bundle
PATHに /usr/X11/bin を追加する
$ sudo apt-get install ruby ruby-dev build-essential iceweasel xvfb
$ sudo gem install bundler --no-ri --no-rdoc
$ bundle install --path vendor/bundle
$ bundle exec ruby nateditor.rb
設定変更の流れは以下のようなイメージです
$ bundle exec ruby nateditor.rb headless
type 'help' to help. type 'exit' to terminate.
NatEditor> login
IP Address of RS-S340NE (192.168.1.1): 192.168.11.1
Password:
Please wait...
NatEditor> print
num avail prot port host num avail prot port host
1 true TCP 1111 192.168.1.111 26 -
2 true TCP 2222 192.168.1.122 27 -
3 true TCP 3333 192.168.1.133 28 -
4 true UDP 700 192.168.1.70 29 -
5 true UDP 800 192.168.1.80 30 -
6 true UDP 900 192.168.1.90 31 -
7 - 32 -
8 - 33 true TCP 30000 192.168.1.3
9 - 34 false TCP 31000 192.168.1.4
10 - 35 false TCP 32000 192.168.1.5
11 - 36 true TCP 40000 192.168.1.3
12 - 37 true TCP 41000 192.168.1.4
13 - 38 true TCP 42000 192.168.1.5
14 - 39 -
15 - 40 -
16 - 41 -
17 true TCP 80 192.168.1.5 42 -
18 true TCP 12345 192.168.1.5 43 -
19 true TCP 23456 192.168.1.5 44 -
20 true TCP 34567 192.168.1.5 45 -
21 - 46 -
22 - 47 -
23 - 48 -
24 - 49 -
25 - 50 -
NatEditor> get 17
num avail prot port host
17 true TCP 80 192.168.1.5
NatEditor> set 17 true tcp 80 192.168.1.4
Set 17
num avail prot port host
10 true TCP 80 192.168.1.5
->
10 true TCP 80 192.168.1.4
Are you sure? [yN] y
Success
help
ヘルプメッセージを表示
login
RV-S340NEにログイン
IPアドレス(省略時はデフォルトの192.168.1.1に接続します)とパスワードを入力
ユーザ名はuserで固定のため入力不要
exit
ツールを終了
NAT設定を一覧表示
get (番号)
NAT設定を表示
RV-S340NEではNAT設定に1〜50までの項番が振られており、本ツールではこの番号を指定してNAT設定を操作します
> get 10
num avail prot port host
10 true TCP 8080 192.168.1.100
set (番号)
NAT設定を変更
> set 10 true tcp 5000 192.168.1.100
Set 10
num avail prot port host
10 true TCP 8080 192.168.1.100
->
10 true TCP 5000 192.168.1.100
Are you sure? [yN] y
toggle (番号)
NAT設定の状態(有効or無効)を反転
> toggle 10
Toggle 10 true -> false
Are you sure? [yN] y
del (番号)
NAT設定を削除
> del 10
Delete 10
Are you sure? [yN] y
reload
NAT設定をすべて再読み込み
ツール使用中に並行してブラウザからNAT設定を操作した場合等、ブラウザから設定値を再読み込みしたい場合に利用
対話型コンソールの仕組みにはPryを使っています。以下の記事を参考にさせて頂きました