開始行:
#norelated
*Solaris で SoftEther もどきを動かそう/番外編 - Windows ...
* 概要 [#y0b8536d]
** SteVPN 〜簡易VPNアプリケーション〜 [#z89460a8]
SteVPN は離れたのネットワーク上にいる2つの Windows マシン...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/net_config_...
もともとは「Solaris で SoftEther もどきを動かそう」 で作...
Windows マシン同士だけでも VPN が組めるように、Windows 上...
* 目次 [#s442aa31]
#contents
* ご注意 [#d1f3986a]
ここで紹介しているプログラムは、カーネルモジュールを含ん...
また、ご利用方法によってはファイアーウォールで守られたロ...
* ダウンロード [#p74efb04]
*** インストーラ [#l401e922]
Windows のインストールファイルはこちらからダウンロードで...
インストーラ: [[SteVPN_setup.msi:https://github.com/...
*** ソースファイル [#c62ce995]
ソースファイルはこちらからダウンロードできます。
ソースファイル: [[kaizawa-vpn-ste-win.zip:https://github....
zip ファイルに含まれるファイル
|>|sys ディレクトリ|
|sources|Sources ファイル|
|ste.c|仮想 NIC ドライバ ste.sys のメインモジュールのソー...
|ste_local.c|Ste ドライバが利用する内部関数が含まれている...
|netste.inf|ドライバのインストールの為の INF ファイル|
|>|inc ディレクトリ|
|ste.h|Ste ドライバ用のヘッダファイル。構造体、定数、関数...
|sted.h|Sted.exe 仮想 NIC デーモン用のヘッダファイル。Sol...
|sted_win.h|Windows 版仮想 NIC デーモン用ヘッダファイル|
|getopt_win.h|擬似 getopt 用ヘッダファイル|
|>|exe/sted ディレクトリ|
|sources|Sources ファイル|
|sted.c|仮想 NIC デーモン sted.exe のメインソースファイル...
|sted_socket.c|仮想 NIC デーモンの Socket 通信用ソースフ...
|getopt_win.c|Solaris とのコード互換のための擬似 getopt()...
|>|exe/stehub ディレクトリ|
|sources|Sources ファイル|
|stehub.c|仮想ハブ stehub.exe のメインソースファイル。Sol...
|getopt_win.c|Solaris とのコード互換のための擬似 getopt()...
各ソースコードは以下ページで参照することもできます。
> http://github.com/kaizawa/vpn-ste-win
各ファイルのコメントの文字コードは ''UTF-8'' です。
* インストール [#hbd5b7c4]
以下の手順は Windows 7 での操作をベースにしています。
** インストールファイルの実行 [#b4b28703]
ダウンロードしたインストールファイルを実行します。
キュリティ警告がでますがよろしければ「実行」します
#ref(http://www.whiteboard.ne.jp/~admin2/pict/install-sec...
インストールが進みます
#ref(http://www.whiteboard.ne.jp/~admin2/pict/installer-i...
今度はドライバに対するセキュリティの警告がでますが、こち...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/install-dri...
最後にデバイスを接続するよう即すダイアログが出てきてイン...
もちろん ste ドライバは実ハードウェアの存在しない擬似デバ...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/install-fin...
** ドライバのインストール [#qbfe1556]
インストーラの実行で実行ファイルとドライバを Windows にコ...
コントロールパネルからデバイスマネージャを開き「操作」→「...
もしくはスタートメニューの「プログラムとファイルの検索」...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/start-wizar...
追加するハードウェアの選択方法をきかれますので「一覧から...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/how-to-inst...
ハードウェアの選択画面では「ネットワークアダプタ」を選ん...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/select-netw...
ネットワークアダプタの選択画面ではもし「SteVPN Virtual NI...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/select-adap...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/select-copy...
インストールが無事に完了すると以下の画面が現れますので「...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/finish.png)~
以上で新しい仮想ネットワークアダプタが追加されドライバも...
** アンインストール [#rbce6d9f]
アンインストールは通常通り「プログラムと機能」からアンイ...
SteVPN をアンインストールすると stehub, sted デーモンプロ...
* 各プログラムの概要 [#l100f047]
プログラムの概要は Solaris 版と同様です。NIC や HUB をソ...
|ste.sys|デバイスドライバ|仮想 NIC デバイスドライバ。物理...
|sted.exe|ユーザモードプログラム&br;(コンソールプログラ...
|stehub.exe|ユーザモードプログラム&br;(コンソールプログ...
もちろんコードは違いますが、各プログラムの基本的な方針に...
- カーネルモードで動作する仮想 NIC のデバイスドライバを動...
- 仮想 NIC ドライバは、 アプリケーションからは実在の NIC ...
- 仮想ハブと仮想 NIC との通信はユーザモードのデーモン(Wi...
- 仮想ハブと仮想 NIC デーモンとの通信には TCP を使う。
* 使い方 [#xc42cf82]
仮想 NIC ドライバ、仮想 NIC デーモン、仮想ハブデーモンの...
** 仮想 NIC ドライバ [#x408f378]
仮想 NIC ドライバは実 NIC があるかのように振舞いますので...
+ 「スタート」->「設定」->「ネットワーク接続」
+ 「Ste Virtual NIC」を選択し、左クリックのメニューから「...
+ 「インターネットプロトコル(TCP/IP)」を選択し、「プロパ...
+ 「次のインターネットアドレスを使う」を選択し、「IP アド...
複数の仮想 NIC ドライバをインストールすると(つまり上述の...
** 仮想ハブ(プログラム名 stehub.exe) [#x11092e7]
仮想 NIC デーモンからの接続を待ち受けるポートを -p オプシ...
通常 -I と -U というオプションが追加されています。Windows...
Usage: stehub.exe [ -I | -U ] [ -p port] [-d level]
-p port : Port nubmer
-d level : Debug level[0-1] 
-I : Install Service
-U : Uninstall Service
C:\winvpn> stehub -p 8888
最初の起動時に起動後 Windows ファイアーウォールからの警告...
&ref(http://www.whiteboard.ne.jp/~admin2/pict/firewall-al...
#br
なお Windows サービスとして登録した場合、-p、-d  な...
&ref(http://www.whiteboard.ne.jp/~admin2/pict/service-ste...
** 仮想 NIC デーモン(プログラム名 sted.exe) [#x8785cfa]
起動時にste デバイスのインスタンス番号と、接続する仮想ハ...
「仮想ハブ」、「プロキシサーバ」のポート番号はそれぞれの...
前述の仮想ハブと同様に -I と -U というオプションがあり -I...
Usage: sted.exe [ -i instance] [-h hub[:port]] [ -p prox...
-i instance : Instance number of the ste device
-h hub[:port] : Virtual HUB and its port number
-p proxy[:port] : Proxy server and its port number
-d level : Debug level[0-3]
-I : Install Service
-U : Uninstall Service
C:\winvpn> sted.exe -i 0 -h hub.example.com
Windows サービスとして登録した場合には -i, -h, -p などの...
&ref(http://www.whiteboard.ne.jp/~admin2/pict/service-ste...
サービスとして使用する場合ひとつのプロセスしか起動できな...
コマンドプロンプトから起動する場合には、複数のコマンドプ...
* 設定例 [#s5855f76]
** Host To Lan [#x879f799]
ホストを遠隔地の内部ネットワークに参加させるための設定で...
&ref(http://www.whiteboard.ne.jp/~admin2/pict/net_config_...
*** HostB(Windows7) の設定 [#dd7ec0c2]
+ ste 仮想 NIC ドライバーをインストール。(下図ではローカ...
+ 内部ネットワークの NIC(下図ではローカルエリア接続3)と S...
+ ネットワークブリッジに の内部ネットワークの IP アドレス...
+ 仮想ハブデーモン stehub.exe を起動(例ではポート8888番を...
C:> \Program Files\SteVPN\stehub -p 8888
+ 仮想 NIC デーモンを起動。ローカルの仮想ハブに接続に行く。
C:\>\Program Files\SteVPN\sted.exe -h localhost:8888
debuglevel = 0
device path = \\.\STE0
Successfully opened STE device
Successfully connected with HUB
*** HostA(Windows XP) の設定 [#dd7ec0c2]
+ ste 仮想 NIC ドライバーをインストール。(下図ではローカ...
+ 仮想NIC に遠隔地の内部ネットワークの IP アドレスを設定...
+ 仮想 NIC デーモンを起動。HostA の仮想ハブに接続に行く。
C:\>\Program Files\SteVPN\sted.exe -h HostA:8888
debuglevel = 0
device path = \\.\STE0
Successfully opened STE device
Successfully connected with HUB
** Host to Host [#j6cf3be0]
それぞれ別々の物理ネットワークに繋がった2つのホスト(Win...
&ref(http://www.whiteboard.ne.jp/~admin2/pict/net_config_...
- ホストA ... 仮想ハブデーモンが動作するホスト。(Windows ...
- ホストB ... 仮想 NIC ドライバがインストールされており、...
- ホストC ... 仮想 NIC ドライバがインストールされており、...
*** ホストA(Windows XP)の設定 [#d2c4dd1c]
+ 仮想ハブデーモン stehub.exe をコピーしたディレクトリに...
C:\> cd \winvpn
C:\winvpn>
+ 仮想ハブデーモンを起動(TCP ポート 8888 で待機)
C:\winvpn> stehub.exe -p 8888
*** ホストB(Windows XP)の設定 [#t50fd35c]
+ 仮想 NIC ドライバーをインストール。&br;&ref(http://www....
+ 仮想 NIC の IP アドレスを設定。(上図では「ローカルエリ...
+ 仮想ハブデーモン sted.exe をコピーしたディレクトリに移...
C:\> cd \winvpn
C:\winvpn>
+ 仮想 NIC デーモンを起動。仮想ハブに接続に行く。
C:\winvpn>sted.exe -h hostA:8888
debuglevel = 0
device path = \\.\STE0
Successfully opened STE device
Successfully connected with HUB
*** ホストC(Solaris 10)の設定 [#f6ef2c9f]
+ 仮想 NIC ドライバーをインストール。
hostC # make install
/usr/sbin/install -s -f /kernel/drv/sparcv9 -m 0755 -u r...
/usr/sbin/install -s -f /kernel/drv -m 0644 -u root -g s...
/usr/sbin/install -s -d /usr/local/bin
/usr/sbin/install -s -f /usr/local/bin -m 0755 -u root s...
/usr/sbin/install -s -f /usr/local/bin -m 0755 -u root s...
hostC #
+ 仮想 NIC ste0 を設定
hostC # /usr/sbin/ifconfig ste0 plumb
hostC # /usr/sbin/ifconfig ste0 192.168.0.2 up
hostC # /usr/sbin/ifconfig ste0 ether 8:0:20:0:0:2
hostC # /usr/sbin/ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
hme0: flags=1000843 mtu 1500 index 2
inet 172.29.80.33 netmask ffffff00 broadcast 172...
ether 8:0:20:d3:da:8a
ste0: flags=1001843 mtu 1500 index 3
inet 192.168.0.2 netmask ffffff00 broadcast 192....
ether 8:0:20:0:0:2
hostC #
+ 仮想 NIC デーモン sted を起動。仮想ハブに接続に行く。
hostC # /usr/local/bin/sted -h hostA:8888
Successfully connected with HUB
Going to background mode
hostC #
* 解説 [#g9477d9f]
** ste.sys: 仮想 NIC ドライバ [#za046673]
カーネルモードで動作する仮想 NDIS ミニポートドライバです...
*** ロード時: [#u0f34f7c]
+ NDIS ミニポートドライバのエントランスポイントである Ste...
+ SteCreateAdapter() が呼ばれインスタンス毎の STE_ADAPTER...
+ SteRegisterDevice() が呼ばれ、この中でデバイスオブジェ...
*** パケット送信時: [#f390b43f]
+ NDIS ライブラリが仮想 NIC ドライバの SteMiniportSendPac...
+ 仮想 NIC ドライバは、自身の「送信キュー」にパケットをキ...
+ 仮想 NIC デーモンは、イベントを通知されれると、ReadFile...
+ READ 要求の IRP がドライバに到着し、READ 要求の為のディ...
+ 仮想 NIC ドライバンは「送信キュー」からパケットを取り出...
*** パケット受信時: [#g5d640b7]
+ 仮想 NIC デーモンが WriteFile() を使ってドライバに対し...
+ WRITE 要求の IRP がドライバに到着し、WRITE 要求の為のデ...
+ 仮想 NIC ドライバは初期化時に確保しておいた「パケットプ...
+ 仮想 NIC ドライバは、データがコピーされたパケットを「受...
+ NdisSetTimer() により受信処理用の関数(SteRecvTimerFunc...
** sted.exe: 仮想 NIC デーモン(サービス) [#v3b02357]
カーネルモードで動作する「仮想 NIC ドライバ」と「仮想ハブ...
仮想 NIC デーモンは起動すると 「\\.\STE<インスタンス番号>...
REGSVC IOCTL コマンドを受け取った「仮想 NIC ドライバ」は...
仮想 NIC デーモンは ReadFile() を利用して、「仮想 NIC ド...
typedef struct stehead
{
int len; /* パディング後のデータサイズ */
int orglen; /* パディングする前のサイズ。 */
} stehead_t;
逆に、「仮想ハブ」からデータを受信した場合には上記の steh...
Solaris 版と違い、Windows 版ではバックグラウンドでの実行...
** stehub.exe: 仮想 ハブ [#t80843af]
仮想ハブは、実際のハブのように、あるポート(仮想 NIC デー...
コードは Solaris 版と共通で、Solaris 版と同様に TCP ポー...
struct conn_stat {
struct conn_stat *next; /* 次の conn_stat 構造体のポ...
int fd; /* FD */
struct in_addr addr; /* 接続してきている仮想 NIC ...
};
* コンパイル [#z4bb914d]
** コンパイル [#gd2fa0f2]
コンパイルには Microsoft の WDK(Windows  Driver ...
WDK をインストール後、「スタート」->「プログラム」->「Win...
プロンプト上で、ソース を解凍したディレクトリに移動し、「...
Y:\vpn-ste-win>build
BUILD: Compile and Link for x86
BUILD: Loading c:\winddk\7600.16385.1\build.dat...
BUILD: Computing Include file dependencies:
BUILD: Start time: Tue Jan 03 01:08:41 2012
BUILD: Examining y:\vpn-ste-win directory tree for files...
y:\vpn-ste-win\exe\sted Invalidating OACR warning log...
BUILD: Saving c:\winddk\7600.16385.1\build.dat...
1>BUILD: Compiling and Linking y:\vpn-ste-win\exe\sted d...
2>BUILD: Compiling and Linking y:\vpn-ste-win\exe\stehub...
Configuring OACR for 'root:x86chk' - <OACR on>
1>Compiling - exe\sted\sted.c
2>Compiling - exe\stehub\stehub.c
2>Compiling - exe\stehub\getopt_win.c
1>Compiling - exe\sted\sted_socket.c
2>Compiling - exe\stehub\generating code...
2>Linking Executable - exe\stehub\i386\stehub.exe
1>Compiling - exe\sted\getopt_win.c
1>Compiling - exe\sted\generating code...
1>Linking Executable - exe\sted\i386\sted.exe
1>BUILD: Compiling and Linking y:\vpn-ste-win\sys direct...
1>Compiling - sys\ste.c
1>Compiling - sys\ste_local.c
1>Compiling - sys\generating code...
1>Linking Executable - sys\i386\ste.sys
BUILD: Finish time: Tue Jan 03 01:09:00 2012
BUILD: Done
13 files compiled - 5 Warnings - 2,544 LPS
3 executables built
** コンパイル後のインストール [#k432e7fc]
ste.sys 仮想 NIC ドライバのは Windows 7 の場合は前述の[[...
Windows XPの場合は「コントロールパネル」->「ハードウェア...
+ 「ハードウェア追加ウィザードの開始」で「次へ(N)」をクリ...
+ 「はい、ハードウェアを接続しています(Y)」を選択し、「次...
+ 「新しいハードウェアデバイスの追加」を選択し、「次へ(N)...
+ 「一覧から選択したハードウェアをインストールする(詳細...
+ 「ネットワークアダプタ」を選択し、「次へ(N)」をクリック
+ 「ディスク使用」をクリックし、「参照」から先ほど build ...
+ 「Ste Virtual NIC」を選択し、「次へ(N)」をクリック
+ 「ハードウェアをインストールする準備ができました」から...
+ 「ハード追加ウィザードの完了」がでたら「完了」をクリッ...
sted.exe 、stehub.exe デーモンは以下のディレクトリに作成...
sted.exe <zip ファイルを解凍したディレクトリ>\exe\ste...
stehub.exe <zip ファイルを解凍したディレクトリ>\exe\sth...
** 手動アンインストール [#k081b7f7]
ドライバのアンインストールはデバイスマネージャから行いま...
+ 「コントロールパネル」-> 「システム」から、「ハードウェ...
+ 「デバイスマネージャ」をクリック。
+ デバイスのツリーから、「ネットワークアダプタ」->「Ste V...
+ 「デバイス削除の確認」にて「次へ(N)」をクリック
sted.exe、stehub.exe については適宜ファイルを削除してくだ...
* 今後の課題 [#bd144f8b]
+ パフォーマンスの向上!!
+ Windows サービスとして登録した場合にも複数の仮想 NIC を...
+ 仮想 NIC のインスタンス番号がわかるようにする。
終了行:
#norelated
*Solaris で SoftEther もどきを動かそう/番外編 - Windows ...
* 概要 [#y0b8536d]
** SteVPN 〜簡易VPNアプリケーション〜 [#z89460a8]
SteVPN は離れたのネットワーク上にいる2つの Windows マシン...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/net_config_...
もともとは「Solaris で SoftEther もどきを動かそう」 で作...
Windows マシン同士だけでも VPN が組めるように、Windows 上...
* 目次 [#s442aa31]
#contents
* ご注意 [#d1f3986a]
ここで紹介しているプログラムは、カーネルモジュールを含ん...
また、ご利用方法によってはファイアーウォールで守られたロ...
* ダウンロード [#p74efb04]
*** インストーラ [#l401e922]
Windows のインストールファイルはこちらからダウンロードで...
インストーラ: [[SteVPN_setup.msi:https://github.com/...
*** ソースファイル [#c62ce995]
ソースファイルはこちらからダウンロードできます。
ソースファイル: [[kaizawa-vpn-ste-win.zip:https://github....
zip ファイルに含まれるファイル
|>|sys ディレクトリ|
|sources|Sources ファイル|
|ste.c|仮想 NIC ドライバ ste.sys のメインモジュールのソー...
|ste_local.c|Ste ドライバが利用する内部関数が含まれている...
|netste.inf|ドライバのインストールの為の INF ファイル|
|>|inc ディレクトリ|
|ste.h|Ste ドライバ用のヘッダファイル。構造体、定数、関数...
|sted.h|Sted.exe 仮想 NIC デーモン用のヘッダファイル。Sol...
|sted_win.h|Windows 版仮想 NIC デーモン用ヘッダファイル|
|getopt_win.h|擬似 getopt 用ヘッダファイル|
|>|exe/sted ディレクトリ|
|sources|Sources ファイル|
|sted.c|仮想 NIC デーモン sted.exe のメインソースファイル...
|sted_socket.c|仮想 NIC デーモンの Socket 通信用ソースフ...
|getopt_win.c|Solaris とのコード互換のための擬似 getopt()...
|>|exe/stehub ディレクトリ|
|sources|Sources ファイル|
|stehub.c|仮想ハブ stehub.exe のメインソースファイル。Sol...
|getopt_win.c|Solaris とのコード互換のための擬似 getopt()...
各ソースコードは以下ページで参照することもできます。
> http://github.com/kaizawa/vpn-ste-win
各ファイルのコメントの文字コードは ''UTF-8'' です。
* インストール [#hbd5b7c4]
以下の手順は Windows 7 での操作をベースにしています。
** インストールファイルの実行 [#b4b28703]
ダウンロードしたインストールファイルを実行します。
キュリティ警告がでますがよろしければ「実行」します
#ref(http://www.whiteboard.ne.jp/~admin2/pict/install-sec...
インストールが進みます
#ref(http://www.whiteboard.ne.jp/~admin2/pict/installer-i...
今度はドライバに対するセキュリティの警告がでますが、こち...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/install-dri...
最後にデバイスを接続するよう即すダイアログが出てきてイン...
もちろん ste ドライバは実ハードウェアの存在しない擬似デバ...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/install-fin...
** ドライバのインストール [#qbfe1556]
インストーラの実行で実行ファイルとドライバを Windows にコ...
コントロールパネルからデバイスマネージャを開き「操作」→「...
もしくはスタートメニューの「プログラムとファイルの検索」...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/start-wizar...
追加するハードウェアの選択方法をきかれますので「一覧から...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/how-to-inst...
ハードウェアの選択画面では「ネットワークアダプタ」を選ん...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/select-netw...
ネットワークアダプタの選択画面ではもし「SteVPN Virtual NI...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/select-adap...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/select-copy...
インストールが無事に完了すると以下の画面が現れますので「...
#ref(http://www.whiteboard.ne.jp/~admin2/pict/finish.png)~
以上で新しい仮想ネットワークアダプタが追加されドライバも...
** アンインストール [#rbce6d9f]
アンインストールは通常通り「プログラムと機能」からアンイ...
SteVPN をアンインストールすると stehub, sted デーモンプロ...
* 各プログラムの概要 [#l100f047]
プログラムの概要は Solaris 版と同様です。NIC や HUB をソ...
|ste.sys|デバイスドライバ|仮想 NIC デバイスドライバ。物理...
|sted.exe|ユーザモードプログラム&br;(コンソールプログラ...
|stehub.exe|ユーザモードプログラム&br;(コンソールプログ...
もちろんコードは違いますが、各プログラムの基本的な方針に...
- カーネルモードで動作する仮想 NIC のデバイスドライバを動...
- 仮想 NIC ドライバは、 アプリケーションからは実在の NIC ...
- 仮想ハブと仮想 NIC との通信はユーザモードのデーモン(Wi...
- 仮想ハブと仮想 NIC デーモンとの通信には TCP を使う。
* 使い方 [#xc42cf82]
仮想 NIC ドライバ、仮想 NIC デーモン、仮想ハブデーモンの...
** 仮想 NIC ドライバ [#x408f378]
仮想 NIC ドライバは実 NIC があるかのように振舞いますので...
+ 「スタート」->「設定」->「ネットワーク接続」
+ 「Ste Virtual NIC」を選択し、左クリックのメニューから「...
+ 「インターネットプロトコル(TCP/IP)」を選択し、「プロパ...
+ 「次のインターネットアドレスを使う」を選択し、「IP アド...
複数の仮想 NIC ドライバをインストールすると(つまり上述の...
** 仮想ハブ(プログラム名 stehub.exe) [#x11092e7]
仮想 NIC デーモンからの接続を待ち受けるポートを -p オプシ...
通常 -I と -U というオプションが追加されています。Windows...
Usage: stehub.exe [ -I | -U ] [ -p port] [-d level]
-p port : Port nubmer
-d level : Debug level[0-1] 
-I : Install Service
-U : Uninstall Service
C:\winvpn> stehub -p 8888
最初の起動時に起動後 Windows ファイアーウォールからの警告...
&ref(http://www.whiteboard.ne.jp/~admin2/pict/firewall-al...
#br
なお Windows サービスとして登録した場合、-p、-d  な...
&ref(http://www.whiteboard.ne.jp/~admin2/pict/service-ste...
** 仮想 NIC デーモン(プログラム名 sted.exe) [#x8785cfa]
起動時にste デバイスのインスタンス番号と、接続する仮想ハ...
「仮想ハブ」、「プロキシサーバ」のポート番号はそれぞれの...
前述の仮想ハブと同様に -I と -U というオプションがあり -I...
Usage: sted.exe [ -i instance] [-h hub[:port]] [ -p prox...
-i instance : Instance number of the ste device
-h hub[:port] : Virtual HUB and its port number
-p proxy[:port] : Proxy server and its port number
-d level : Debug level[0-3]
-I : Install Service
-U : Uninstall Service
C:\winvpn> sted.exe -i 0 -h hub.example.com
Windows サービスとして登録した場合には -i, -h, -p などの...
&ref(http://www.whiteboard.ne.jp/~admin2/pict/service-ste...
サービスとして使用する場合ひとつのプロセスしか起動できな...
コマンドプロンプトから起動する場合には、複数のコマンドプ...
* 設定例 [#s5855f76]
** Host To Lan [#x879f799]
ホストを遠隔地の内部ネットワークに参加させるための設定で...
&ref(http://www.whiteboard.ne.jp/~admin2/pict/net_config_...
*** HostB(Windows7) の設定 [#dd7ec0c2]
+ ste 仮想 NIC ドライバーをインストール。(下図ではローカ...
+ 内部ネットワークの NIC(下図ではローカルエリア接続3)と S...
+ ネットワークブリッジに の内部ネットワークの IP アドレス...
+ 仮想ハブデーモン stehub.exe を起動(例ではポート8888番を...
C:> \Program Files\SteVPN\stehub -p 8888
+ 仮想 NIC デーモンを起動。ローカルの仮想ハブに接続に行く。
C:\>\Program Files\SteVPN\sted.exe -h localhost:8888
debuglevel = 0
device path = \\.\STE0
Successfully opened STE device
Successfully connected with HUB
*** HostA(Windows XP) の設定 [#dd7ec0c2]
+ ste 仮想 NIC ドライバーをインストール。(下図ではローカ...
+ 仮想NIC に遠隔地の内部ネットワークの IP アドレスを設定...
+ 仮想 NIC デーモンを起動。HostA の仮想ハブに接続に行く。
C:\>\Program Files\SteVPN\sted.exe -h HostA:8888
debuglevel = 0
device path = \\.\STE0
Successfully opened STE device
Successfully connected with HUB
** Host to Host [#j6cf3be0]
それぞれ別々の物理ネットワークに繋がった2つのホスト(Win...
&ref(http://www.whiteboard.ne.jp/~admin2/pict/net_config_...
- ホストA ... 仮想ハブデーモンが動作するホスト。(Windows ...
- ホストB ... 仮想 NIC ドライバがインストールされており、...
- ホストC ... 仮想 NIC ドライバがインストールされており、...
*** ホストA(Windows XP)の設定 [#d2c4dd1c]
+ 仮想ハブデーモン stehub.exe をコピーしたディレクトリに...
C:\> cd \winvpn
C:\winvpn>
+ 仮想ハブデーモンを起動(TCP ポート 8888 で待機)
C:\winvpn> stehub.exe -p 8888
*** ホストB(Windows XP)の設定 [#t50fd35c]
+ 仮想 NIC ドライバーをインストール。&br;&ref(http://www....
+ 仮想 NIC の IP アドレスを設定。(上図では「ローカルエリ...
+ 仮想ハブデーモン sted.exe をコピーしたディレクトリに移...
C:\> cd \winvpn
C:\winvpn>
+ 仮想 NIC デーモンを起動。仮想ハブに接続に行く。
C:\winvpn>sted.exe -h hostA:8888
debuglevel = 0
device path = \\.\STE0
Successfully opened STE device
Successfully connected with HUB
*** ホストC(Solaris 10)の設定 [#f6ef2c9f]
+ 仮想 NIC ドライバーをインストール。
hostC # make install
/usr/sbin/install -s -f /kernel/drv/sparcv9 -m 0755 -u r...
/usr/sbin/install -s -f /kernel/drv -m 0644 -u root -g s...
/usr/sbin/install -s -d /usr/local/bin
/usr/sbin/install -s -f /usr/local/bin -m 0755 -u root s...
/usr/sbin/install -s -f /usr/local/bin -m 0755 -u root s...
hostC #
+ 仮想 NIC ste0 を設定
hostC # /usr/sbin/ifconfig ste0 plumb
hostC # /usr/sbin/ifconfig ste0 192.168.0.2 up
hostC # /usr/sbin/ifconfig ste0 ether 8:0:20:0:0:2
hostC # /usr/sbin/ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
hme0: flags=1000843 mtu 1500 index 2
inet 172.29.80.33 netmask ffffff00 broadcast 172...
ether 8:0:20:d3:da:8a
ste0: flags=1001843 mtu 1500 index 3
inet 192.168.0.2 netmask ffffff00 broadcast 192....
ether 8:0:20:0:0:2
hostC #
+ 仮想 NIC デーモン sted を起動。仮想ハブに接続に行く。
hostC # /usr/local/bin/sted -h hostA:8888
Successfully connected with HUB
Going to background mode
hostC #
* 解説 [#g9477d9f]
** ste.sys: 仮想 NIC ドライバ [#za046673]
カーネルモードで動作する仮想 NDIS ミニポートドライバです...
*** ロード時: [#u0f34f7c]
+ NDIS ミニポートドライバのエントランスポイントである Ste...
+ SteCreateAdapter() が呼ばれインスタンス毎の STE_ADAPTER...
+ SteRegisterDevice() が呼ばれ、この中でデバイスオブジェ...
*** パケット送信時: [#f390b43f]
+ NDIS ライブラリが仮想 NIC ドライバの SteMiniportSendPac...
+ 仮想 NIC ドライバは、自身の「送信キュー」にパケットをキ...
+ 仮想 NIC デーモンは、イベントを通知されれると、ReadFile...
+ READ 要求の IRP がドライバに到着し、READ 要求の為のディ...
+ 仮想 NIC ドライバンは「送信キュー」からパケットを取り出...
*** パケット受信時: [#g5d640b7]
+ 仮想 NIC デーモンが WriteFile() を使ってドライバに対し...
+ WRITE 要求の IRP がドライバに到着し、WRITE 要求の為のデ...
+ 仮想 NIC ドライバは初期化時に確保しておいた「パケットプ...
+ 仮想 NIC ドライバは、データがコピーされたパケットを「受...
+ NdisSetTimer() により受信処理用の関数(SteRecvTimerFunc...
** sted.exe: 仮想 NIC デーモン(サービス) [#v3b02357]
カーネルモードで動作する「仮想 NIC ドライバ」と「仮想ハブ...
仮想 NIC デーモンは起動すると 「\\.\STE<インスタンス番号>...
REGSVC IOCTL コマンドを受け取った「仮想 NIC ドライバ」は...
仮想 NIC デーモンは ReadFile() を利用して、「仮想 NIC ド...
typedef struct stehead
{
int len; /* パディング後のデータサイズ */
int orglen; /* パディングする前のサイズ。 */
} stehead_t;
逆に、「仮想ハブ」からデータを受信した場合には上記の steh...
Solaris 版と違い、Windows 版ではバックグラウンドでの実行...
** stehub.exe: 仮想 ハブ [#t80843af]
仮想ハブは、実際のハブのように、あるポート(仮想 NIC デー...
コードは Solaris 版と共通で、Solaris 版と同様に TCP ポー...
struct conn_stat {
struct conn_stat *next; /* 次の conn_stat 構造体のポ...
int fd; /* FD */
struct in_addr addr; /* 接続してきている仮想 NIC ...
};
* コンパイル [#z4bb914d]
** コンパイル [#gd2fa0f2]
コンパイルには Microsoft の WDK(Windows  Driver ...
WDK をインストール後、「スタート」->「プログラム」->「Win...
プロンプト上で、ソース を解凍したディレクトリに移動し、「...
Y:\vpn-ste-win>build
BUILD: Compile and Link for x86
BUILD: Loading c:\winddk\7600.16385.1\build.dat...
BUILD: Computing Include file dependencies:
BUILD: Start time: Tue Jan 03 01:08:41 2012
BUILD: Examining y:\vpn-ste-win directory tree for files...
y:\vpn-ste-win\exe\sted Invalidating OACR warning log...
BUILD: Saving c:\winddk\7600.16385.1\build.dat...
1>BUILD: Compiling and Linking y:\vpn-ste-win\exe\sted d...
2>BUILD: Compiling and Linking y:\vpn-ste-win\exe\stehub...
Configuring OACR for 'root:x86chk' - <OACR on>
1>Compiling - exe\sted\sted.c
2>Compiling - exe\stehub\stehub.c
2>Compiling - exe\stehub\getopt_win.c
1>Compiling - exe\sted\sted_socket.c
2>Compiling - exe\stehub\generating code...
2>Linking Executable - exe\stehub\i386\stehub.exe
1>Compiling - exe\sted\getopt_win.c
1>Compiling - exe\sted\generating code...
1>Linking Executable - exe\sted\i386\sted.exe
1>BUILD: Compiling and Linking y:\vpn-ste-win\sys direct...
1>Compiling - sys\ste.c
1>Compiling - sys\ste_local.c
1>Compiling - sys\generating code...
1>Linking Executable - sys\i386\ste.sys
BUILD: Finish time: Tue Jan 03 01:09:00 2012
BUILD: Done
13 files compiled - 5 Warnings - 2,544 LPS
3 executables built
** コンパイル後のインストール [#k432e7fc]
ste.sys 仮想 NIC ドライバのは Windows 7 の場合は前述の[[...
Windows XPの場合は「コントロールパネル」->「ハードウェア...
+ 「ハードウェア追加ウィザードの開始」で「次へ(N)」をクリ...
+ 「はい、ハードウェアを接続しています(Y)」を選択し、「次...
+ 「新しいハードウェアデバイスの追加」を選択し、「次へ(N)...
+ 「一覧から選択したハードウェアをインストールする(詳細...
+ 「ネットワークアダプタ」を選択し、「次へ(N)」をクリック
+ 「ディスク使用」をクリックし、「参照」から先ほど build ...
+ 「Ste Virtual NIC」を選択し、「次へ(N)」をクリック
+ 「ハードウェアをインストールする準備ができました」から...
+ 「ハード追加ウィザードの完了」がでたら「完了」をクリッ...
sted.exe 、stehub.exe デーモンは以下のディレクトリに作成...
sted.exe <zip ファイルを解凍したディレクトリ>\exe\ste...
stehub.exe <zip ファイルを解凍したディレクトリ>\exe\sth...
** 手動アンインストール [#k081b7f7]
ドライバのアンインストールはデバイスマネージャから行いま...
+ 「コントロールパネル」-> 「システム」から、「ハードウェ...
+ 「デバイスマネージャ」をクリック。
+ デバイスのツリーから、「ネットワークアダプタ」->「Ste V...
+ 「デバイス削除の確認」にて「次へ(N)」をクリック
sted.exe、stehub.exe については適宜ファイルを削除してくだ...
* 今後の課題 [#bd144f8b]
+ パフォーマンスの向上!!
+ Windows サービスとして登録した場合にも複数の仮想 NIC を...
+ 仮想 NIC のインスタンス番号がわかるようにする。
ページ名: