Quantcast
Channel: ネットワーク –俺的備忘録 〜なんかいろいろ〜
Viewing all 29 articles
Browse latest View live

net-toolsとiproute2のコマンド対応早見表

$
0
0

net-toolsからiproute2へ移行する際、iproute2のどのコマンドが、今まで使っていたnet-toolsのどのコマンドに相当するのかがわからない人も多いだろう。
以下のサイトでその対応表を記述していたので、今回はそれを翻訳してまとめてみることにした。

Deprecated Linux networking commands and their replacements ≪ Doug Vitale Tech Blog

1.各コマンドごとの対応表

オプションを考えない、各コマンドごとの対応表を以下に示す。
なお、()の付いているコマンドは省略形。()内が正式なコマンド構文となる。

net-tools iproute2
arp ip n (ip neighbor)
ifconfig ip a (ip addr)
ip link
ip -s (ip -stats)
iptunnel ip tunnel
iwconfig iw
nameif ip link, ifrename
netstat ss
ip route (for netstat-r)
ip -s link (for netstat -i)
ip maddr (for netstat-g)
route ip r (ip route)

基本、ipコマンドさえ覚えれば大体の事には対応出来そうだ。
以下、net-toolsの各コマンドのオプションごとに対して、どのiproute2のコマンドで対応すればよいかも記述する。

2.arp

arpコマンドのiproute2での代替コマンドは以下の通り。

net-tools iproute2 コマンドの概要
arp -a [ホスト名] (arp -all [ホスト名]) ip n (ip neighbor)
ip n show
指定したホスト名の情報を表示する。ホスト名を指定しない場合は、すべてを表示する。
arp -d [ホスト名] (arp –delete [ホスト名]) ip n del [ホスト名] ip n f [ホスト名] (ip n flush [ホスト名]) 指定したホスト名を削除する。
arp -D
(arp –use-device)

(同一機能は非提供)
MACアドレスではなく、ハードウェア、アドレスを利用する。
arp -e
(同一機能は非提供)
arpの内容をBSD形式ではなく、Linux形式で出力させる。
arp -f [ファイル名] (arp –file [ファイル名])
(同一機能は非提供)
指定したファイルの指定アドレス情報を利用する。
arp -H [ハードウェアタイプ] (arp –hw-type [ハードウェアタイプ])
arp -t [ハードウェアタイプ]

(同一機能は非提供)
HWタイプを指定して出力させる。
arp -i [インターフェイス名] (arp –device [インターフェイス名]) ip n show?dev [インターフェイス名] 指定したインターフェイスの情報を出力させる。
arp -n
(arp –numeric)

(同一機能は非提供)
ホスト名,ポート名,ユーザー名を解決せずに数値のまま表示する
arp -s [IPアドレス] [MACアドレス] arp –set [IPアドレス] ip n add [IPアドレス] lladdr [MACアドレス] dev [デバイス名] nud [パラメータ値] 指定したホスト名・MACアドレスのエントリーを追加する。
設定するパラメータ値については後述。
arp -v ip -s n
(ip -stats n)
詳細情報を表示する。

ホスト名、MACアドレスを手動で追加する際、nudで追加するパラメータ値には以下のようなものが存在する。

  • noarp:エントリーは有効であり、このエントリーを検証しない。しかし、存続期間の満了後はそれを除去することができる。
  • permanent:エントリーは永続的に有効であり、管理者のみが削除出来る。
  • reachable:タイムアウトになるまでエントリーは有効である。
  • stale:エントリーは有効だが、信用出来ない情報である。

3.ifconfig

ifconfigコマンドのiproute2での代替コマンドは以下の通り。

net-tools iproute2 コマンドの概要
ifconfig ip a
(ip addr)
ネットワークインタフェースの情報を表示する。
ifconfig [インターフェイス名] ip a show dev [インターフェイス名] 指定したネットワーク・インターフェイスの情報を表示する。
ifconfig [アドレスの種類] ip -f [アドレスの種類] a アドレスの種類を指定して情報を表示する。
出力出来る種類はifconfigではinet、inet6、ax25、ddp、ipx、netrom。
ipではinet、inet6。
ifconfig [インターフェイス名] add [IPアドレス/サブネットマスク] ip a add [IPアドレス/サブネットマスク(CIDR)] dev [インターフェイス名] 指定したインターフェイスにIPアドレスを設定する。
ifconfig [インターフェイス名] address [IPアドレス]
ifconfig [インターフェイス名] allmulti
(無効時:ifconfig [インターフェイス名] -allmulti)
ip mr iif [インターフェイス名] (ip mroute iif [インターフェイス名]) すべてのマルチキャストパケットの受信を有効にする。
ifconfig [インターフェイス名] arp
(無効時:ifconfig [インターフェイス名] -arp)
ip link set arp on
(無効時:ip link set arp off)
ARPの利用を有効にする。
ifconfig [インターフェイス名] broadcast [IPアドレス] ip a add broadcast [IPアドレス] ip link set dev [インターフェイス名] broadcast [MACアドレス] 指定したIPアドレスをブロードキャストアドレスとして設定する。アドレスを省略した場合、ブロードキャストの利用のみを指定したことになる。
ifconfig [インターフェイス名] del [IPアドレス/サブネットマスク] ip a del [IPアドレス] dev [インターフェイス名] 指定したIPアドレスを削除する。
ifconfig [インターフェイス名] up ip link set [インターフェイス名] up 指定したインターフェイスを有効にする。
ifconfig [インターフェイス名] down ip link set [インターフェイス名] down 指定したインターフェイスを無効にする。
ifconfig [インターフェイス名] hw [ハードウェアタイプ] [IPアドレス] ip link set dev [インターフェイス名] address [MACアドレス] 指定したインターフェイスのハードウェアクラスとアドレスを指定する。
ifconfig [インターフェイス名] io_addr [IOアドレス]
(同一機能はethtoolで提供)
インターフェイスドライバのI/O開始アドレスを指定する
ifconfig [インターフェイス名] irq [割り込み番号]
(同一機能はethtoolで提供)
インターフェイスドライバの割り込み番号を指定する。
ifconfig [インターフェイス名] mem_start [共有メモリ利用アドレス]
(同一機能はethtoolで提供)
インターフェイスドライバの共有メモリ利用アドレスを指定する。
ifconfig [インターフェイス名] media [type]
(同一機能はethtoolで提供)
インターフェイスが使用するメディアの種類を指定する。「auto(自動認識)」「10baseT」「10base2」などが指定できる。
ifconfig [インターフェイス名] mtu [転送サイズ] ip link set dev [インターフェイス名] mtu [転送サイズ] インターフェイスのMTU(Maximum Transfer Unit:Ethernetフレームの最大転送サイズ)を指定する。
ifconfig [インターフェイス名] multicast ip link set dev [インターフェイス名] multicast on
(無効時:ip link set dev [インターフェイス名] multicast off)
マルチキャストの利用を有効(無効)にする。
ifconfig [インターフェイス名] netmask [サブネットマスク]
(同一機能は非提供)
このインターフェイスが使用するサプネットマスクを設定する。
ifconfig [インターフェイス名] pointopoint
(無効時:ifconfig [インターフェイス名] -pointopoint)

(同一機能は非提供ながら、ipppd [インターフェイス名] で対応している。)
指定したIPアドレスとの間のみで通信を行う(ポイント間通信の設定)。PLIP(Parallel Line Interface Protocol)などで使用する。
ifconfig [インターフェイス名] promisc
(無効時:ifconfig [インターフェイス名] -promisc)
ip link set dev [インターフェイス名] promisc on
(無効時:ip link set dev [インターフェイス名] promisc off)
自身向け以外のすべてのパケットの受信を有効にする。
ifconfig [インターフェイス名] txqueuelen [転送サイズ] ip link set dev [インターフェイス名] txqueuelen [転送サイズ] (無効時:ip link set dev [インターフェイス名] txqlen [転送サイズ]) パケットの送信キューのサイズを指定する。
ifconfig [インターフェイス名] tunnel [IPアドレス] ip tunnel mode sit IPv6 over IPv4トンネルのための相手先アドレスを指定する。

4.iptunnel

iptunnnelコマンドのiproute2での代替コマンドは以下の通り。

net-tools iproute2 コマンドの概要
iptunnel [add | change | del | show] ip tunnel a (ip tunnel add)
ip tunnel chg (ip tunnel change)
ip tunnel d (ip tunnel del)
ip tunnel ls (ip tunnel show)
IPトンネルの作成、変更、削除、表示を行う。
iptunnel add [名前] [mode {ipip | gre | sit} ] remote [IPアドレス] local [IPアドレス] ip tunnel add [名前] [mode {ipip | gre | sit | isatap | ip6in6 | ipip6 | any }] remote [IPアドレス] local [IPアドレス] IPトンネルの追加を行う。
iptunnel -V
(iptunnel –version)

(同一機能は非提供)
iptunnelコマンドのバージョンを表示する。

5.iwconfig

iwconfigコマンドのiproute2での代替コマンドは以下の通り。

net-tools iproute2 コマンドの概要
iwconfig iw dev [インターフェイス名] link 無線LANインタフェースの状態の確認を行う。
iwconfig [インターフェイス名] ap [MACアドレス]
(同一機能は非提供)
接続するアクセス・ポイントのMACアドレスを指定する。
iwconfig commit
(同一機能は非提供)
設定が即座に反映されないアダプタに対し、設定を反映させる。
iwconfig [インターフェイス名] essid [SSID] iw [インターフェイス名] connect [SSID] ESSIDを指定する。anyと指定すると特定のESSIDに固定しない。
iwconfig [インターフェイス名] frag [パケット数]
(同一機能は非提供)
最大フラグメンテーションのパケット・サイズを指定する。
iwconfig [インターフェイス名] freq 周波数 iw dev [インターフェイス名] set freq [周波数] [HT20|HT40+|HT40-] 無線の周波数を指定する。
iwconfig [インターフェイス名] channel [チャンネル数] iw dev [インターフェイス名] set channel [チャンネル数] [HT20|HT40+|HT40-] 無線のチャンネル数を指定する。
iwconfig [インターフェイス名] key [WEPキー] iw [インターフェイス名] connect [接続名] keys [WEPキー] WEPキーを指定する。指定は16進数で8けた(XXXXXXXX)または16けた(XXXX-XXXX-XXXX-XXXX)で指定する。
iwconfig [インターフェイス名] mode [モード名]
(同一機能は非提供)
接続モードを指定する。アドホック接続なら「Ad-Hoc」,インフラストラクチャ接続するなら「Managed」と指定する。
iwconfig [インターフェイス名] modu [modulation]
(同一機能は非提供)
直交変調を行うかどうかを指定する。
iwconfig [インターフェイス名] nick [ニックネーム]
(同一機能は非提供)
ニックネームを指定する。
iwconfig [インターフェイス名] nwid [ネットワークID]
(同一機能は非提供)
ネットワークIDを指定する。
iwconfig [インターフェイス名] power [オプション] iw dev [インターフェイス名] set power_save on
iw dev [インターフェイス名] get power_save
出力パワーの制限などを指定する。
iwconfig [インターフェイス名] rate/bit [ビットレート] iw [インターフェイス名] set bitrates legacy-2.4 12 18 24 ビット・レートを指定する。
iwconfig [インターフェイス名] retry [option] [ミリ秒]
(同一機能は非提供)
MACアドレスを転送する際のリトライ時間を指定する。
iwconfig [インターフェイス名] rts [ノード数]
(同一機能は非提供)
RTS/CTS(Request To Send/Clear To Send)のノード数を指定する。
iwconfig [インターフェイス名] sens [デジベル数] 感度しきい値を指定する。 感度しきい値を指定する。
iwconfig [インターフェイス名] txpower [出力パワー(dBM)] iw dev [インターフェイス名] set txpower [auto | fixed | |limit] [出力パワー(mBm)] 出力パワーを指定する。
iwconfig –help iw help ヘルプを表示させる。
iwconfig –version iw –version バージョンを表示させる。

6.nameif

nameifコマンドのiproute2での代替コマンドは以下の通り。

net-tools iproute2 コマンドの概要
nameif [新しいインターフェイス名] [MACアドレス] ip link set dev [インターフェイス名] name [新しいインターフェイス名] ifrename -i [インターフェイス名] -n [新しいインターフェイス名] ネットワークインターフェイスの名前を変更する。
nameif -c [設定ファイル] ifrename -c [設定ファイル] 通常読み込まれるファイル「/etc/mactab」ではなく、指定した設定ファイルを読み込む
nameif -s
(同一機能は非提供)
全てのエラーメッセージをsyslogに送るようにする。

7.netstat

netstatコマンドのiproute2での代替コマンドは以下の通り。

net-tools iproute2 コマンドの概要
netstat -a
(netstat -all)
ss -a
(ss -all)
現在のネットワーク接続の一覧を表示する。
netstat -A?[プロトコル種別] netstat ?–protocol=[プロトコル種別] ss -f [プロトコル種別] ss ?family=[プロトコル種別] プロトコル種別(inet、inet6など)ごとに結果を表示する。
netstat -c
netstat?–continuous

(同一機能は非提供)
指定された情報を 1 秒ごとに表示し続ける。
netstat -C ip route list cache 経路キャッシュからの経路情報を表示する。
netstat -e
netstat?–extend
ss -e
ss?–extend
さらに詳しい情報を表示する。 このオプションを 2 個指定すれば最も詳しい表示が得られる。
netstat -F
(同一機能は非提供)
FIB からの経路情報を表示する。
netstat -g
netstat –groups
ip maddr
ip maddr show [インターフェイス名]
IPv4 と IPv6 のマルチキャストグループメンバーシップ情報を表示する。
netstat -i
netstat –interface=[インターフェイス名]
ip -s link 全ての (あるいは –interface で指定した) ネットワークインターフェースの状態テーブルを表示する。
netstat -l
netstat –listening
ss?-l
ss?–listening
接続待ち (listen) 状態にあるソケットのみを表示する。
netstat -M
netstat?–masquerade

(同一機能は非提供)
マスカレードされた接続を表示する。
netstat -n
netstat?–numeric
ss?-n
ss?–numeric
ホスト・ポート・ユーザーなどの名前を解決せずに、数字のアドレスで表示する。
netstat –numeric-hosts
(同一機能は非提供)
ホストアドレスを数値で表示する。 ただし、ポート名とユーザー名の解決は行う。
netstat –numeric-ports
(同一機能は非提供)
ポート番号を数値で表示する。 ただし、ホスト名とユーザー名の解決は行う。
netstat –numeric-users
(同一機能は非提供)
ユーザー ID を数値で表示する。 ただし、ホスト名とポート名の解決は行う。
netstat -N
netstat?–symbolic
ss -r
ss?–resolve
数字表現の代わりにシンボリックホスト,ポート,ユーザー名を表示する。
netstat -o
netstat –timers
ss -o
ss?–options
ネットワーキングタイマーに関する情報が追加される。
netstat -p
netstat –program
ss -p 各ソケットが属しているプログラムの PID と名前が表示される。
netstat -r
netstat –route
ip route
ip route show all
カーネルの経路テーブルを表示する。
netstat -s
netstat –statistics
ss -s 各プロトコルの統計情報の一覧を表示する。
netstat -t
netstat –tcp
ss?-t
ss?–tcp
TCPだけを表示する。
netstat -T
netstat?–notrim

(同一機能は非提供)
トリミングロングアドレスを止める。
netstat -u
netstat –udp
ss?-u
ss?–udp
UDPだけを表示する。
netstat -v
netstat –verbose

(同一機能は非提供)
詳細表示モードになり、起こっていることをユーザーに知らせる。 特に、設定されていないアドレスファミリー関する有用な情報をいくつか表示する。
netstat -w
netstat –raw
ss?-w
ss?–raw
rawソケットだけを表示する。
netstat -Z
netstat?–context

(同一機能は非提供)
SELinuxが有効であればSELinuxの情報を表示する。

8.route

routeコマンドのiproute2での代替コマンドは以下の通り。

net-tools iproute2 コマンドの概要
route ip route FIB(フォワーディング・インフォメーション・ベース:静的ルーティング・テーブル)の経路情報を表示する。
route -A [プロトコル種別] route?–[プロトコル種別] ip -f [プロトコル種別] route プロトコル種別(inet、inet6など)を指定する。
route -C
route –cache
ip route show cache カーネルキャッシュでの情報を表示する。
route -e
route?-ee
ip route show netstatと同様のフォーマットで表示する。-eeはnetstat形式のデータも含めた詳細情報を表示する
route -F
route –fib

(同一機能は非提供)
FIB(Forwarding Information Base:Linuxにおけるルーティングテーブルの実装方式。宛先IPアドレスをキーに経路情報を効率的に配置して性能の向上を図っている)テーブルを用いる。
route -h
route?–help
ip route help ヘルプを表示する。
route -n
(同一機能は非提供)
出力をIPアドレスのみに抑制する(DNS逆引きを行わない)
route -v
route?–verbose
ip -s route 詳細モードで表示する。
route -V
route?–version
ip -V バージョンを表示する。
route add …
(route del …)
ip route [add | chg | repl | del] [ネットワークアドレス] via [ゲートウェイアドレス] routeを追加、削除、変更する。
route add dev [インターフェイス名]…
(route del dev [インターフェイス名]…)
ip route [add | chg | repl | del] dev [インターフェイス名] 経路が割り当てられるインターフェイス名を指定する。
route add [default] gw [ゲートウェイアドレス]…
(route del [default] gw [ゲートウェイアドレス]…)
ip route [add | del] default via [ゲートウェイアドレス] 経路が使用するゲートウェイIPアドレスを指定する。
route add -host…
(route del -host…)

(同一機能は非提供)
ホストのための経路情報として登録する。
route add -irtt [ラウンドトリップ時間(ミリ秒)]…
(route del -irtt [ラウンドトリップ時間(ミリ秒)]…)
ip route [add | chg | repl | del] rtt [ラウンドトリップ時間] 経路におけるTCPの初期ラウンドトリップ時間を指定する。ラウンドトリップ時間はTCPコネクションにおける通信途絶を判断するまでのタイムアウト時間である。単位はミリ秒。1~12000の範囲で指定する
route add?-net…
(route del?-net…)

(同一機能は非提供)
ネットワーク(サブネット)のための経路情報として登録する
route add [-net|-host] netmask [サブネットマスク] (route del?[-net|-host] netmask [サブネットマスク])
(同一機能は非提供)
サブネットマスクを設定する。
route add?metric [メトリック値]…
(route del metric [メトリック値]…)
ip route [add | chg | repl | del] metric [メトリック値] ip route [add | chg | repl | del] preference [メトリック値] 経路のメトリック値を指定する。
route add [mod | dyn | reinstate]…
(route del [mod | dyn | reinstate]…)

(同一機能は非提供)
ダイナミックルーティング時などに利用される診断用フラグを設定する。
route add mss [MSSサイズ(bytes)]…
(route del mss [MSSサイズ(bytes)]…)
ip route [add | chg | repl | del] advmss [MSSサイズ] 経路におけるMSS(Maximum Segment Size:TCPパケットの最大データサイズ)を指定する。デフォルトはインターフェイスのMTU(ifconfigコマンドで指定)から導かれる。単位はバイト。
route add reject…
(route del reject…)
ip route add prohibit [ネットワークアドレス] ルーティングを拒否する経路を指定する。なお、この拒否はデフォルトゲートウェイより優先する。
route add?window [Windowサイズ(bytes)] (route del window [Windowサイズ(bytes)]) ip route [add | chg | repl | del] window [Windowサイズ(bytes)] TCPにおけるwindowサイズを指定する。windowsサイズはTCPコネクションにおける最大連続転送サイズである。単位はバイト。

 

以上。こうしてみると、iproute2で全て1対1に対応している訳ではないようだ。

プロのための〔図解〕ネットワーク機器入門 スイッチ、ルータからファイアウォールまで徹底解説 プロのための〔図解〕ネットワーク機器入門 スイッチ、ルータからファイアウォールまで徹底解説

APU1.CとVyOS(Vyatta)で自作ルーター

$
0
0

以前から、自宅用のルーターをVyOS(Vyatta)で構築したいと考えていたのだが、通常のx86のマザーボード基板(Core iシリーズが乗るようなやつ)を利用すると電気代がかかるし、ちょっとなぁ…と考えていた所、LANコネクタを3ポート搭載したx86対応のPCEngines社製の基板、APU1.Cというものを知った。

apu1c1

 

ALIXと呼ばれていたシリーズの後継機らしい。下の画像を見てもらえればわかるが、大きさもかなり小さい。

2015-01-03 12.49.11

 

TDPもせいぜい6W程度と省電力で、USBも搭載しているので無線LANアダプタの増設も可能。miniPCIの無線LANカードを増設し、外付けの無線LANアンテナも追加できる。x86のCPUを搭載したルーターを作るには持ってこいだ。
今回の構築で使用したパーツや資材は、以下になる。

上記には、玄箱などをいじっていた人にはかなり違和感のある代物があると思う。
そう、このAPU1C、ちょっと変則的な方法ではあるが、普通にディスクからOSのインストールが可能なのだ!
…まぁ、単純にVyOSがシリアル接続に対応している、というだけなんだけど。

なお、これらのパーツはスイッチサイエンスさんおよびヤマモト・ツール・ワークスさんにて購入した。

1.組み立て

まずはapu1cのボードとケース、mSATA SSDの組み立て。
といっても難しくはない(ちょっと面倒ではあるが)。

まずは、付属している放熱用の金属板を、背面のチップとくっつける。
この時、くっつけるシールの粘着力がえらく弱いので、ケースに組み付けるときに注意が必要。落っこちるから。下の画面では青いシールを貼ったままにしているけど、これも剥がしてケースに貼ってもらいたい(これも粘着力が弱い)。

2015-01-03 13.29.31-2

 

次に、シリアルコネクタの両脇にあるスペーサーを外して、ケースに組み付けて、ネジ止めするだけ。
後は蓋つけて終わり。最初の放熱板のとこが一番面倒臭い…。

2.VyOSのインストール

次に、VyOSのインストールを行う。
APU1.Cには電源ボタンというものは存在しないので、電源ケーブルの接続前にUSB DVDドライブにVyOSのディスクを入れて接続。
あと、シリアル接続するPCでUSBシリアルコンソールとクロスケーブルを用いてシリアル接続。接続用のソフトはTeratermなどを利用する。
シリアルポート接続の速度は、今時点は「115200」とする。

シリアル接続された状態で電源ケーブルを指すと、以下のようにBIOSの内容が出力される。

 PC Engines APU BIOS build date: Jul  8 2014
 Total memory 4096 MB
 AMD G-T40E Processor
 System memory size: 4080 MB
 SeaBIOS (version SageBIOS-20140708_12%00:00-frink)
 SeaBIOS (version SageBIOS-20140708_12%00:00-frink)
 Found coreboot cbmem console @ df150400
 Found mainboard PC Engines APU
 Relocating init from 0x000e8dd1 to 0xdf106630 (size 39171)
 Found CBFS header at 0xfffff8c8
 found file "bootorder" in cbmem
 CPU Mhz=1000
 Found 27 PCI devices (max PCI bus is 05)
 Copying PIR from 0xdf160400 to 0x000f26b0
 Copying MPTABLE from 0xdf161400/df161410 to 0x000f24c0 with length 1ec
 Copying ACPI RSDP from 0xdf162400 to 0x000f24a0
 Copying SMBIOS entry point from 0xdf16d800 to 0x000f2480
 Using pmtimer, ioport 0x808
 Scan for VGA option rom
 EHCI init on dev 00:12.2 (regs=0xf7f08420)
 Found 1 lpt ports
 Found 2 serial ports
 AHCI controller at 11.0, iobase f7f08000, irq 11
 EHCI init on dev 00:13.2 (regs=0xf7f08520)
 EHCI init on dev 00:16.2 (regs=0xf7f08620)
 Searching bootorder for: /pci@i0cf8/*@11/drive@0/disk@0
 AHCI/0: registering: "AHCI/0: SB mSATA SSD ATA-10 Hard-Disk (14318 MiBytes)"
 Searching bootorder for: /rom@img/setup
 Searching bootorder for: /rom@img/memtest
 Searching bootorder for: /pci@i0cf8/usb@12,2/storage@1/*@0/*@0,0
 Searching bootorder for: /pci@i0cf8/usb@12,2/usb-*@1
 OHCI init on dev 00:12.0 (regs=0xf7f04000)
 OHCI init on dev 00:13.0 (regs=0xf7f05000)
 OHCI init on dev 00:14.5 (regs=0xf7f06000)
 OHCI init on dev 00:16.0 (regs=0xf7f07000)
 Searching bootorder for: /pci@i0cf8/usb@16,2/storage@1/*@0/*@0,0
 Searching bootorder for: /pci@i0cf8/usb@16,2/usb-*@1
 USB MSC vendor='Multiple' product='Card  Reader' rev='1.00' type=0 removable=1
 Device reports MEDIUM NOT PRESENT
 scsi_is_ready returned -1
 Unable to configure USB MSC drive.
 Unable to configure USB MSC device.
 USB MSC vendor='BUFFALO' product='Optical Drive' rev='2.00' type=5 removable=1
 All threads complete.
 Scan for option roms
 Running option rom at c000:0003


 iPXE (http://ipxe.org) 00:00.0 C000 PCI2.10 PnP PMMpmm call arg1=1
 pmm call arg1=0
 +DF0E2F50pmm call arg1=1
 pmm call arg1=0
 +DF042F50 C000
 Press Ctrl-B to configure iPXE (PCI 00:00.0)...


 Searching bootorder for: /rom@genroms/pxe.rom

 Build date: Jul  8 2014

 Press F10 key now for boot menu:

 Searching bootorder for: HALT
 drive 0x000f2410: PCHS=16383/16/63 translation=lba LCHS=1024/255/63 s=29323728
 Space available for UMB: c1000-ee800, f0000-f23b0
 Returned 253952 bytes of ZoneHigh
 e820 map has 8 items:
   0: 0000000000000000 - 000000000009fc00 = 1 RAM
   1: 000000000009fc00 - 00000000000a0000 = 2 RESERVED
   2: 00000000000f0000 - 0000000000100000 = 2 RESERVED
   3: 0000000000100000 - 00000000df14e000 = 1 RAM
   4: 00000000df14e000 - 00000000e0000000 = 2 RESERVED
   5: 00000000f8000000 - 00000000f9000000 = 2 RESERVED
   6: 0000000100000000 - 000000011f000000 = 1 RAM
   7: 000000011f000000 - 0000000120000000 = 2 RESERVED
 enter handle_19:
   NULL
 Booting from DVD/CD...
 Waiting for device to detect medium... Booting from 0000:7c00

 ISOLINUX 4.02 debian-20101014 ETCD

「ISOLINUX 4.02 debian-20101014 ETCD」という一文以降は、シリアル接続の速度が変わるので、115200から9600に切り替える。

後は、VyOSを通常通りインストールするだけだ。
VyOSのインストール手順については、こちらを参照してもらいたい。

3.VyOSの初期設定

インストール完了後は、VyOSの初期設定を行うだけだ。
初期設定方法については、こちらを参照してもらいたい。

また、シリアルコンソール接続を今後利用する場合、シリアル接続の速度を115200に変更すると良いだろう。以下のコマンドをVyOS上で実行し再起動したら、以降は115200で接続可能だ。

 $ configure
 # set system console device ttyS0 speed '115200'
 # commit
 # save

うーん、これはいいなぁ…
次は無線LANカード買って、外付けアンテナを増設してみよう。

ALIX.2D2(ケース付き) ALIX.2D2(ケース付き)

自作ルーターの構築に最適な小型コンピュータボード7選

$
0
0

自作PCの趣味を持つ人は一定数いると思うが、さすがにルーターまで自作している人間は限られるだろう。
通常であれば、自宅用のルーターであればその辺のBuffalo製、もしくはより安定しているNEC製のルーターを使えばいい。

しかし、そういった家庭用ルーターだと、業務用の機器に比べて機能が劣る面がある。だからといって、業務用ルーターなんて新品で購入すれば10万は軽く超えてしまう。中古であればもう少し安くできるが、古い機器になるため、性能面に不安がある。
家庭で業務用ルーターと同等の機能を、それなりのお値段で実現するのであれば、PCベースの基板を用意しそれにルータ用のOSをインストールする方法がある。これならば簡単に業務用ルーターと同等の機能・性能を、それなりのお値段で実現できる。

そんなわけで今回は、自分でルーターを自作する際に便利なコンピュータボードを7個紹介する。

1.PC Engine APU1シリーズ

apu1c1

PC Engine社のx86_64系小型ボードで、AMDのCPUを搭載している。x86_64系なので、当然VyattaやVyOS、SEIL x86といったPCルーター用のOSが動作する。
搭載されているLANポートは3つ。全てGigabit Ethernetだ。ビデオ端子は搭載しておらず、シリアルケーブルで接続しOSのインストールや設定を行う。
日本国内だと、オーディオ用ボードとして販売されている事が多いらしい。後述する前モデルであるALIXシリーズと違い、miniPCI-Express接続のmSATA SSDを用いる。CFは利用出来ないので注意。

私も、実際にこのボードとVyOSで無線LANルーターを構築している。

テストで1週間以上連続稼働をさせているが、問題なく安定している。
あまりルーターの場所を取りたくない時にいい選択肢だろう。

しかし、PCIの増設が出来ないため、基本的にLANポートの増設は出来ない。
そのため、拡張性は無いと考えて良いだろう。LANポートが3つ以上必要な場合は、後述する他のボードを利用してもらいたい。

また、こちらのレビューにも記述されているが、CPUの処理速度があまり早くない。
大きく負荷をかける運用をするのであれば、別の基板の方が向いているかもしれない。

日本国内で入手する場合は、ヤマモト・ツール・ワークスさんやSWITCH SCIENCEさんなどで入手すると良いだろう。

2.PC Engine ALIXシリーズ

CPUはAMD、NICを3ポート搭載している、正方形の小型シングルボードコンピュータのシリーズ。
先ほど紹介したAPU1シリーズの前シリーズで、日本国内でもこのボードを使ってルーターを構築した例がいくつもある。

スペック的には、最初に紹介した後継シリーズであるAPU1シリーズに比べて下がるのだが、その分値段が安くなっている。
性能は低くても、比較的安い値段でルーターを構築したい場合は、こちらの基板の方がいいかも知れない。

後継のAPU1シリーズと同様、拡張性は無いに等しい。
LANポートが3つ以上必要な場合は、後述する他のボードを利用した方が良いだろう。

3.Jetway NF9HQL-525

truneo37_jp-img600x400-1387173960dqdimu18406

2012年頃に発売された、Atom Dual Core D525 (1.80GHz)を搭載したMini-ITXボード。
LANは4×Gigabit Ethernet、PCI Express x1スロットがあるため、PCI Expresss x1 -x16変換ケーブルなどを用いて、NICを増設する事も可能だろう。


PCI Express x1 to x16 1X-16X pcie1X バス延長変換ケーブル 15cm Enlargecorp


インテル Ethernet クアッドポート サーバ・アダプタ I340-T4 バルク 【並行輸入】

ケースは、NICを増設するならばSST-ML05、SST-ML07辺りを使うと良いだろう。


SilverStone Miloシリーズ mini-ITX対応HTPCケース ブラック SST-ML07B


SilverStone Milo Series Mini-ITX HTPCケース ブラック SST-ML05B

現時点では、このボードはヤフオク等で入手することが可能だ。

4.Jetway NF38QLB-525

518jBsBd9XL._SY355_

前述のNF9HQL-525を更に半分の面積にし、なおかつLANポートの数はそのまま保ったボード。
残念ながら、日本国内で入手するには輸入以外方法がない。アメリカなどから、Amazonで購入するのが良いだろう。

5.FX5625

image_149614_1

8ポートのGigabit Ethernetを搭載したMini ITX対応のPCルーター。
これについては、ボードというよりもx86対応のルーター機器として販売されていると考えた方がよさそうだ。

こちらも、国内で調達するのは難しいと思われる。
欲しい場合は、アメリカや中国などから輸入するしか無いだろう。

6.GA-9SISLA1SAi-2750F

9813_big

Supermicro-A1SAi-2750F-Test-Platform

GIGABITE、SuperMicro社がそれぞれ出しているボード。
どちらもGigabitのLANポートを4ポート搭載し、マネジメントポートを搭載しているという、まさにサーバ用のボード…なのだ。

もちろん、お値段もサーバ用だ。1枚5万円を超える。
品質としては、今回紹介したボードの中ではトップだと思うが、いかんせん高い。
業務用…というかデータセンター用であれば、1Uラックをルーターにした方が早いだろう。そのため、あまりおすすめは出来ない。

7.Banana PI BPI R1 Opensource Router 

BPI R1 Banana Pi R1 free shipping.Smart Open-source Wireless Router.

以前、私も実際に試してみた事がある基板。
Raspberry Piのルーター版といった代物(…というか、Raspberry Pi のパクr互換機のBanana Pi のルーター版)

使用感としては…お察しください
正直、実用としては使い物にはならないのだが、おもちゃとしてはまぁいいだろう、というレベル。
…まぁ、購入して3日でボード自体が壊れて起動すらしなくなったのだが

とはいえ、コンセプトは非常に面白いため、今後への期待を込めてここにラインナップしておくことにする。

以上、7種類のコンピューターボードを紹介した。
個人的には、あまり性能や拡張性を求めないならばAPU1シリーズを、それ相応の性能や拡張性を求めるならばNF9HQL-525を選択すると良いだろう。

ルーター自作でわかるパケットの流れ ルーター自作でわかるパケットの流れ

Vyatta/VyOSで利用するキーボードを日本語配列キーボードにする

$
0
0

Vyatta/VyOSをインストールする際、キーボードの種類について聞かれないため、英語キーボードのままになっている人も多いだろう。個人的には英字キーボードを利用しており、またVyatta/VyOSにはSSH経由でアクセスすることの方が多いのであまり困ることが無いのだが、VMware ESXi上にインストールして、日本語配列のノートPCで作業をする際は確かに困る。「@」の位置とかが違うし、「|(パイプ)」なんかは入力が出来ない。
というわけで、今回はそんなVyatta/VyOSで日本語キーボードを利用する設定について記述する。

1.『set console keymap』を利用する

Vyatta/VyOSのオペレーショーンモードで利用する方法として、『set console keymap』でキーボードの種類を設定できる。

$ set console keymap

20150118_000001

 

コマンド実行後、キーボードのモデルを選択する画面が表示される。

20150118_000004

 

キーボード配列についてはこの次なので、とりあえず「IBM SPACE SAVER」で設定しておく。

20150119_000007

 

元の設定によっては、以下のような画面が表示されるので、「No」を選択する。

20150119_000008

 

次の画面では「USA」だけしか表示されてないので、「Other」を選択する。

20150119_000009

 

Other以降、画面の転移としては以下のようになる。

20150119_000010

20150119_000011

20150119_000012

20150119_000013

これで、日本語キーボードとして利用できるようになった。

2.『/etc/default/keyboard』を編集する

「/etc/default/keyboard」には、VyOSが起動時に読み込むキーボードの情報が記述されている。
以下のコマンドを実行し、keyboardを「pc106」「jp」に設定する。

sed -i -e '/XKBMODEL/s/"\(.*\)"/"pc106"/g' '/XKBLAYOUT/s/"\(.*\)"/"jp"/g' /etc/default/keyboard

設定後、再起動を行えば設定が完了する。

以上、2通りの方法でVyatta/VyOSでの日本語キーボード設定が出来る。

瞬間操作!高速キーボード術―マウスに頼らないパソコンの動かし方 (ブルーバックス) 瞬間操作!高速キーボード術―マウスに頼らないパソコンの動かし方 (ブルーバックス)

これはすごい!telnetで利用出来るサービス4個

$
0
0

リモートマシンに接続する際に利用されるTelnet、今ではあまり使われる事が無くなったが、今でも、いや今だからこそ?そんなTelnetで利用出来るサービスがまだ残っているようだ。
今回は、そんなサービスを4つほど紹介する。

1.TelnetでみるStarWars

以前こちらでも取り上げたものだが、telnetで接続すると同時にアスキーアートで作成されたStarWars Epsode IVが再生されるというもの。
telnetコマンドで、以下のように接続する。

telnet towel.blinkenlights.nl 23

20150411_000008

 

telnetコマンドがない場合、こちらのWebページから同じものをみることが出来る。

2.Telnetで囲碁・チェスをする

一昔前に流行っていたと言われているtelnetで囲碁やチェスをするサービスも、まだ現役のようだ。
telnetで囲碁の対局や観戦をするサービス『WING』には、以下のコマンドでアクセスする。

telnet wing.gr.jp 1515

20150411_000009

 

『WING』の細かい使い方については、こちらのページに詳しく記述されている。

チェスについては、以下のコマンドで『freechess.org』にアクセスできる。

telnet  freechess.org 5000

20150411_000012

3.気温や降水量をグラフで出力させる

telnetで接続し、 気温や降水量をグラフで表示してくれるサービスもある。
以下のコマンドで接続後、「tokyo」と入力した例が以下。

telnet graph.no 79

20150411_000014

4.telnetでNetHackをプレイする

telnetで、コンソールでプレイできるローグライクゲーム『NetHack』をプレイすることもできる。

telnet nethack.alt.org

20150411_000016

 

JNetHack(日本語訳版)も、2015年04月時点ではテスト中のようだが、以下のコマンドでアクセス、プレイできる。

telnet nethack.matsuu.net

 

以上、ちょっと面白そうなものを抜粋してみた。
業務でサーバなどを触っていると、telnetなんてもう使われていない印象を受けてしまうが、セキュリティを考慮しない環境であればまだまだ現役で利用できる事を再認識した。

NetHack/JNetHackの他にもtelnetでゲームをプレイできるサーバが多く存在しているので、興味がある人は調べてみるのもいいのではなかろうか。

ネットワーク超入門講座 保守運用管理編 ネットワーク超入門講座 保守運用管理編

LAN内で利用されているIPアドレスを調べる『arp-scan』コマンド

$
0
0

あまり知らない環境で作業をする際、LAN内で稼働しているマシンの一覧が欲しくなる事もあるだろう。
そんなときに便利なのが、今回紹介する『arp-scan』コマンドだ。

このコマンドを実行することで、同じネットワークに所属して動作しているマシンのIPアドレスとMACアドレスの一覧を取得することができる。

1.インストール

まずはインストールから。
インターネットに接続している環境であれば、以下のコマンドを実行するだけだ。

●Debian/Ubuntuの場合

apt-get install arp-scan

 

●RHEL系の場合

yum install arp-scan

 

ソースからコンパイルする場合は、前提となるpcapなどをインストールした上で、以下のようにコマンドを実行する。

git clone https://github.com/royhills/arp-scan.git
cd arp-scan
autoreconf --install
./configure
make & make install

2.コマンド実行

さて、それでは実際にコマンドを実行してみよう。
以下のように実行する。

arp-scan -I スキャンを行うネットワークアダプタ(eth0など) -l

 

実際に出力した結果がこちら。
下の画像のように、左からIPアドレス、MACアドレス、MACアドレスから推測したNICの製造ベンダーとなっている。

20150423_000000

 

うん、これは便利だ。
出力もあっという間なので、今までpingとarpを組み合わせた方法などで割り出していた事も、すぐに調査出来るだろう。

ネットワーク超入門講座 第3版 ネットワーク超入門講座 第3版

LAN内で利用されているIPアドレスを常時監視して一覧を出力し続ける『netdiscover』コマンド

$
0
0

以前、LAN内のIPアドレスを高速に取得するコマンド『arp-scan』を紹介したが、今回紹介する『netdiscover』はその一覧の出力を常時行ってくれる。
新しいIPアドレス(MACアドレス)がLAN内に追加されると、一覧に追記されるという、ちょっと便利なコマンドだ。ペネトレーションテストで使われているOS『BackTrack』などにも入っている。

今回は、Ubuntu 14.04 LTSにこの『netdiscover』コマンドをインストールし、実際に使ってみる事にする。

1.インストール

まずはインストールから。以下のコマンドを実行する。

●Debian/Ubuntuの場合

apt-get install netdiscover

 

これで、インストールが完了した。

2.コマンド実行

さて、それでは実際にコマンドを利用してみよう。
以下のように実行する。

netdiscover -r ネットワークアドレス/サブネット

 

例えば、「192.168.1.0/24」に対しスキャンをする場合は、以下のように実行する。

netdiscover -r 192.168.1.0/24

 

実際に実行した画面がこちら。

20150429_000006

 

さて、上の画面になったら、このLANに所属しているマシンの電源を入れてみる。
すると…

20150429_000008

 

新しくネットワークに接続されたMACアドレス、IPアドレスを認識し、一覧に追記された。
DHCPで新規にマシンを追加するなど、IPアドレスがわからない(予測出来ない)場合に重宝しそうだ。

実践 Metasploit ―ペネトレーションテストによる脆弱性評価 実践 Metasploit ―ペネトレーションテストによる脆弱性評価

LAN内で使われているIPアドレスを調べる6つの方法(Linux/Windows)

$
0
0

今回は、LAN内で利用されているIPアドレスを調べる方法についてをまとめてみた。
環境によっては使用されているOSが複数ある場合がある(というか、その方が多い)ので、LinuxとWindowsで分けて記載する。

1.Linuxの場合

1-1.ping + arpで調べる

基本的なコマンドしかインストールされていない環境では、やはりpingとarpコマンドを組み合わせた方法が良く利用されるだろう。
以下のようにforコマンドと組み合わせて実行することで、IPアドレスとそれに対応するMACアドレスを取得することが出来る。

for a in `seq 1 254`; do ping -c 1 -w 0.5 対象セグメント(第3オクテットまで).$a > /dev/null && arp -a 対象セグメント(第3オクテットまで).$a | grep ether; done
test@ubuntu-server:~$ for a in `seq 1 254`; do ping -c 1 -w 0.5 192.168.0.$a > /dev/null && arp -a 192.168.0.$a | grep ether; done
? (192.168.0.1) at 1c:bX:7f:X4:2d:3c [ether] on eth0
? (192.168.0.XX) at 00:X5:b7:03:X3:X7 [ether] on eth0
・
・
・

1-2.『nmap』コマンドを利用する

もしその環境にnmapコマンドが入っているマシンがあるならば、以下のようにsPオプションを付与してnmapコマンドを実行することで、ローカルのIPアドレス一覧が取得出来る。
※sPオプションはICMPと80番ポートへの疎通確認を行うオプションなのだが、権限が弱いユーザ(一般ユーザ)でコマンドを実行すると80番ポートへのスキャンのみ行われるので注意。

nmap -sP ネットワークアドレス(192.168.0.0/24や192.168.0.*)
test@test-vm-ubuntu:~$ sudo nmap -sP 192.168.0.0/24

Starting Nmap 6.40 ( http://nmap.org ) at 2015-05-17 12:05 JST
Nmap scan report for 192.168.0.1
Host is up (0.00083s latency).
MAC Address: 1C:BX:7X:XX:2D:XC (NEC AccessTechnica)
Nmap scan report for 192.168.0.XXX
Host is up (-0.085s latency).
MAC Address: 0X:1X:XX:DD:X8:XX (Dell ESG Pcba Test)
・
・
・

1-3.『arp-scan』コマンドを利用する

以前こちらで紹介した事があるツール『arp-scan』コマンドを利用することで、ローカルネットワーク内で利用されているIPアドレスの一覧を取得することが出来る。
このコマンドの場合、ただ単純にpingを打ち続けるようなものではなく、tcpdumpを利用して一覧を取得している。

arp-scan -I インターフェイス名 -l
test@test-vm-ubuntu:~$ sudo arp-scan -I eth0 -l
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.0.1     1c:bX:7f:X4:2d:3c       (Unknown)
192.168.0.XXX   0X:1X:XX:DD:X8:XX       Dell Inc
192.168.0.XYZ   0X:Xa:6X:XX:0a:XX       Data Robotics, Incorporated
・
・
・

1-4.『netdiscover』コマンドを利用する

こちらの記事でも紹介したツール。
コマンドを実行することでネットワーク内を監視し続け、新しいMACアドレスやIPアドレスを検知するとコンソール上に出力されている一覧に追記していく。

netdiscover -r ネットワークアドレス/サブネット

20150429_000008

 

2.Windowsの場合

2-1.ping + arpで調べる

Windowsでローカルネットワーク内を調べる場合でも、pingとarpを組み合わせる方法は有効だ。
以下のようにコマンドを実行することで、指定したネットワーク内のIPアドレスにpingを実行し続け、arpテーブルに記録していく。

for /l %i in (0,1,255) do ping -w 1 -n 1 192.168.0.%i && arp -a 192.168.0.%i

 

後は、「arp -a」コマンドを実行して現在利用されているIPアドレスを確認するだけだ。

2-2.『SoftPerfect Network Scanner』を利用する

Windowsでping + arpを用いた方法以外でローカルネットワーク内のIPアドレスを調べる場合、GUIで操作出来るソフトが多く出ている。
もしフリーソフトをダウンロード出来る環境なのであれば、その中でも比較的扱い易い『SoftPerfect Network Scanner』を利用して調べると良いだろう。

20150517-000000

スラスラわかるネットワーク&TCP/IPのきほん スラスラわかるネットワーク&TCP/IPのきほん

Linuxのtracerouteコマンドで覚えておきたい使い方8個

$
0
0

特定のホストへのルートを確認するコマンドといえば、tracerouteコマンドだ。
今回は、そんなtracerouteコマンドで覚えておきたい使い方についてまとめてみる事にした。

1.基本的な使い方

tracerouteコマンドは、基本的には以下のように実行し、そのホストに至るまでの経路(どこのルーターを通っているか等)を確認出来る。
デフォルトでは、UDPプロトコルを利用して通信確認を行う。

traceroute 対象ホスト(ホスト名・IPアドレス)

20150520_000001

 

tracerouteコマンドでは、対象のホストに向けてTTLを1づつ足して通信確認を行っている。
そのため、通信の途中で傷害が発生していたとしても、どこの経路で発生しているのかがわかるようになっている。

動作のより詳しい解説については、こちらのサイトが記述してくれている。

2.使用するプロトコル・ポートを変更する

デフォルトではUDPプロトコルが利用されるのだが、オプションを付与することでTCP、ICMPのプロトコルを利用することも出来る。
ポートを指定して回答しないようにしているルーターもある(その場合、「* * *」とだけ表示される)ため、それを回避するために使用したり、ファイアーウォールの設定確認にも利用出来る。

●UDPを利用する場合(ポート指定しない場合は53番)

traceroute -U -p ポート番号 対象ホスト(ホスト名・IPアドレス)

 

●TCPを利用する場合(ポート指定しない場合は80番)

traceroute -T -p ポート番号 対象ホスト(ホスト名・IPアドレス)

 

●ICMPを利用する場合

traceroute -I 対象ホスト(ホスト名・IPアドレス)

 

実際に、デフォルトの状態とTCPを利用した状態で比べたのが以下。
デフォルトだと回答の無かったルーターも、TCPだと(一部以外)表示されるようになっている。

20150521_000000

3.ゲートウェイを指定する

「-g」オプションを付与することで、経由するルーターを8個まで指定する事も出来る。

traceroute -g ゲートウェイアドレス1,ゲートウェイアドレス2 ... 対象ホスト(ホスト名・IPアドレス)

 

なお、この機能はソースルーティング方式となるため、pingの同様の機能と同じく環境によってはFWで弾かれたり、アラートが上がってしまうので注意が必要である。

4.ローカルで使用するインターフェイスを指定する

「-i」オプションを使用することで、tracerouteを行うインターフェイスを指定する事が出来る。

traceroute -i インターフェイス名 対象ホスト(ホスト名・IPアドレス)

5.pop数(TTL値)を指定する

「-m」オプションを指定することで、最大TTL値(デフォルトは30)を指定して実行することも出来る。
これで、30個以上ルーターを経由するホスト(そうそういないと思うけど)に対しても確認を行うことが出来る。

traceroute -m TTL値(最大) 対象ホスト(ホスト名・IPアドレス)

6.tracerouteをルート途中から開始する

「-f」オプションを指定することで、開始するTTLの値を指定することが出来る。
最初に記述したように、tracerouteはTTL値を1個づつ足していき、経路の確認を行っている。つまりこのオプションを指定することで、経路の途中から確認を開始することが出来る。

traceroute -m TTL値(開始) 対象ホスト(ホスト名・IPアドレス)

20150521_000001

7.パケットの応答時間を指定する

「-w」オプションでパケットの応答待機時間を指定して、時間の短縮を行う事も出来る。

traceroute -w 応答待機時間(秒) 対象ホスト(ホスト名・IPアドレス)

8.名前解決させない

「-n」オプションを指定することで、DNSでの名前解決を行わせないようにすることが出来る。
名前解決に要する時間が無いため出力が早くなるので、ドメイン名等が不要であれば付与することを勧める。

traceroute -n 対象ホスト(ホスト名・IPアドレス)

20150521_000002

 

絶対わかる! ネットワークトラブル解決超入門 改訂版 (日経BPムック ネットワーク基盤技術選書) 絶対わかる! ネットワークトラブル解決超入門 改訂版 (日経BPムック ネットワーク基盤技術選書)

tcpdumpコマンドで覚えておきたい使い方4個

$
0
0

tcpdumpコマンドといえば、WireSharkと同様にネットワーク上を走っているパケットを閲覧するためのプログラム(パケットキャプチャツール)として利用されているコマンドだ。
ネットワークの仕事をしている人なら、触っている人も多いのでは無いだろうか。

今回は、そんなtcpdumpコマンドで覚えておきたい使い方についてを紹介する。

1.基本的な使い方

基本的には、ただtcpdumpと打っただけでもコマンドを利用することは出来る。

tcpdump
test@test-vm-ubuntu:~$ sudo tcpdump
[sudo] password for test:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
20:29:47.418564 IP 192.168.0.XXX.51682 > 192.168.0.YYY.902: Flags [P.], seq 106429704:106429741, ack 717766587, win 65335, length 37
20:29:47.418576 IP 192.168.0.YYY.902 > 192.168.0.XXX.51682: Flags [.], ack 37, win 128, length 0
20:29:47.418755 IP 192.168.0.YYY.902 > 192.168.0.XXX.51682: Flags [.], seq 1:8448, ack 37, win 128, length 8447
20:29:47.419099 IP 192.168.0.XXX.51682 > 192.168.0.YYY.902: Flags [.], ack 8448, win 65335, length 0
20:29:47.419249 IP 192.168.0.YYY.902 > 192.168.0.XXX.51682: Flags [.], seq 8448:19815, ack 37, win 128, length 11367
20:29:47.419575 IP 192.168.0.XXX.51682 > 192.168.0.YYY.902: Flags [.], ack 19815, win 64683, length 0
20:29:47.419630 IP 192.168.0.XXX.51682 > 192.168.0.YYY.902: Flags [.], ack 19815, win 65335, length 0
20:29:47.419712 IP 192.168.0.YYY.902 > 192.168.0.XXX.51682: Flags [.], seq 19815:34102, ack 37, win 128, length 14287
20:29:47.420129 IP 192.168.0.XXX.51682 > 192.168.0.YYY.902: Flags [.], ack 34102, win 63223, length 0
20:29:47.420184 IP 192.168.0.XXX.51682 > 192.168.0.YYY.902: Flags [.], ack 34102, win 65335, length 0
…

出力される結果は、以下のような内容になっている。

時間 送信元(IPアドレス・ポート番号) > 送信先(IPアドレス・ポート番号): パケットの内容

が、上記のようにインターフェイスもプロトコルも指定しないと、出力されるパケットの量がとんでもない事になってしまう。 ssh経由で接続していた場合、その分のパケットも出力されてしまうので、面倒な事この上ない。このため、基本的にはパケットキャプチャを行うインターフェイスやホスト、プロトコル(ポート)を指定してキャプチャをするパケットを絞り込む必要がある。

インターフェイスを指定してキャプチャを行う

tcpdump -i インターフェイス名(eth0など)

ホストを指定してキャプチャを行う

tcpdump host 対象ホスト(ホスト名・IPアドレス)

 

hostに対し、送信元(src)、送信先(dst)を指定することも出来る。
(なお、hostは省略可)

tcpdump src host 対象ホスト

 

ホストだけではなく、特定のネットワークアドレスを指定してキャプチャすることもできる。

tcpdump net ネットワークアドレス mask サブネットマスク

プロトコル(ポート番号)を指定してキャプチャを行う

tcpdump プロトコル名

 

指定出来るプロトコルは以下。

  • ether
  • fddi
  • mopdl
  • ip
  • ip6
  • arp
  • rarp
  • decnet
  • lat
  • sca
  • moprc
  • icmp
  • icmp6
  • tcp
  • udp

 

プロトコルではなく、ポートを指定することも出来る。

tcpdump port ポート番号

 

これらの条件は、and、orで繋げる事で、複数の条件を組み合わせてフィルタすることが出来る。

例)ホストが「192.168.10.100」、ポート番号「23(telnet)」のパケットをキャプチャする場合

tcpdump host 192.168.10.100 and port 23

 

例)パケットの送信元が「192.168.10.100」、もしくはポート番号が「23(telnet)」のパケットをキャプチャする場合

tcpdump src 192.168.10.100 or port 23

 

notを頭につける事で、その条件を拒否することも出来る。

例)パケットの送信元が「192.168.10.100」以外で、ポート番号が「23(telnet)」のパケットをキャプチャする場合

tcpdump not src 192.168.10.100 and port 23

 

and、orを複数利用する場合は、「()」で囲むとわかりやすい。

例)パケットの送信元が「192.168.10.100」もしくは「192.168.20.100」で、ポート番号が「23(telnet)」のパケットをキャプチャする場合

tcpdump src \(192.168.10.100 or 192.168.20.100 \) and port 23

2.キャプチャの結果をWireSharkで解析可能なファイルに出力する

「-w」オプションを付与することで、キャプチャ結果をWireSharkで解析できるフォーマットにしてファイルに出力することが出来る。
なお、キャプチャの際にパケットを途中で切り捨てられないように、-s 0(パケットから取り出すバイト数を無制限にする)を合わせて指定すると良いだろう。

tcpdump -s 0 -w 出力ファイル名

なお、このオプションを利用して出力したファイルはパケットデータをそのまま書き出しているので、普通にcatなどでは中身は見れない。
ファイルの中身を読む場合は、「-r」オプションを付与して読込みをする。

tcpdump -r 出力したファイル名

3.パケットからアスキーデータを取得する

「-A」オプションもしくは「-X」オプションを付与することで、パケットの中身から、アスキーデータだけを取得してくれる。

tcpdump -A

 

このオプションを利用することで、暗号化されていないFTPやtelnetのユーザ名やパスワード、通信の情報が取得出来る。
実際に、FTPやtelnetで通信をした場合の例が以下だ。

例)FTPでの通信内容

test@ubuntu-server:~$ sudo tcpdump -A host 192.168.0.214 and \(port 20 or port 21\)
[sudo] password for test:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
22:57:53.437434 IP 192.168.0.208.57068 > 192.168.0.214.ftp: Flags [S], seq 2495387727, win 29200, options [mss 1460,sackOK,TS val 2561476 ecr 0,nop,wscale 7], length 0
E..<..@.@.*:...............O......r..%......... .'.......... 22:57:53.437676 IP 192.168.0.214.ftp > 192.168.0.208.57068: Flags [S.], seq 4011799000, ack 2495387728, win 14480, options [mss 1460,sackOK,TS val 10259242 ecr 2561476,nop,wscale 7], length 0
E..<..@.@.................1....P..8............ ...*.'...... 22:57:53.437743 IP 192.168.0.208.57068 > 192.168.0.214.ftp: Flags [.], ack 1, win 229, options [nop,nop,TS val 2561476 ecr 10259242], length 0
E..4..@.@.*A...............P..1............
.'.....*
22:57:53.440743 IP 192.168.0.214.ftp > 192.168.0.208.57068: Flags [P.], seq 1:270, ack 1, win 114, options [nop,nop,TS val 10259245 ecr 2561476], length 269
E..A..@.@.................1....P...r.h.....
...-.'..220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 22:57. Server port: 21.
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.

22:57:53.440819 IP 192.168.0.208.57068 > 192.168.0.214.ftp: Flags [.], ack 270, win 237, options [nop,nop,TS val 2561477 ecr 10259245], length 0
E..4..@.@.*0...............P..2............
.'.....-
22:57:56.372276 IP 192.168.0.208.57068 > 192.168.0.214.ftp: Flags [P.], seq 1:12, ack 270, win 237, options [nop,nop,TS val 2562209 ecr 10259245], length 11
E..?..@.@.*$...............P..2......(.....
.'.....-USER test

22:57:56.372536 IP 192.168.0.214.ftp > 192.168.0.208.57068: Flags [.], ack 12, win 114, options [nop,nop,TS val 10262177 ecr 2562209], length 0
E..4..@.@.................2....[...r./.....
.....'..
22:57:56.372858 IP 192.168.0.214.ftp > 192.168.0.208.57068: Flags [P.], seq 270:307, ack 12, win 114, options [nop,nop,TS val 10262177 ecr 2562209], length 37
E..Y..@.@.................2....[...r.......
.....'..331 User test OK. Password required

22:57:56.372918 IP 192.168.0.208.57068 > 192.168.0.214.ftp: Flags [.], ack 307, win 237, options [nop,nop,TS val 2562210 ecr 10262177], length 0
E..4..@.@.*................[..3............
.'......
22:58:00.988173 IP 192.168.0.208.57068 > 192.168.0.214.ftp: Flags [P.], seq 12:23, ack 307, win 237, options [nop,nop,TS val 2563363 ecr 10262177], length 11
E..?..@.@.*"...............[..3......(.....
.'.#....PASS test

22:58:01.028004 IP 192.168.0.214.ftp > 192.168.0.208.57068: Flags [.], ack 23, win 114, options [nop,nop,TS val 10266833 ecr 2563363], length 0
E..4..@.@.................3....f...r.L.....
.....'.#
22:58:01.055527 IP 192.168.0.214.ftp > 192.168.0.208.57068: Flags [P.], seq 307:350, ack 23, win 114, options [nop,nop,TS val 10266860 ecr 2563363], length 43
E.._..@.@.................3....f...r.......
.....'.#230 OK. Current restricted directory is /

22:58:01.055600 IP 192.168.0.208.57068 > 192.168.0.214.ftp: Flags [.], ack 350, win 237, options [nop,nop,TS val 2563380 ecr 10266860], length 0
E..4..@.@.*,...............f..36...........
.'.4....
22:58:01.055740 IP 192.168.0.208.57068 > 192.168.0.214.ftp: Flags [P.], seq 23:29, ack 350, win 237, options [nop,nop,TS val 2563380 ecr 10266860], length 6
E..:..@.@.*%...............f..36.....#.....
.'.4....SYST

22:58:01.055864 IP 192.168.0.214.ftp > 192.168.0.208.57068: Flags [.], ack 29, win 114, options [nop,nop,TS val 10266860 ecr 2563380], length 0
E..4..@.@.................36...l...r.......
.....'.4
22:58:01.056733 IP 192.168.0.214.ftp > 192.168.0.208.57068: Flags [P.], seq 350:369, ack 29, win 114, options [nop,nop,TS val 10266861 ecr 2563380], length 19
E..G..@.@.................36...l...r.......
.....'.4215 UNIX Type: L8

22:58:01.096497 IP 192.168.0.208.57068 > 192.168.0.214.ftp: Flags [.], ack 369, win 237, options [nop,nop,TS val 2563391 ecr 10266861], length 0
E..4..@.@.**...............l..3I...........
.'.?....

FTPでは、かなり容易くユーザ名・パスワードを把握出来てしまう。
ちゃんとSFTPなどを利用した方がいいというのがよく分かる。

例)telnetでの通信内容(ユーザ名/パスワードがtest/testで実行している)

test@test-vm-ubuntu:~$ sudo tcpdump -A host 192.168.0.214 and port 23
[sudo] password for test:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
22:46:19.145755 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [S], seq 1881420868, win 29200, options [mss 1460,sackOK,TS val 453226173 ecr 0,nop,wscale 7], length 0
E..<..@.@...............p$4D......r..&......... ............ 22:46:19.147179 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [S.], seq 2465597056, ack 1881420869, win 14480, options [mss 1460,sackOK,TS val 9558713 ecr 453226173,nop,wscale 7], length 0
E..<..@.@...................p$4E..8............ ............ 22:46:19.147194 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 1, win 229, options [nop,nop,TS val 453226174 ecr 9558713], length 0
E..4..@.@...............p$4E...............
........
22:46:19.147539 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 1:25, ack 1, win 229, options [nop,nop,TS val 453226174 ecr 9558713], length 24
E..L..@.@...............p$4E.........6.....
................... ..!.."..'...
22:46:19.147908 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [.], ack 25, win 114, options [nop,nop,TS val 9558715 ecr 453226174], length 0
E..4.;@.@...................p$4]...r:......
........
22:46:19.156853 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 1:13, ack 25, win 114, options [nop,nop,TS val 9558724 ecr 453226174], length 12
E..@.<@.@..s................p$4]...r....... ............. ..#..' 22:46:19.156863 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 13, win 229, options [nop,nop,TS val 453226176 ecr 9558724], length 0
E..4..@.@...............p$4]...............
........
22:46:19.156937 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 25:28, ack 13, win 229, options [nop,nop,TS val 453226176 ecr 9558724], length 3
E..7..@.@...............p$4].........!.....
..........#
22:46:19.157200 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 13:28, ack 25, win 114, options [nop,nop,TS val 9558724 ecr 453226176], length 15
E..C.=@.@..o................p$4]...r.).....
................!.."...
22:46:19.193783 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 28, win 229, options [nop,nop,TS val 453226186 ecr 9558724], length 0
E..4..@.@...............p$4`...............
........
22:46:19.194209 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 28:46, ack 28, win 114, options [nop,nop,TS val 9558761 ecr 453226176], length 18
E..F.>@.@..k................p$4`...r.^.....
.......... .....'.........
22:46:19.194220 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 28:37, ack 46, win 229, options [nop,nop,TS val 453226186 ecr 9558761], length 9
E..=..@.@...............p$4`.........'.....
............s."..
22:46:19.234675 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [.], ack 37, win 114, options [nop,nop,TS val 9558802 ecr 453226186], length 0
E..4.?@.@..|................p$4i...r9......
........
22:46:19.234691 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 37:69, ack 46, win 229, options [nop,nop,TS val 453226196 ecr 9558802], length 32
E..T..@.@...............p$4i.........>.....
.......... .9600,9600....'.......xterm..
22:46:19.235139 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [.], ack 69, win 114, options [nop,nop,TS val 9558802 ecr 453226196], length 0
E..4.@@.@..{................p$4....r9......
........
22:46:19.235759 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 46:49, ack 69, win 114, options [nop,nop,TS val 9558803 ecr 453226196], length 3
E..7.A@.@..w................p$4....r8......
...........
22:46:19.235795 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 69:72, ack 49, win 229, options [nop,nop,TS val 453226196 ecr 9558803], length 3
E..7..@.@...............p$4..........!.....
...........
22:46:19.236306 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 49:128, ack 72, win 114, options [nop,nop,TS val 9558803 ecr 453226196], length 79
E....B@.@..*................p$4....r.R.....
...........CentOS release 6.6 (Final)
Kernel 2.6.32-504.12.2.el6.x86_64 on an x86_64

22:46:19.236349 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 72:75, ack 128, win 229, options [nop,nop,TS val 453226196 ecr 9558803], length 3
E..7..@.@...............p$4..........!.....
...........
22:46:19.241799 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.U], seq 128:129, ack 75, win 114, urg 1, options [nop,nop,TS val 9558809 ecr 453226196], length 1
E..5.C@.@..w................p$4..8.r:>.....
.........
22:46:19.241811 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 129:130, ack 75, win 114, options [nop,nop,TS val 9558809 ecr 453226196], length 1
E..5.D@.@..v................p$4....rG^.....
.........
22:46:19.241838 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 130, win 229, options [nop,nop,TS val 453226198 ecr 9558809], length 0
E..4..@.@...............p$4................
........
22:46:19.245708 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 130:137, ack 75, win 114, options [nop,nop,TS val 9558813 ecr 453226198], length 7
E..;.E@.@..o................p$4....r.>.....
........login:
22:46:19.281799 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 137, win 229, options [nop,nop,TS val 453226208 ecr 9558813], length 0
E..4..@.@...............p$4.... ...........
........
22:46:20.294816 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 75:76, ack 137, win 229, options [nop,nop,TS val 453226461 ecr 9558813], length 1
E..5..@.@...............p$4.... ...........
........t
22:46:20.296693 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 137:138, ack 76, win 114, options [nop,nop,TS val 9559864 ecr 453226461], length 1
E..5.F@.@..t...............     p$4....r.-.....
...8....t
22:46:20.296705 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 138, win 229, options [nop,nop,TS val 453226461 ecr 9559864], length 0
E..4..@.@...............p$4....
...........
.......8
22:46:20.422806 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 76:77, ack 138, win 229, options [nop,nop,TS val 453226493 ecr 9559864], length 1
E..5..@.@...............p$4....
...........
.......8e
22:46:20.424757 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 138:139, ack 77, win 114, options [nop,nop,TS val 9559992 ecr 453226493], length 1
E..5.G@.@..s...............
p$4....r.......
........e
22:46:20.424778 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 139, win 229, options [nop,nop,TS val 453226493 ecr 9559992], length 0
E..4..@.@...............p$4................
........
22:46:20.702885 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 77:78, ack 139, win 229, options [nop,nop,TS val 453226563 ecr 9559992], length 1
E..5.   @.@...............p$4................
...C....s
22:46:20.704693 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 139:140, ack 78, win 114, options [nop,nop,TS val 9560272 ecr 453226563], length 1
E..5.H@.@..r................p$4....r.+.....
.......Cs
22:46:20.704705 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 140, win 229, options [nop,nop,TS val 453226563 ecr 9560272], length 0
E..4.
@.@...............p$4................
...C....
22:46:20.942799 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 78:79, ack 140, win 229, options [nop,nop,TS val 453226623 ecr 9560272], length 1
E..5..@.@...............p$4................
........t
22:46:20.944696 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 140:141, ack 79, win 114, options [nop,nop,TS val 9560512 ecr 453226623], length 1
E..5.I@.@..q................p$4....r.......
........t
22:46:20.944717 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 141, win 229, options [nop,nop,TS val 453226623 ecr 9560512], length 0
........................p$4....
........
22:46:21.286778 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 79:81, ack 141, win 229, options [nop,nop,TS val 453226709 ecr 9560512], length 2
..... ............p$4....
........
22:46:21.288720 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 141:143, ack 81, win 114, options [nop,nop,TS val 9560856 ecr 453226709], length 2
p$4....r"B.................
........

22:46:21.288742 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 143, win 229, options [nop,nop,TS val 453226709 ecr 9560856], length 0
E..4..@.@...............p$4................
........
22:46:21.289684 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 143:153, ack 81, win 114, options [nop,nop,TS val 9560857 ecr 453226709], length 10
E..>.K@.@..f................p$4....rGx.....
........Password:
22:46:21.289693 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 153, win 229, options [nop,nop,TS val 453226709 ecr 9560857], length 0
E..4..@.@...............p$4................
........
22:46:22.070892 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 81:82, ack 153, win 229, options [nop,nop,TS val 453226905 ecr 9560857], length 1
E..5..@.@...............p$4................
........t
22:46:22.110727 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [.], ack 82, win 114, options [nop,nop,TS val 9561678 ecr 453226905], length 0
E..4.L@.@..o................p$4....r+O.....
...N....
22:46:22.142762 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 82:83, ack 153, win 229, options [nop,nop,TS val 453226923 ecr 9561678], length 1
E..5..@.@...............p$4................
.......Ne
22:46:22.143074 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [.], ack 83, win 114, options [nop,nop,TS val 9561710 ecr 453226923], length 0
E..4.M@.@..n................p$4....r+......
...n....
22:46:22.406959 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 83:84, ack 153, win 229, options [nop,nop,TS val 453226989 ecr 9561710], length 1
E..5..@.@...............p$4................
.......ns
22:46:22.407447 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [.], ack 84, win 114, options [nop,nop,TS val 9561974 ecr 453226989], length 0
E..4.N@.@..m................p$4....r)......
...v....
22:46:22.630710 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 84:85, ack 153, win 229, options [nop,nop,TS val 453227045 ecr 9561974], length 1
E..5..@.@...............p$4................
...%...vt
22:46:22.631037 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [.], ack 85, win 114, options [nop,nop,TS val 9562198 ecr 453227045], length 0
E..4.O@.@..l................p$4....r(......
...V...%
22:46:23.238793 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [P.], seq 85:87, ack 153, win 229, options [nop,nop,TS val 453227197 ecr 9562198], length 2
E..6..@.@...............p$4.......... .....
.......V
22:46:23.239218 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [.], ack 87, win 114, options [nop,nop,TS val 9562806 ecr 453227197], length 0
E..4.P@.@..k................p$4....r%......
........
22:46:23.240634 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 153:155, ack 87, win 114, options [nop,nop,TS val 9562808 ecr 453227197], length 2
E..6.Q@.@..h................p$4....r.......
........

22:46:23.240653 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 155, win 229, options [nop,nop,TS val 453227197 ecr 9562808], length 0
E..4..@.@...............p$4................
........
22:46:23.265774 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 155:207, ack 87, win 114, options [nop,nop,TS val 9562833 ecr 453227197], length 52
E..h.R@.@..5................p$4....rX......
........Last login: Sun May 24 22:45:10 from 192.168.0.XXX

22:46:23.265786 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 207, win 229, options [nop,nop,TS val 453227204 ecr 9562833], length 0
E..4..@.@...............p$4....O...........
........
22:46:23.351853 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 207:228, ack 87, win 114, options [nop,nop,TS val 9562919 ecr 453227204], length 21
E..I.S@.@..S...............Op$4....r.......
...'.....]0;test@localhost:~.
22:46:23.351887 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 228, win 229, options [nop,nop,TS val 453227225 ecr 9562919], length 0
E..4..@.@...............p$4....d...........
.......'
22:46:23.352760 IP 192.168.0.214.telnet > 192.168.0.209.54694: Flags [P.], seq 228:256, ack 87, win 114, options [nop,nop,TS val 9562920 ecr 453227225], length 28
E..P.T@.@..K...............dp$4....rn&.....
...(.....[?1034h[test@localhost ~]$
22:46:23.352784 IP 192.168.0.209.54694 > 192.168.0.214.telnet: Flags [.], ack 256, win 229, options [nop,nop,TS val 453227225 ecr 9562920], length 0
E..4..@.@...............p$4................
.......(

telnetの場合、ユーザ名は2回連続で、パスワードは1回だけ、それぞれ一文字づつ表示されている。
これは、ユーザ名はキーボードからの送信とコンソールからの出力分で2回、パスワードはコンソールに表示されないために1回のみパケットがやりとりされるためだ。

FTPよりは読みにくいけど、まぁ丸見えだ…ユーザ名やパスワードを忘れてしまったとか、こんな感じで丸見えだということを覚えておくだけでも有益だろう。

3.ホストやプロトコルの名前解決を行わない

「-n」オプションを用いる事で、ホスト名やプロトコルの名前解決を行わずに、番号のまま出力させることが出来る。

tcpdump -n

 

プロトコル名のみ名前解決させない場合は、「-nn」オプションとする。

4.タイムスタンプの表示を分かりやすくする

「-tttt」オプションを付与することで、タイムスタンプの出力を人間が読みやすいようにすることが出来る。

tcpdump -tttt
test@test-vm-ubuntu:~$ sudo tcpdump -tttt
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
2015-05-24 23:11:47.884678 IP 192.168.0.YYY.ssh > 192.168.0.XXX.51750: Flags [P.], seq 46288813:46288973, ack 659199000, win 307, length 160
2015-05-24 23:11:47.884744 IP 192.168.0.YYY.ssh > 192.168.0.XXX.51750: Flags [P.], seq 160:256, ack 1, win 307, length 96
2015-05-24 23:11:47.884802 IP 192.168.0.YYY.ssh > 192.168.0.XXX.51750: Flags [P.], seq 256:416, ack 1, win 307, length 160
2015-05-24 23:11:47.884847 IP 192.168.0.YYY.ssh > 192.168.0.XXX.51750: Flags [P.], seq 416:512, ack 1, win 307, length 96
実践 Metasploit ―ペネトレーションテストによる脆弱性評価 実践 Metasploit ―ペネトレーションテストによる脆弱性評価 実践 Metasploit ―ペネトレーションテストによる脆弱性評価 実践 Metasploit ―ペネトレーションテストによる脆弱性評価

nc(netcat)コマンドで覚えておきたい使い方8個

$
0
0

Linuxでポートの疎通確認を行う際によく用いるncコマンド。
今回は、このncコマンドで覚えておきたい使い方についてまとめてみる事にする。

使用したのは、Ubuntu 14.04 LTSに入っている以下のもの。

20151116_000001

test@test-vm-ubuntu:~$ nc --help
nc: invalid option -- '-'
This is nc from the netcat-openbsd package. An alternative nc is available
in the netcat-traditional package.
usage: nc [-46bCDdhjklnrStUuvZz] [-I length] [-i interval] [-O length]
          [-P proxy_username] [-p source_port] [-q seconds] [-s source]
          [-T toskeyword] [-V rtable] [-w timeout] [-X proxy_protocol]
          [-x proxy_address[:port]] [destination] [port]

 

1.基本的な使い方・クライアントとして動作させる

ncコマンドで最もよく使われる使い方としては、対象ホストに対してポート指定をして、クライアントとして疎通確認を行うというものだろう。
基本的には、以下のようにコマンドを実行する。

nc 対象ホスト(IPアドレス等) ポート番号

TCPではなく、UDPでの疎通を確認する場合は「-u」オプションを付与する。

nc -u 対象ホスト(IPアドレス等) ポート番号

 

ただポート確認を行うだけではなく、ヘッダを相手先ポートに送りつける事でその後の処理を実施させることも出来る。
例えば、以下のようにコマンドを実行することでwebサーバへhttp-getリクエストを行う事ができる。

echo -en "GET / HTTP/1.1\n\n" | nc 対象ホスト(IPアドレス等) 80

 

 

2.基本的な使い方・サーバとして動作させる

ncでポートの待受側(サーバ側)として動作させる場合は、以下のように「-l」オプションを付与する。

nc -l ポート番号 # TCPのポート番号で待ち受ける
nc -ul ポート番号 # UDPのポート番号で 待ち受ける

 

ただし、上記のコマンドだと一度疎通に成功するとサーバ側のプロセスが終了してしまう。
サーバ側で明示的にプロセスを終了するまでポートを開けさせたい場合は、TCPの場合は「-k」を、UDPの場合は「-e ‘cat’」でポートを開けさせておく事が出来る。

nc -kvl ポート番号 #TCP
nc -e /bin/cat -uvl ポート番号 # UDP

 

なお、CentOSやUbuntuのパッケージからインストールしたり、バンドルされているコマンドの場合、「-e」オプションが利用出来ないようにしてる可能性がある。
この場合は、別途ソースからインストールして-eオプションを使えるようにしてあげる必要があるので注意。

 

3.ファイルを転送する

ncコマンドでは、FTPやscpを使わずにクライアント⇔サーバ間で直接ファイルを転送することも出来る。
(セキュリティ考慮する必要がある環境ではおすすめしないけど)

 

●サーバ側からクライアント側にファイルを取得させる場合

nc -l ポート番号 < 転送するファイルPATH # サーバ側
nc 対象ホスト(IPアドレス等) ポート番号 > 転送されたファイルを取得するPATH # クライアント側

 

画像は、左がサーバ側、右がクライアント側のコンソール。
サーバ側でリダイレクトしてたアーカイブファイルが、無事クライアント側で取得、展開出来ている事がわかる。

20151116_000003

 

●クライアント側からサーバ側にファイルを取得させる場合

nc -l ポート番号 > 取得したファイルの保持先PATH # サーバ側
nc 対象ホスト(IPアドレス等) ポート番号 < 転送するファイルPATH # クライアント側

4.IPv4、IPv6を指定する

IPv4の場合は「-4」、IPv6の場合は「-6」を付与することで通信を可能にする。
なお、デフォルトはIPv4。

20151116_000004

test@test-vm-ubuntu:~$ # オプション無し
test@test-vm-ubuntu:~$ nc -l 55551 &
[2] 6013
test@test-vm-ubuntu:~$
test@test-vm-ubuntu:~$ # IPv4
test@test-vm-ubuntu:~$ nc -l4 55552 &
[3] 6014
test@test-vm-ubuntu:~$
test@test-vm-ubuntu:~$ # IPv6
test@test-vm-ubuntu:~$ nc -l6 55553 &
[4] 6015
test@test-vm-ubuntu:~$
test@test-vm-ubuntu:~$ netstat -an | grep 5555[1-3]
tcp        0      0 0.0.0.0:55551           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:55552           0.0.0.0:*               LISTEN
tcp6       0      0 :::55553                :::*                    LISTEN

 

5.通信の詳細を取得する

通信の詳細を表示させる場合は「-v」オプションを付与する。

 

6.ソースアドレス・ポートを指定する

パケット送信側のホストに割り当てられているIPアドレスであれば、「-s」でアドレスを指定して通信を行わせる事も出来る。
送信側のポートを指定する場合は、「-p」で指定できる。

nc -s ホストに割り当てられているIPアドレス -p 送信時のポート番号 対象ホスト ポート番号

 

7.ポート範囲を指定してスキャンを行う

nc(netcat)には、「-z」というポートの確認だけをするオプションが存在する。
これと「-v」オプションを組み合わせる事で、対象ホストでListenしているポートを確認することが出来る。

nc -vz 対象ホスト ポート番号-ポート番号

 

以下の例は、対象のホストで4440-4450の範囲で開いているポートを確認している。

20151116_000005

 

8.ポートへのアクセス時にコマンド(bash等)が実行されるようにする

「-e」オプションを使用することにより、サーバ側で特定のコマンドを実行させることが出来る。
なお、セキュリティの観点からか、UbuntuやCentOSでパッケージからインストールしたコマンドだとこのオプションは使えない。そのため、別途ソースからインストールするなどが必要となる。

nc -l -e 'コマンド' ポート番号

以下の例では、右のサーバ側でbashを待ち受けている。
プロンプトは表示されないが、サーバ側をコマンドで操作出来ている事がわかる。
…まぁ、普通にバックドアですよね、これ。

20151116_000007

 

とりあえず、以上8個を紹介させてもらった。
実際にはまだまだ面白い使い方はあるだろうし、見つけたらまた追記していくことにする。

ネットワークエンジニアの教科書 ネットワークエンジニアの教科書

nc(Ncat)コマンドで覚えておきたい使い方3個(ncコマンドCentOS 7版)

$
0
0

前回も紹介したLinuxでポートの疎通確認を行う際によく用いるncコマンド。
実はこのコマンド、netcatではなくCentOS 7の場合だとnampプロジェクトのncatに置き換えられているのだ。

今後はncもこのncatコマンドに置き換えられている事になるので、このコマンドの使い方についても(あんま変わらんけど)紹介することにした。
なお、検証に使用したコマンドはCentOS 7に入れている”Ncat: Version 6.40 ( http://nmap.org/ncat )”とする。

20151116_000000

[root@test-centos7 ~]# nc --version
Ncat: Version 6.40 ( http://nmap.org/ncat )

 

コマンドが置き換わったため、netcatでは使えていたオプションが無かったりする。
例えば「-z」オプションなんて無いので、レンジ指定で空きポートを確認する手法は使うことが出来ないので注意が必要だ。

なお、前回紹介した手法のうち、以下についてはnetcatコマンドと変わらないため、割愛する。
変わった(できなくなった)のは、ポート範囲を指定してのスキャンだけだ。

  • 1.基本的な使い方・クライアントとして動作させる
  • 2.基本的な使い方・サーバとして動作させる
  • 3.ファイルを転送する
  • 4.IPv4、IPv6を指定する
  • 5.通信の詳細を取得する
  • 6.ソースアドレス・ポートを指定する
  • 8.ポートへのアクセス時にコマンド(bash等)が実行されるようにする

 

1.通信にsslを利用する

ncatの場合、「–ssl」を付与することで通信にSSLを使用することができる。
デフォルトではSHA1で通信が行われる。

nc -vl ポート番号 --ssl # サーバ側
nc -v 対象ホスト(IPアドレス等) ポート番号 --ssl

20151116_000010

SSLで通信を行わせる場合は、サーバ・クライアントともに「–ssl」オプションを付与する必要がある点に注意。
SSLを利用できるということで、その他のオプション(鍵ファイルを指定したり等)も付与する事が出来る。

2.SCTPで通信を行う

あまり使うシチュエーションは思いつかないが、「–sctp」を付与することで、SCTPプロトコルでの通信を行う事も出来る。

20151116_000012

 

3.送信・受信専用にする

オプションとして「–send-only」を付与することで送信専用に、「–recv-only」を付与することで受信専用として動作させることができる。
例えば、右側のコンソールをクライアントとして送信専用にすると、左のコンソールで入力した内容は受信されない。

20151116_000014

 

その他、細かいオプション(同時接続数の制限や接続許可ホストの指定、コマンドの実行方法など)もあるが基本的にはnetcatとそう変わらない。

CentOS7システム管理ガイドsystemd/NetworkManager/Firewalld徹底攻略 CentOS7システム管理ガイドsystemd/NetworkManager/Firewalld徹底攻略

VyOSでホスト名の静的マッピングを行う

$
0
0

諸事情あって、自宅のVyOSにホスト名の静的マッピングを行いたくなったので、その方法について調べてみた。
で、ちゃんとそれ用のコマンドが用意されているようなので、使ってみる事にする。

set system static-host-mapping host-name ホスト名 inet IPアドレス

20160117_000006

vyos@BN-RT01# cat /etc/hosts
127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
127.0.1.1         BN-RT01        #vyatta entry
[edit]
vyos@BN-RT01# set system static-host-mapping host-name BS-PUB-PRODUCT.BLACKNON.LOCAL inet XXX.XXX.XXX.103
[edit]
vyos@BN-RT01# commit
[edit]
vyos@BN-RT01# cat /etc/hosts
127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
127.0.1.1         BN-RT01        #vyatta entry
XXX.XXX.XXX.103     BS-PUB-PRODUCT.BLACKNON.LOCAL           #vyatta entry
[edit]

 

ほうほう、これなら再起動してもsaveしとけば消えないだろうし、管理もしやすいかも。

 

インフラ/ネットワークエンジニアのためのネットワーク・デザインパターン インフラ/ネットワークエンジニアのためのネットワーク・デザインパターン

Lsyncdでローカル⇔リモート間でファイルの双方向自動同期を行う

$
0
0

時折、どこかのノードで設定ファイルとか編集をしたら、自動的に同期して他のノードでも設定を変えて欲しい時がある。
台数が多ければAnsibleなどで設定ファイルを一括更新するが、2~3台でそこまでするのもなぁ…というときは、Lsyncdを使って自動的に同期させると良いだろう。

Lsyncdは、inotify(Linuxに用意されている、ファイルの変更を検知する仕組み)で、変更を検知したと同時にrsyncでファイルを同期するデーモンツールだ。
比較的簡単に設定ができ、ファイルの削除や新規追加、変更でも同期を自動的に行ってくれる。もちろん、中身はrsyncなのでssh経由でのリモート同期も可能だ。

ここでは、各サーバで「/opt/syncd」というディレクトリを、ssh経由での通信で自動同期させてみる。
なお、前にもこっちで書いてたようだが、今回のはssh経由での通信を行わせる(やったことあるの忘れてた)。

 

1.インストール

まずはインストールから。
以下のように、yumやapt-getでインストールできる。

●RHEL系(以下では、CentOS7を使用)

rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
yum install lsyncd rsync

 

●Debian/Ubuntu系

sudo apt-get install lsyncd

 

これで、インストールができた。

2.設定

まず、各サーバでsshの公開鍵認証によるログイン設定を行う。
自動同期を行う各サーバで、以下の処理を実行する。

ssh-keygen
ssh-copy-id ユーザ@ホスト名(IPアドレス)
[root@BS-PUB-GALERA-01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
2b:51:e5:3b:6a:2f:37:30:29:54:ba:12:0c:f6:34:15 root@BS-PUB-GALERA-01.BLACKNON.LOCAL
The key's randomart image is:
+--[ RSA 2048]----+
|     .E.  .      |
|  o o   .o       |
| . = . o. .      |
|    + o.   .     |
|     o..S.o      |
|    . o.+o .     |
|     ...+o       |
|       o..o      |
|         o..     |
+-----------------+
[root@BS-PUB-GALERA-01 ~]# ssh-copy-id root@XXX.XXX.XXX.XXX
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@XXX.XXX.XXX.XXX's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@XXX.XXX.XXX.XXX'"
and check to make sure that only the key(s) you wanted were added.

 

これで、sshの公開鍵認証でのログイン設定が完了した。
次に、lsyncdの設定ファイルを記述する。

「/usr/share/doc/lsyncd/lrsync.lua」もしくはこちらの情報を参考に、以下のように「/etc/lsyncd.conf」を作成する。

●/etc/lsyncd.conf

-- 基本設定
settings = {
logfile = "/var/log/lsyncd.log",
statusFile = "/var/run/lsyncd.stat",
statusInterval = 1,
}

-- 各ノードごとの同期設定
sync{
default.rsyncssh,
delay = 0,
source="/opt/syncd",
host="ユーザ名@ホスト名(IPアドレス)",
targetdir="/opt/syncd",
delete="running"
}

 

上記のような設定ファイルを各ノードに設置し、lsyncdを起動する。

service lsyncd start

 

これで、「/opt/syncd」配下の中身が各ノードで全て同期されるようになった。
同期も、「delay=0」と指定しているので、3台程度であれば即座に反映される。設定ファイルの同期であれば、問題なく利用できるだろう。

 

【Amazon.co.jp限定】 擬人化でまなぼ! ネットワークのしくみ ★特製トレーディングカード2種付き 【Amazon.co.jp限定】 擬人化でまなぼ! ネットワークのしくみ ★特製トレーディングカード2種付き

Webベースのネットワーク機器の設定管理ツール「rConfig」を使ってみる

$
0
0

Webベースのネットワーク機器管理ツール「rConfig」なるものを見かけたので、試しにインストールして見ることにした。
なお、インストール先はCentOS 7には対応していないため、CentOS 6を用いる。

1.前提パッケージのインストール・設定

まずはrConfigの動作に前提となるパッケージをインストールする。
以下のコマンドを実行する。

yum -y install wget mlocate attr open-vm-tools httpd openssl-devel openssl mod_ssl vsftpd telnet bind-utils vixie-cron crontabs mysql-server mod_authn_dbd mysql-devel
yum -y install php-bcmath php-cli php-common php-gd php-ldap php-mbstring php-mcrypt php-mysql php-pdo php-php-gettext.noarch php-tidy php-xml graphviz-php php
yum -y groupinstall 'Development Tools'

 

Apacheインストール後、「/etc/sudoers」に設定を追記する。

cat << EOF >> /etc/sudoers
apache ALL = (ALL) NOPASSWD: /usr/bin/crontab, /usr/bin/zip, /bin/chmod, /bin/chown, /usr/bin/whoami
Defaults:apache !requiretty
EOF

 

SELinux/iptablesの停止を行う。

setenforce 0
sed -i.bak "/SELINUX/s/enforcing/disabled/g" /etc/selinux/config
service iptables stop
chkconfig iptables off

 

事前にMariaDBのセキュリティ関係の設定を行っておく。

service mysqld start
chkconfig mysqld on
mysql_secure_installation
mysql -u root -p -h 127.0.0.1 -e "GRANT ALL ON *.* to root@'127.0.0.1' IDENTIFIED BY 'rootpassword';FLUSH PRIVILEGES;"
[root@BS-PUB-CENT6-01 ~]# mysql_secure_installation




NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!


In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n]
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]
 ... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]
 ... Success!

Cleaning up...



All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

 

vsftpの設定をしておく。

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.original
cat << EOF  >/etc/vsftpd/vsftpd.conf;
#Custom rConfig VSFTPD conf file
anonymous_enable=NO
listen=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
idle_session_timeout=600
data_connection_timeout=120
ftpd_banner=Welcome to the FTP Service
ls_recurse_enable=YES
EOF
service vsftpd start
chkconfig vsftpd on

2.rConfigのインストール

前提となるパッケージをインストールしたら、rConfigのページからダウンロードしてくる。
ダウンロード時にアカウントを作成する必要があるので、アカウントを作成しダウンロード。

ダウンロードしたzipファイルをユーザのホームディレクトリにアップし、展開、移動を行う。

unzip ~/rconfig-*
cd ~/rconfig
chown -R apache:apache ~/rconfig
mv ~/rconfig /home;cd
mv /etc/httpd/conf/httpd.conf{,.org}
cp /home/rconfig/www/install/httpd.conf.new /etc/httpd/conf/httpd.conf
service httpd start
chkconfig httpd on

 

これでrConfigが動作しているはずなので、ブラウザで「https://IPアドレス/install」アクセスしてみる。

20160514_191907000000

20160514_192237000000

 

接続先のDBについては、以下のように設定する。

  • Database Server : 127.0.0.1
  • Database Port : 3306
  • Database Name : rconfig_db
  • Database Username : root
  • Database Password : rootパスワード

20160514_193302000000

 

次の画面で[Final Check]を押下して、すべてpassになっていればインストール完了だ。

20160514_193400000000

 

3.実際に使ってみる

さて、インストールが完了したので、実際に使ってみよう。
「https://IPアドレス/login.php」にアクセスし、ログインを行う。

初期ID/PWは「admin/admin」となっている。

20160514_193638000000

20160514_193723000000

 

さて、無事インストール・ログインができたので、実際にネットワーク機器を管理させてみよう。
今回は、お家で余ってたL2スイッチ「Catalyst 2940 WS-C2940-8TT-S(IPアドレス:172.28.0.21)」を管理させてみる。

上部メニューから[Device]を選択し、[Add Device]ボタンを押下、スイッチの情報を記述する。
なお、設定の際にTerminalのユーザ名が必要になるので、事前にスイッチ側で設定しておくこと。

20160514_200907000000

20160514_202117000000

 

設定完了後、追加したデバイスを選択して「Manual Download」ボタンを押下すると、configファイルを日付ごとのディレクトリに分けてダウンロードしてくれる。
configの中身を見たい場合は、そのファイルをクリックするとポップアップで中身を見ることができる。

20160514_203322000000

 

その他、コマンドを追加したりスケジュールを決めてコマンドを実行させたりできるようで、かなり便利そうだ。
既存のネットワーク機器の設定ファイルやレポート取得を一元管理できるとなると、社内インフラとかで活躍できそう。

惜しむらくは、CentOS 7でのインストールがだいぶ面倒そうという点と、アカウント登録しないとダウンロードできないトコだろうか。。。

 

Cisco Small Business [SG110D-08-JP] Cisco Small Business [SG110D-08-JP]

『addrwatch』でLAN内のIPアドレス・MACアドレスを監視する

$
0
0

調べもの中、「arpwatch」と似たような使い方ができるツール「addrwatch」というものを見かけたので、Ubuntu 14.04 LTSへインストールしてみることにした。

1.インストール

まずは、インストール前に前提となるパッケージ類をインストールしておく。

sdudo apt-get install autoconf pkg-config libpcap-dev libevent-dev libsqlite3-dev sqlite3

 

次に、Githubからソースをダウンロードしてコンパイルを行う。

git clone https://github.com/fln/addrwatch
cd addrwatch
./bootstrap.sh
./configure --enable-sqlite3
make
sudo make install

 

これでインストールが完了した。

2.動作させる

次に、「addrwatch」を実際に動作させてみる。
デーモンとして動作させない、ログなどに書き出さない場合は、以下のようにroot権限で実行すればよいだろう。
IPアドレス、MACアドレスを検知したら”ARP_REP”として出力される。

sudo addrwatch

20160814_131535000000

 

デーモンとして動作させる場合は「-d」、ログを別の場所に書き出させるならば「-o」で指定できる。
そのほかにもいろいろと動作を指定できるようだ。

インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門 インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門

VyOS(Vyatta)でクラスタ設定を行う

$
0
0

基本的にVyOS(Vyatta)を利用する場合は仮想基盤(ESXiとかKVM)上で動作させることが多いため、可用性とかはそちらに依存(HA化しときゃいいとか、とりあえずVMのバックアップをストレージに置いとけばいいとか、ハードウェアに依存しないからコンフィグさえあればどうとでもなるとか…)させることができるのだけど、時には仮想基盤に乗せず動かすこともあるだろう。また、ダウンタイムがあまり許容されないシステムの場合もある。

そんな時は予備機器を用意しておくのもいいが、VyOSではアクティブ・スタンバイ構成のクラスタを組んでダウンタイムを最小限に抑えることもできるようだ。
なお、クラスタ構成とするにあたって、各VyOSに割り振ったIPアドレス以外に、クラスタ用に利用するIPアドレスが必要。

今回はVyOS2台(プライマリ:BS-PUB-VYOS01、セカンダリ:BS-PUB-VYOS02)で実際にクラスタを組んでみることにする。なお、すでにホスト名やIPアドレスについては設定済みとし、今回はそのあたりの設定には触れないものとする。
VyOSでのクラスタ構成は簡単で、以下のようなコマンドをクラスタ構成ノードで実行してやればよい。

configure
set cluster interface eth0 # クラスタで冗長化するインターフェイス
set cluster keepalive-interval 200
set cluster dead-interval 1000
set cluster pre-shared-secret P@ssw0rd # クラスタ用の任意のパスワード
set cluster group VyOS-Cluster
set cluster group VyOS-Cluster auto-failback true
set cluster group VyOS-Cluster primary BS-PUB-VYOS01 # プライマリノード
set cluster group VyOS-Cluster secondary BS-PUB-VYOS02 # セカンダリノード
set cluster group VyOS-Cluster service XXX.XXX.XXX.XXX/24/eth0 # クラスタ用のIPアドレス

 

あとはcommitすればクラスタ化は完了。
とても簡単に設定できる。

クラスタの状態を確認する場合は、以下のコマンドで実行できる。

show cluster status
vyos@BS-PUB-VYOS02:~$ show cluster status
=== Status report on secondary node BS-PUB-VYOS02 ===

  Primary BS-PUB-VYOS01: Active

  Secondary BS-PUB-VYOS02 (this node): Active (standby)

  Resources [172.XXX.XXX.XXX/24/eth0]:
    Active on primary BS-PUB-VYOS01
オープンソース・ソフトウェアルータVyatta入門 ――実践ルーティングから仮想化まで (Software Design plus) オープンソース・ソフトウェアルータVyatta入門 ――実践ルーティングから仮想化まで (Software Design plus)

pfSenseでウィルススキャン透過プロキシ(Squid+ClamAV)を設定する

$
0
0

職場でFortiGateのウィルスチェックWebフィルタリング機能を使っているのだけど、さすがにこれを家で使うのは難しい(有償のライセンス買わないといけないので…)。
で、何か似たようなものがオープンソースでないかな、と思って調べていたところ、ちょうど使用しているpfSenseでSquid+CalmAVを使ってその辺の設定ができそうだ。
というわけで、実際に設定してみることにする。

まずはSquid(+α)をpfSenseにインストールする。
Webコンソールから「[System] > [Package Manager] > [Available Packages]」を開き、Squidをインストールする。

20160814_221923000000

 

次に、「[Services] > [Squid Proxy Server] > [General]」を開き、以下の項目について設定する。

  • Enable Squid Proxy … チェック
  • Keep Settings/Data … チェック
  • Proxy Interface(s) … フィルタリングするポートを選択
  • Transparent HTTP Proxy … チェック
  • Transparent Proxy Interface(s) … フィルタリングするポートを選択

 

最後に、「[Services] > [Squid Proxy Server] > [Antivirus]」を開き、Enableにチェックを入れることでウィルスチェック透過プロキシとして動作してくれる。
普通にhttp透過ウィルスチェックプロキシとしては問題なく使える。

…のだけど、SSL透過機能(SSL interception?というようだ)を有効にすると、どうも動作が芳しくない。
オレオレ証明書を間に入れたからか、SSL証明書がちゃんとしたサイトでも信用できないサイトとして扱われてしまうし…
あと、一度証明書を展開してから再度暗号化してるからか、CPU使用率が引きあがってAPU1Dだと使い物にならなかった。

うーん…
うまいことhttpsのページでもうまくウィルスチェックさせられればいいんだけどなぁ…難しいかな

Linuxでネットワーク内に重複、衝突しているIPアドレス(競合IPアドレス)を調べる方法

$
0
0

人間なので、時折IPアドレスの設定時に誤って重複したアドレスを振ってしまう、設定してしまうこともある(DHCPサーバの範囲内のアドレスで固定IP設定しちゃったりとか)。
そんな時すぐに気づければいいのだが、結構気づかずにそのままにしてしまって対象のホストのネットワークが不安定になった段階でようやく気付くこともあるだろう。

そんなときは、以下のいずれかの方法で重複したIPアドレスを調べて修復してやるといいだろう。

1.arpingで調べる

重複しているであろうIPアドレスに当たりがついている状態であれば、apringコマンドで確認ができる。
そのIPアドレスが重複している場合、返ってくるMACアドレスが交互に出てくるので、そこで判断する。

sudo arping -I eth0 -c 2 重複しているであろうIPアドレス
blacknon@BS-PUB-UBUNTU-01:~$ sudo arping -I eth0 -c 2 192.168.0.121
ARPING 192.168.0.121
60 bytes from 36:33:62:65:63:36 (192.168.0.121): index=0 time=10.202 msec
60 bytes from 66:66:63:65:34:36 (192.168.0.121): index=1 time=10.742 msec
60 bytes from 36:33:62:65:63:36 (192.168.0.121): index=2 time=3.603 msec
60 bytes from 66:66:63:65:34:36 (192.168.0.121): index=3 time=4.433 msec

--- 192.168.0.121 statistics ---
2 packets transmitted, 4 packets received,   0% unanswered (2 extra)
rtt min/avg/max/std-dev = 3.603/7.245/10.742/3.246 ms

ただ、前にWindowsと混合してて、かつWindowsファイアウォールが動いてるとpingが返ってこないことがあった。
その場合は、次の方法で調べるといいだろう。

2.arp-scanで調べる

前にこちらでも触れていた、指定したインターフェイスの所属するネットワークからすべてのIPアドレスを抽出するarp-scanコマンドを利用することで、重複しているIPアドレスを調べることができる。
以下のコマンドを実行することで、重複しているIPアドレスとMACアドレスのみを抽出する。

sudo arp-scan -I eth0 -l | awk 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) {print $2,$1}' | uniq -D -f 1
blacknon@BS-PUB-UBUNTU-01:~$ sudo arp-scan -I eth0 -l | awk 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) {print $2,$1}' | uniq -D -f 1
36:33:62:65:63:36 192.168.0.121
66:66:63:65:34:36 192.168.0.121

 

とりあえず、この2通りの方法を把握していれば対応はできるだろう。
なお、一応LinuxにもIPwatchDというIPアドレスの衝突を検知するデーモンが作られているようなのだけど、どうもクライアント用みたいでログに出せなかった(Ubuntu Server 16.04検証)。

インフラエンジニアの教科書2 スキルアップに効く技術と知識 インフラエンジニアの教科書2 スキルアップに効く技術と知識

pfSenseで国ごとのアクセス制限を実施する

$
0
0

この年末年始を利用して、自宅環境を一新するにあたりFWをpfSenseにしたのだけど、ログを見ると結構いろんな国からのアクセス…というかアタックがあるようだ。
あんまり変なとこから来られても困るので、国レベルでの接続制限を設定することにした。

1.『pfBlockerNG』のインストール

まずはpfSenseのWebUIにアクセスし、[System] > [Package] >[Available packages]と開き、『pfBlockerNG』の横にある+ボタンをクリックする。

20160104_000001

 

次の画面で本当にインストールしていいかどうか確認を求められるので、「Confirm」をクリックする。

20160104_000002

 

しばらく待つとインストールが完了する。

20160104_000003

 

2.設定(pfBlockerNGの有効化・国の設定等)

さて、これでpfBlockerのインストールが終わったので、次に有効化を実施する。
まず、[Firewall] > [pfBlockerNG]を開き、設定画面を表示させる。

20160104_000004

 

まず「General」の画面から、以下の設定項目を変更する。

20160104_000005

  • [Enable pfBlockerNG]にチェック(Enableにする)
  • [Inbound Firewall Rules]、[Outbound Firewall Rules]で適用するインターフェイスを選択

終了後、一番下の[save]を押下する。

 

上記終了後、[Country]タブを選択し、デフォルトで表示される[Top 20(不正アクセスの多い国T0p20。地味に日本も入ってる。。。)]タブで通信が来てほしくない国をリストから選択、[List Action]をDeny Inboundにし[save]する。

20160106_000001

 

これで、国別のアクセスを制限する事が出来る。
設定終了後しばらくすると、以下のようにpfSenseのダッシュボードからどの程度アクセスがあったのかを確認出来る。

20160106_000002

 

[Packet]をクリックすると、国別でブロックしたアクセスログが表示される。

20160106_000003

 

以外と多いな。。。
真っ先に目に入ったポートがtelnetってのがスゴイ気になる。。。なんだこれ、中国よ。。。

 

プロのための〔図解〕ネットワーク機器入門 スイッチ、ルータからファイアウォールまで徹底解説 プロのための〔図解〕ネットワーク機器入門 スイッチ、ルータからファイアウォールまで徹底解説
Viewing all 29 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>