2016年04月


RouterBOARDのFireWallを読み解く

とりあえず、RouterBOARDでFireWallを設定するには?
RouterBOARDに実装されているFireWall機能について。


安価なルータには簡易的なFireWall機能で定義されているポートへの通信を遮断したり、
特定の通信をNAT経由で内部へ転送したりと設定が可能ですが、
さほどトリッキーな事はできません。

RouterBOARDにはFireWallとしてLinuxでは有名なiptablesが実装されています。

iptablesは設定が色々必要でかなりややこしいイメージがありますが、
RouterBOARDはWebFigやWinBoxからGUIで各種設定が可能となっています。

まずは、設定する場所の確認。

IP-> Firewall


▼設定に必要なパラメータータブ
general
Action


generalタブ ←大体、このタブのパラメーターで設定可能です。

▼generalタブの役割と設定

Chain: これはパケットの流れを設定します。

forward
input
output

Src.address:
Dst.address: ここはパケットの転送元、転送先アドレスを宣言します。

Protocol:このファイアウォールルールで設定するプロトコルを指定します。
icmp,igmp,ggp,ip-encap,st,tcp,egp,pup,udp,hmp,xns-idp,rdp,iso-tp4
xtp,idpr-cmtp,gre,ipsec-esp,ipsec-ah,espf,vmtp,ospf,ipip,encap,vrrp

Src.Port:
Dst.Port:
Any.Port: ここはパケットの転送元、転送先ポートの宣言をします。

P2P: 標準で定義されているP2Pプロトコルを設定できます。

all-p2p,bit-torrent,blubster,directconnect,edonkey,fasttrack(kazaa)
gnutella,soulseek,warez,winmx

In.Interface:
Out.Interface:入力・出力インターフェイスの宣言をします。

PacketMark:
ConnectionMark:
RoutingMark:
Routing Table: Mangle連動でPacketに付属させる各種処理用

Connection Type: デフォルトで設定されているコネクションタイプの宣言
ftp,h323,irc,pptp,quark3,sip,tftp

Connection State: TCPのフラグ情報を宣言
invalid,established,related,new

Connection NAT State: Natの条件宣言
srcnat,dstnat


Actionタブ ←Generalタブで作成したルールに対してどう処理するかパラメーターを設定可能。

▼Actionタブ

-Accept
パケットの通過を許可させます。

-Add dst to address list
-Add src to address list
事前に設定してるアドレスlistへ dst/srcアドレスから書き込み

-Drop
パケットを破棄します。

-Fasttrack connection
ファストトラック接続を許可します

-Jump
設定されているチェインターゲットへジャンプさせます。

-Log
Logをloggingへ出力します。

-Passthrough
パケットを透過させます。

-Reject
パケットを拒絶します。
Reject with
パケット拒絶時に相手側へ送信するメッセージ/処理を選択。
icmp admin prohibited
icmp host prohibited
icmp host unreachable
icmp net prohibited
icmp network unreachable
icmp port unreachable
icmp protocol unreachable
tcp reset

-Return
ユーザー定義チェインから呼び出し元のチェインへ戻ります。

-Tarpit
Dosアタックフィルタ等を作成する際に遮断アドレスリストに対して処理を行う。TCP SYN flood等の緩和に有効

/ip firewall filter add chain=input protocol=tcp connection-limit=LIMIT,32  action=add-src-to-address-list  address-list=blocked-addr address-list-timeout=1d
/ip firewall filter add chain=input protocol=tcp src-address-list=blocked-addr connection-limit=3,32 action=tarpit


さらっとカラムに関して流してみました。
この他に色々な条件を設定できるわけです。
次回はその辺を追いかけてみます。

続きを読む

RouterBOARD トンネル設定シリーズ

暗号化通信の為のOpenVPNクライアント/サーバーをテストする


RouterBOARDには色々なトンネルプロトコルが実装されています。

IPSec
L2TP/IPSec
SSTP
PPTP
IPIP
GRE

EoIP

これ以外にOpenVPNが実装されています。
ここでは、OpenVPNサーバーをRB側に、
クライアントのRBへOpenVPNクライアント設定を行い、
相互に拠点間通信を行う設定を紹介します。


OpenVPNはクライアント・サーバー構成で作成し、
RB同士での接続はもとよりLinuxやWindowsのOpenVPNクライアントで
RBへの遠隔Loginが可能な環境を構築できます。


▼OpenVPNの設定を行う為の準備

OpenVPNは秘密鍵交換を使った暗号化通信が必要な仕様な為、
あらかじめSSL用にキーを作成する必要があります。

Keyの作成は
Linux環境・Windows環境で作成/インポートする。
RouterBOARD上でKeyを作成する

作成したキーを元にOpenVPNの設定を行います。


▼必要な設定

①SSL-OpenVPNに必要なKeyを作成・インストール
②RBにOpenVPNのサーバー設定を行う
(1)OpenVPN接続時に払い出すIP-POOLの作成
(2)接続に必要なプロファイルの作成
(3)OpenVPN接続時のユーザー作成
(4)OpenVPNの接続を通すFireWallの設定
(5)RBにOpenVPNのサーバー設定を行う

(6)対向のRBにOpenVPNのクライアント設定を行う

●SSL証明書を作成する。

一般的にLinuxやWindows側でKeyを作成します。
RB単体でもKeyの生成は可能です。

RBでのKey作成は前回https接続の項目で紹介いたしましたので省略します。

WindowsでSSL-Keyを生成する場合はOpenVPNをインストール後に
OpenVPN\easy-rsaの中のvars.bat.sampleを利用して
SSL-Keyを生成します。(dos窓から管理者権限で実行)

vars.bat.sampleを編集(カントリーコード等の情報変更)
init-config.batを実行
生成されたvars.batを実行
build-dh.batを実行
build-ca.batを実行
上記手順でKeysフォルダに
ca.crt
ca,keyが生成されます。


●SSL証明書をインストールする。
WindowsやLinuxで作成したキーは事前にRBへ転送します。
system-> certificationsから Importボタンで
KeyファイルをRBへインポートします。

制作したキーには失効期限が設定されます。
RBでキーを作成した場合は365(一年)が設定されます。
キーの時間は任意で設定可能です。5年設定の場合は
1825と設定する事で設定できます。

今回は、キーの生成とRBへのキー導入までを紹介しました。
次回はOpenVPNサーバーの設定と
クライアント接続するRBの設定、RB間のOpenVPNでの接続を
紹介する予定です。

続きを読む


WebfigやUsermanagerではwebベースでの管理機能を持っているRBですが、
標準ではhttps通信がキーを導入していない為に使用できません。

そこで、ここではRB単体で簡易証明書を作成してhttpsでのアクセスを設定します。


(1)Certificatesの設定

https接続の為にssl-keyを作成します。

System -> Certificates
+(新規)で作成

Generalタブ

Name : ← 任意
Common Name: ← 任意 ※20160427修正 ここは解決可能なHOST名かIPを入れてください。
Subject Alt.Name:IP 
 KeySize:2048 <- Keyの長さ
Days Valid:365 <-Keyの失効時間(days)

Trustedにチェック

KeyUsageタブ
ここでこのキーを利用するターゲットを設定します。
標準で
digital signature
key encipherment
data encipherment
key cert.sign
crl sign
が設定されています。

ipsectunnel等で利用する場合はこのキーを設定します。


Applyで作成後に


Signボタンでサインをつけます。

※キーの状態は KeyUsageとStatusで確認


(2)HTTPS接続のキー設定を行う

IP -> Servicesの www-sslをダブルクリック
Certificateの項目を先ほど作成したKeyに変更

これで、httpsから接続が可能になります。

https設定を入れたら、通常のhttp接続をdisableにする事をお勧めします。


RouterBOARDで通信機器の性能評価

RouterBOARDは様々な機能を実装しているルータですが、
その機能の中に機器間の帯域を測定する機能を実装しています。

RouterBOARD(RB)間の速度・帯域測定には
専用のBandwidthというtoolがあり、これを使うことで
RB間のだいたいの速度が測定可能です。
しかし、これはRB間やクライアントPCからRBへの測定が前提で
他機種向けの帯域測定はできません。

これとは別に、特定のパケットを双方向に投げて
通信機器の性能評価を簡易的に行う、
TrafficGeneratorの機能を実装しています。
ここでは、このTrafficGeneratorの機能を利用してRB間の速度測定を
おこないます。

Traffic Generatorの設定

RouterBOARD単体の持っているTrafficを発生させる機能を利用して
対象ネットワークの性能評価を行うことができます。
双方向通信によるトラフィックの計測を行う為、
2ポートでのトラフィック送受信が必要となります。

※10G等の測定を行う場合は2ポート10Gの搭載機種をご利用ください。


/tools -> trafficgenerator


▼起動に必要な最低限の設定

(1)Ports <- パケットを送信するポートの設定

(2)Packet Templates <- 転送するパケットのデータ設定

(3)Streams <- 転送するパケットの情報設定


設定を使って運用する場合はQuickStartを利用します。


ここでは実際に2台のRB間通信の速度測定を行います。


▼測定対象の設定
2台のRB間の通信速度の測定を行います。
各RBをTrafficGen設定をしたRBと接続して TrafficGenからRB2台を経由した速度を測定します。


■ノードルーター RB-01

/ip address
add address=192.168.33.1/30 interface=ether1
add address=1.1.1.2/24 interface=ether2

↑ノードルーター01へIP設定
Ether1へ192.168.33.1/30とEther2へ1.1.1.2/24のIPを設定


/ip route
add dst-address=2.2.2.0/24 gateway=192.168.33.2

↑ノードルーター01へ対向ルーター(RB-02)へのアドレス2.2.2.0/24へルーティング設定


■ノードルーター RB-02

/ip address
add address=192.168.33.2/30 interface=ether1
add address=2.2.2.2/24 interface=ether2

↑ノードルーター02へIP設定
Ether1へ192.168.33.2/30とEther2へ2.2.2.2/24のIPを設定


/ip route
add dst-address=1.1.1.0/24 gateway=192.168.33.1

↑ノードルーター02へ対向ルーター(RB-01)へのアドレス1.1.1.0/24へルーティング設定


■ストリーム吐き出し TrafficGen

/ip address
add address=1.1.1.1/24 interface=ether2
add address=2.2.2.1/24 interface=ether3

↑Trafficを発生させる機器の双方向用ポートへIPの設定


/tool traffic-generator port
add disabled=no interface=ether2 name=port0
add disabled=no interface=ether3 name=port1

↑Trafficを発生させる機器のポート/ポート名の設定


/tool traffic-generator packet-template
add header-stack=mac,ip,udp ip-dst=2.2.2.1/32 ip-gateway=1.1.1.2 ip-src=1.1.1.1/32 name=routing-1 port=port0
add header-stack=mac,ip,udp ip-dst=1.1.1.1/25 ip-gateway=2.2.2.2 ip-src=2.2.2.1/32 name=routing-2 port=port1

↑各転送パケットのテンプレート設定。
転送パケットの種類をmac ip udp とし、Src->Dstと転送Gatewayの設定、送信するポートを設定します。

/tool traffic-generator stream
add disabled=no mbps=500 name=str1  packet-size=1450 port=port0 pps=0 tx-template=routing-1
add disabled=no mbps=500 name=str2  packet-size=1450 port=port1 pps=0 tx-template=routing-2

↑TrafficGeneratorのstreamの設定を行います。

双方向通信のパケットを送出する設定を行います。
転送量を500mbps 名前をstr1 パケットサイズを1450 吐き出すポートをport0
使用するテンプレート(routing-1)を設定します。
転送量を500mbps 名前をstr2 パケットサイズを1450 吐き出すポートをport1
使用するテンプレート(routing-2)を設定します。



以上で、テスト設定が完了します。
次回は上記設定を使った実際の測定と、応用設定を紹介する予定です。

※RouterBOARDの機種によっては1GBpsフルレートでのパケット送出ができない機器も
あります。フルレートでの測定をされる場合はフルレート対応機種での測定をお勧めします。

フルレートでの転送対応機種:CCRシリーズ、RB3011、RB850Gx2、RB1100AHx2等

TrafficGenerator動作時、CPU利用率は100%になります。
(CCR-1036-8G-2S+で10Gをフルに利用した場合でも、全コア100%に張り付きます)
このため、液晶搭載機器の液晶操作ができなくなる場合がありますが、これは仕様です。
また、各種サービス等が遅延する為、Traffic発生時にはルーターとして利用しない方が安全です

↑このページのトップヘ