管理番号:YMHRT-18628
(最終更新日: 2023/7/26)
本設定例では、IPsecトンネル機能とLuaスクリプト機能とFQDNフィルター機能を使用しています。
IPsecトンネル機能の対応機種は、RTX5000、RTX3510、RTX3500、RTX1300、RTX1220、RTX1210、RTX830、NVR700W、FWX120、vRXです。
Luaスクリプト機能の対応機種は、RTX5000、RTX3510、RTX3500、RTX1300、RTX1220、RTX1210、RTX830、NVR700W、NVR510、vRXです。
※FWX120は、一部の機能に対応していないため、対応機種から除いています。
FQDNフィルター機能の対応機種は、RTX5000(Rev.14.00.26以降)、RTX3510、RTX3500(Rev.14.00.26以降)、RTX1300、RTX1220、RTX1210(Rev.14.01.26以降)、RTX830(Rev.15.02.03以降)、NVR700W(Rev.15.00.10以降)、NVR510(Rev.15.01.13以降)、FWX120(Rev.11.03.25以降)、vRXです。
拠点のトラフィックが増加する中、従来のように拠点からのすべてのインターネット通信をセンター経由で行うと、センター側のインターネット回線の輻輳を招く恐れがあります。クラウドアプリケーションやWindows Update だけ、拠点からインターネットに直接アクセス(インターネットブレイクアウト)することで、センター側の輻輳を回避して負荷を軽減できます。
本設定例では、Luaスクリプトを利用した、Office 365、Windows Update、G Suite のインターネットブレイクアウトをご紹介します。
拠点のルーターでサンプルLuaスクリプトを実行すると、以下のように動作します。
(1) ネットワーク経由で、マイクロソフト社が公開しているOffice 365のURLリストを取得
(2) Office 365のURLリストのバージョンを、Luaスクリプトで記憶
(3) 取得したリストに記載されているFQDN・IPアドレスから、Office 365用のフィルターをルーターに定義
(4) マイクロソフト社が公開しているWindows UpdateのFQDN(固定)から、Windows Update用のフィルターをルーターに定義
(5) Google社が公開しているG SuiteのFQDN(固定)から、G Suite用のフィルターをルーターに定義
(6) ルーターに経路を設定 (フィルター型ルーティング)
(7) 定期的にOffice 365のURLリストのバージョンを確認し、(2) のバージョンと比較
(8) バージョンが上がっていた場合、(3)~(6) を実施
※ Office 365 および Windowsは、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。
※ G Suiteは、Google LLCの登録商標または商標です。
光回線に接続するためには、別途ONUが必要です。
NVR700Wは、本体のONUポートに小型ONUを装着することで、光回線に接続できます。
対応機種のうち、設定例を掲載している機種は、以下のとおりです。
機種 | 掲載内容 | 備考 | |
---|---|---|---|
センター | RTX5000 RTX3510 RTX3500 RTX1300 RTX1220 RTX1210 | コマンド設定例 | IPsecトンネル機能 |
拠点 | RTX1300 RTX1220 RTX1210 RTX830 NVR700W | コマンド設定例 Luaスクリプト例 |
IPsecトンネル機能、 Luaスクリプト機能、 FQDNフィルター機能 |
1. ルーターコンソールを開きます。
[解説] ルーターコンソールはシリアルケーブルやtelnetで接続して使用します。 使用方法については取扱説明書をご参照ください。 |
2. 管理者権限でログインして、EMFSファイルを作成します。
[ルーターコンソール] # embedded file (Luaスクリプトファイル名) <<EOF : : : Luaスクリプト(本体を貼り付ける) : : EOF |
[解説] コマンドの詳細はEMFSファイルの作成、削除をご参照ください。 Luaスクリプトファイル名は、任意の文字列を設定してください。 |
3. Luaスクリプトがルーターに作成されたことを確認します。
[ルーターコンソール] # show file list emfs:/ 2019/06/21 14:42:24 12742 (Luaスクリプトファイル名) |
[解説] コマンドの詳細はファイル情報の一覧の表示をご参照ください。 |
※ネットワーク機器を安全にお使いいただくために、管理パスワードの変更を奨励します。
ゲートウェイの設定 | ip route default gateway pp 1 ip route 192.168.101.0/24 gateway tunnel 1 |
---|---|
LANインターフェースの設定 (LAN1ポートを使用) |
ip lan1 address 192.168.100.1/24 |
WANインターフェースの設定 (LAN2ポートを使用) |
pp select 1 pp always-on on pppoe use lan2 pp auth accept pap chap pp auth myname (ISP1に接続するID) (ISP1に接続するパスワード) ppp lcp mru on 1454 ppp ipcp msext on ppp ccp type none ip pp address (センターの固定グローバルIPアドレス) ip pp secure filter in 1020 1030 1040 1041 2000 ip pp secure filter out 1010 1011 1012 1013 1014 1015 3000 dynamic 100 101 102 103 104 105 106 ip pp nat descriptor 1 pp enable 1 |
VPN(IPsec)の設定 | tunnel select 1 ipsec tunnel 1 ipsec sa policy 1 1 esp aes-cbc sha-hmac ipsec ike keepalive log 1 off ipsec ike keepalive use 1 on ipsec ike local address 1 192.168.100.1 ipsec ike nat-traversal 1 on ipsec ike pre-shared-key 1 text (事前共有鍵) ipsec ike remote address 1 (拠点の固定グローバルIPアドレス) ip tunnel tcp mss limit auto tunnel enable 1 |
VPN(IPsec)の設定 (共通項目) |
ipsec auto refresh on |
フィルターの設定 | ip filter source-route on ip filter directed-broadcast on ip filter 1010 reject * * udp,tcp 135 * ip filter 1011 reject * * udp,tcp * 135 ip filter 1012 reject * * udp,tcp netbios_ns-netbios_ssn * ip filter 1013 reject * * udp,tcp * netbios_ns-netbios_ssn ip filter 1014 reject * * udp,tcp 445 * ip filter 1015 reject * * udp,tcp * 445 ip filter 1020 reject 192.168.100.0/24 * ip filter 1030 pass * 192.168.0.0/16 icmp ip filter 1040 pass (拠点の固定グローバルIPアドレス) * udp * 500 ip filter 1041 pass (拠点の固定グローバルIPアドレス) * esp ip filter 2000 reject * * ip filter 3000 pass * * ip filter dynamic 100 * * ftp ip filter dynamic 101 * * www ip filter dynamic 102 * * domain ip filter dynamic 103 * * smtp ip filter dynamic 104 * * pop3 ip filter dynamic 105 * * tcp ip filter dynamic 106 * * udp |
NATの設定 | nat descriptor type 1 masquerade nat descriptor masquerade static 1 1 192.168.100.1 udp 500 nat descriptor masquerade static 1 2 192.168.100.1 esp |
DHCPの設定 | dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.100.2-192.168.100.100/24 |
DNSの設定 | dns server (ISP1より指定されたDNSサーバーのアドレス) dns private address spoof on |
※ネットワーク機器を安全にお使いいただくために、管理パスワードの変更を奨励します。
ゲートウェイの設定 | ip route default gateway tunnel 1 ip route (センターの固定グローバルIPアドレス) gateway pp 1 |
---|---|
LANインターフェースの設定 (LAN1ポートを使用) |
ip lan1 address 192.168.101.1/24 |
WANインターフェースの設定 (LAN2ポートを使用) |
pp select 1 pp always-on on pppoe use lan2 pp auth accept pap chap pp auth myname (ISP2に接続するID) (ISP2に接続するパスワード) ppp lcp mru on 1454 ppp ipcp msext on ppp ccp type none ip pp address (拠点の固定グローバルIPアドレス) ip pp nat descriptor 1 pp enable 1 |
VPN(IPsec)の設定 | tunnel select 1 ipsec tunnel 1 ipsec sa policy 1 1 esp aes-cbc sha-hmac ipsec ike keepalive log 1 off ipsec ike keepalive use 1 on ipsec ike local address 1 192.168.101.1 ipsec ike nat-traversal 1 on ipsec ike pre-shared-key 1 text (事前共有鍵) ipsec ike remote address 1 (センターの固定グローバルIPアドレス) tunnel enable 1 |
VPN(IPsec)の設定 (共通項目) |
ipsec auto refresh on |
NATの設定 | nat descriptor type 1 masquerade nat descriptor masquerade static 1 1 192.168.101.1 udp 500 nat descriptor masquerade static 1 2 192.168.101.1 esp |
DHCPの設定 | dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.101.2-192.168.101.100/24 |
DNSの設定 | dns host lan1 dns server 192.168.100.1 dns private address spoof on |
Luaスクリプトのスケジュール設定 | schedule at 1 startup * lua emfs:/(Luaスクリプトファイル名) |
このLuaスクリプトを拠点のルーターにて実行します。
設定値 |
-- コマンドパラメーター -- -- FQDNフィルターに使用するフィルターIDのプレフィックス -- Office 365 インターネットブレイクアウトのSYSLOGのプレフィックス -- サーバーへの問い合わせ間隔(秒) -- ルーター起動時の VPN 接続の待機時間(秒) -- ルーター起動時の VPN 接続の確認回数(回) -- HTTPS リクエスト -- -- パス -- url -- リクエストテーブル -- Windows Update の接続先URLリスト(テーブル) -- G Suite の接続先URLリスト(テーブル) -- 出力する SYSLOG のレベル(info, debug, notice) -- メッセージ -- |
---|---|
ログメッセージをSYSLOGに出力する関数 | function write_to_log(msg_fmt, ...) log_msg = string.format(msg_fmt, ...) |
UUIDを生成する関数 | function generate_uuid() math.randomseed(os.time()) return string.gsub(template, "[xy]", function (c) end |
Officeサーバーからバージョンを取得する関数 | function get_version_from_server(uuid) path = string.format(path_version, uuid) if (res_tbl.rtn1) and (res_tbl.code) and (res_tbl.code == 200) then return cur_ver |
Officeサーバーからエンドポイントを取得する関数 | function get_endpoints_from_server(uuid) path = string.format(path_endpoint, uuid) if (res_tbl.rtn1) and (res_tbl.code) and (res_tbl.code == 200) then return nil |
CSV形式の1行をテーブルに変換する関数 | function ParseCSVLine(line) return res |
チャンク転送であるか否かを取得する関数 | function is_transenc_chunked(hdr) if hdr:match(ptn) then return false |
レスポンスデータからURLリストを取得する関数 | function get_urls(body) if (body ~= nil) then return urls_list |
URLリストから重複を削除、ソートする関数 | function del_duplicate_urls(urls_list) for urls in each(urls_list) do for k, v in pairs(flist_temp) do table.sort(flist) return flist |
URLのリストを一定の条件で連結する関数 | function concatenate_urls(urls_list) for url in each(urls_list) do if (string.len(str_urls) > urls_len) then if (str_urls ~= "") then return flist |
FQDNフィルターを削除する関数 | function exec_no_filter_cmd(num) for i = 0, (num - 1) do end |
2つのリストを結合する関数 | function joint_tables(table_1, table_2) for v in each(table_1) do for v in each(table_2) do return table_new |
FQDNフィルターを設定する関数 | function exec_filter_cmd(urls_list) for v in each(urls_list) do return flist |
ip routeコマンドを設定する関数 | function exec_ip_route_cmd(flist) if (#flist == 0) then for v in each(flist) do cmd = string.format("ip route default gateway %s filter %s gateway %s", gateway_offload, buf, gateway_default) end |
メインルーチン | local buf, cur_ver -- VPN 接続を待つ -- VPN 接続していない場合に、エラーメッセージを出力し、サーバーへの問い合わせ間隔分待機する -- UUIDを生成 while (true) do -- Officeサーバーからバージョンを取得 -- 保存したバージョンと比較 -- Officeサーバーからエンドポイントを取得 if (urls ~= nil) then if (urls ~= nil) then -- G SuiteのURLのリストを結合する -- URLのリストをフィルター単位に分割する -- FQDNフィルターを削除 -- FQDNフィルターを設定 if (filters ~= nil) then -- コンフィグを保存 err = 0 if (cur_ver == 0) or (err == 1) then rt.sleep(idle_time) |
ご相談・お問い合わせ