JP5750352B2 - ネットワークゲートウェイ装置 - Google Patents
ネットワークゲートウェイ装置 Download PDFInfo
- Publication number
- JP5750352B2 JP5750352B2 JP2011220366A JP2011220366A JP5750352B2 JP 5750352 B2 JP5750352 B2 JP 5750352B2 JP 2011220366 A JP2011220366 A JP 2011220366A JP 2011220366 A JP2011220366 A JP 2011220366A JP 5750352 B2 JP5750352 B2 JP 5750352B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- packet
- tcp
- nic
- destination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
- Communication Control (AREA)
Description
より詳細には、既存のネットワーク環境に対して何ら設定変更を強いることなく、容易にセキュリティを高めた暗号化通信機能を追加できるネットワークゲートウェイ装置に関する。
特許文献1は、発明者によるトランスポート層の暗号化プロトコルに関する先行技術文献である。
例えば、ゲートウェイ装置がプロキシサーバである場合、端末はプロキシサーバ対応アプリケーションプログラムを用いて、アプリケーションプログラムにはプロキシサーバのIPアドレスとポート番号を設定しなければならない。つまり、アプリケーションプログラムがプロキシサーバに対応していないと、プロキシサーバを介した通信そのものが実現できない。
また例えば、ゲートウェイ装置がルータである場合、端末はデフォルトゲートウェイのIPアドレスを設定し直さなければならない。
更に、ゲートウェイ装置が既存のネットワーク環境に導入されることを考えると、ゲートウェイ装置のための空いているIPアドレスを確保しなければならない他、既にあるデフォルトゲートウェイとなっているルータ等、他のネットワーク装置にも設定変更が必要になることもある。
図1は、本発明の実施形態に係るネットワークゲートウェイ装置を含むネットワークの概略図である。
本実施形態のネットワークゲートウェイ装置はXPTCP機能を提供するので、これ以降、ネットワークゲートウェイ装置をXPTCPゲートウェイ装置101と称する。
図1には、XPTCPゲートウェイ装置101を含むネットワークが示されている。
XPTCPゲートウェイ装置101を介して左側には、XPTCPに非対応である二台の端末、XPTCP非対応PC102及びXPTCP非対応PC103が、XPTCPゲートウェイ装置101の内側NIC104に接続されている。
これ以降、XPTCPゲートウェイ装置101を介して左側のネットワークをXPTCP非対応ネットワーク109と、XPTCPゲートウェイ装置101を介して右側のネットワークをXPTCP対応ネットワーク110と、それぞれ称する。
つまり、XPTCPゲートウェイ装置101は、第一のNICともいえる内側NIC104がXPTCP非対応ネットワーク109に接続され、第二のNICともいえる外側NIC108がXPTCP対応ネットワーク110に接続されている。
図2はXPTCPゲートウェイ装置101の機能ブロック図である。
XPTCPゲートウェイ装置101は、ネットワークOSが稼働するコンピュータにXPTCPゲートウェイ装置101として稼働する為のプログラムを導入することで実現できる。ネットワークOSは、例えば周知のWindows(登録商標)或はLinux(登録商標)等のOSが利用可能である。但し、XPTCPゲートウェイ装置101はネットワークの経路上に設置される必要があるので、コンピュータには二つのNIC(Network Interface Card)が備わっている必要がある。これが内側NIC104と外側NIC108である。
初期設定部201は、ネットワークOSが起動した際に設定されるネットワークの基本設定作業に加えて、内側NIC104と外側NIC108に「プロミスキャスモード(promiscuous mode)」を設定する。「無差別モード」とも言われるこのモードは、ネットワーク上を流れる全てのパケットを受信して読み込むことができる。本実施形態のXPTCPゲートウェイ装置101には必要な設定である。
なお、宛先ポート番号はそのまま変更しない。
第二のNICアドレス変換テーブルともいえる外側NICアドレステーブル210は、アドレス変換処理部203が外側NIC108とTCP/IPプロトコルスタック205との間で、パケットに付されているMACアドレス、IPアドレス及びポート番号を書き換える、又は書き戻すためのテーブルである。
これら内側NICアドレステーブル209及び外側NICアドレステーブル210は、アドレス変換テーブルともいえる。
TCP/IPプロトコルスタック205はアプリケーションプログラムに対し、周知のソケット(「BSDソケット」という名称で周知である。)というアプリケーションプログラムインターフェース(API)を提供する。
TCP/IPプロトコルスタック205は、NICから受信したパケットを、ARPヘッダ、IPヘッダ、TCP又はUDPヘッダの順に除去し、パケットのペイロードを連結してストリームデータに戻し、所定のアプリケーションに引き渡す。
逆に、TCP/IPプロトコルスタック205は、アプリケーションから受け取ったストリームデータを、TCP/IPプロトコルスタック205が事前に形成してアプリケーションから指定されたソケットを通じて、所定のデータサイズのペイロードに分割した後、TCP又はUDPヘッダ、IPヘッダ、ARPヘッダの順にヘッダを付加し、NICを通じて送信先へ送信する。
本実施形態のXPTCPゲートウェイ装置101は、内側NIC104と外側NIC108の双方にコネクションを形成し、そのコネクション同士でデータの転送を行う。
内側NICアドレステーブル209及び外側NICアドレステーブル210は、TCP/IPプロトコルスタック205が作成するコネクションを管理するテーブルである、ともいえる。
また、XPTCP処理部206はXPTCP処理対象マスタ208に記憶されている指示内容に応じて、認証処理及び暗号化通信処理を行う。特にXPTCP処理部206は、TCP/IPプロトコルスタック205から受信したデータを再びTCP/IPプロトコルスタック205に返送する際に、ソケットに付されている送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号を書き換える。
ソケット処理部207はTCP/IPプロトコルスタック205に対してソケットオープン/クローズ処理のみ行い、TCP/IPプロトコルスタック205との実際のデータの送受信はXPTCP処理部206が行う。
内側NIC104と外側NIC108は、NICドライバを含めて物理層とデータリンク層に該当する。
TCP/IPプロトコルスタック205は、ネットワーク層(IP、ICMP(Internet Control Message Protocol)、ARP)とトランスポート層(TCP、UDP)に該当する。
ソケット処理部207はアプリケーション層に該当する。
アドレス変換処理部203はデータリンク層とネットワーク層の間に潜り込み、TCP/IPプロトコルスタック205が本来なら無関係である筈のパケットを処理できるように、パケットに付されている送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号を書き換える。このため、アドレス変換処理部203はネットワーク層に該当する。
XPTCP処理部206はトランスポート層とアプリケーション層の間に介在して、ソケットオープン/クローズ処理以外の、ネットワークストリームデータの転送と、認証及び暗号化或は復号を行う。このため、XPTCP処理部206はアプリケーション層が介在できない認証及び暗号化通信を実現するトランスポート層に該当すると共に、データを転送するという機能においてアプリケーション層にも該当する。
そこで、TCP/IPプロトコルスタック205の機能を最大限有効に活用しつつ、必要最小限のプログラムを追加することでXPTCPゲートウェイ装置101を実現するために、本実施形態のXPTCPゲートウェイ装置101は、TCP/IPプロトコルスタック205を「騙す」処理を施す。
つまり、XPTCPゲートウェイ装置101に割り当てられているIPアドレスとは無関係である筈のパケットをTCP/IPプロトコルスタック205が処理できるようにするために、内側NIC104又は外側NIC108から受信したパケットに付されている送信元MACアドレス、送信元IPアドレス、宛先MACアドレス及び宛先IPアドレスを、一旦、XPTCPゲートウェイ装置101に割り当てられているIPアドレス、MACアドレス等に書き換える。そして、送信元及び宛先のMACアドレス、IPアドレス及びポート番号を書き換えた当該パケットをTCP/IPプロトコルスタック205に引き渡す。
アドレス変換処理部203及びXPTCP処理部206にて行う書換処理、つまりパケットに付されている送信元及び宛先のMACアドレス、IPアドレスそしてポート番号の書換処理の詳細は、図18、図19及び図20にて後述する。
図3は、XPTCPゲートウェイ装置101に備わっている各種テーブル及びリストのフィールド構成を示す図である。
図2に示すXPTCPゲートウェイ装置101が保有する、内側NICアドレステーブル209、外側NICアドレステーブル210、XPTCPポリシーテーブル211、仮IPMACリスト204は、図示しないRAM内に設けられる。また、XPTCP処理対象マスタ208はハードディスク装置等の図示しない不揮発性ストレージに設けられ、アドレス変換処理部203が起動する際、図示しないRAM内に複写される。ネットワーク設定情報メモリ202はネットワークOSによって図示しないRAM内に設けられる。
内側NICアドレステーブル209は、プロトコル種別フィールドと、送信元MACアドレスフィールドと、送信元IPアドレスフィールドと、送信元ポート番号フィールドと、宛先MACアドレスフィールドと、宛先IPアドレスフィールドと、宛先ポート番号フィールドと、索引用ポート番号フィールドと、タイマ用カウンタ値フィールドを有する。
外側NICアドレステーブル210は、プロトコル種別フィールドと、送信元MACアドレスフィールドと、送信元IPアドレスフィールドと、送信元ポート番号フィールドと、宛先MACアドレスフィールドと、宛先IPアドレスフィールドと、宛先ポート番号フィールドと、索引用ポート番号フィールドと、動的ポート番号フィールドと、タイマ用カウンタ値フィールドを有する。
送信元MACアドレスフィールドには、内側NIC104又は外側NIC108から入って来るパケットに付されている送信元MACアドレスが格納される。これはMACヘッダ402の送信元MACアドレスから読み取る。
送信元IPアドレスフィールドには、内側NIC104又は外側NIC108から入って来るパケットに付されている送信元IPアドレスが格納される。これはIPヘッダ401の送信元IPアドレスから読み取る。
送信元ポート番号フィールドには、内側NIC104又は外側NIC108から入って来るパケットに付されている送信元ポート番号が格納される。これはTCPヘッダ403又はUDPヘッダ404の送信元ポート番号から読み取る。
宛先MACアドレスフィールドには、内側NIC104又は外側NIC108から入って来るパケットに付されている宛先MACアドレスが格納される。これはMACヘッダ402の宛先MACアドレスから読み取る。
宛先IPアドレスフィールドには、内側NIC104又は外側NIC108から入って来るパケットに付されている宛先IPアドレスが格納される。これはIPヘッダ401の宛先IPアドレスから読み取る。
宛先ポート番号フィールドには、内側NIC104又は外側NIC108から入って来るパケットに付されている宛先ポート番号が格納される。これはTCPヘッダ403又はUDPヘッダ404の宛先ポート番号から読み取る。
この索引用ポート番号は、XPTCP処理対象マスタ208のレコードに処理対象として合致するTCP SYNパケットが内側NIC104から来た時に、アドレス変換処理部203が内側NICアドレステーブル209に新規レコードを追記録する際、図2のTCPポート番号メモリ212の値が用いられる。索引用ポート番号は、ポート番号を索引情報として利用するので、一意性(ユニークであり、重複しない)を有することが求められる。このため、TCPポート番号メモリ212の値を利用とした際に、既に当該番号が使われている場合は、TCPポート番号メモリ212の値をインクリメントして、当該ポート番号が空いているか、確認する。
TCP ACKパケットとは、周知のTCP通信における確認応答を表すパケットであり、TCPヘッダ403に存在する6ビットのコードビットの2番目のビットが「1」のパケットである。
TCP FINパケットとは、周知のTCP通信の終了(コネクションの切断要求)を表すパケットであり、TCPヘッダ403に存在する6ビットのコードビットの6番目のビットが「1」のパケットである。
TCP ACK/SYNパケットとは、TCPヘッダ403に存在する6ビットのコードビットの2番目のビットと5番目のビットが「1」のパケットであり、TCP SYNパケットとTCP ACKパケットの、二つの意味を同時に備えている。
内側NICMACアドレスは、内側NIC104の、本来のMACアドレスを示す。
内側NICIPアドレスは、内側NIC104の、本来のIPアドレスを示す。
外側NICMACアドレスは、外側NIC108の、本来のMACアドレスを示す。
外側NICIPアドレスは、外側NIC108の、本来のIPアドレスを示す。
内側NICIPアドレスフィールドには、内側NIC104のIPアドレスが格納される。これはネットワーク設定情報メモリ202から得られる。
第一仮MACアドレスフィールドには、第一仮MACアドレスが格納される。
第一仮IPアドレスフィールドには、第一仮IPアドレスが格納される。
外側NICIPアドレスフィールドには、外側NIC108のIPアドレスが格納される。これはネットワーク設定情報メモリ202から得られる。
第二仮MACアドレスフィールドには、第二仮MACアドレスが格納される。
第二仮IPアドレスフィールドには、第二仮IPアドレスが格納される。
第一仮MACアドレス、第一仮IPアドレス、第二仮MACアドレス及び第二仮IPアドレスは、アドレス変換処理部203及びXPTCP処理部206にて用いる、偽のMACアドレス及びIPアドレスである。
レコード番号フィールドは、XPTCP処理対象マスタ208のレコード番号そのものである。XPTCP処理対象マスタ208のレコードを一意に識別する連番の番号である。なお、レコード番号フィールドに格納する情報は、後述するXPTCPポリシーテーブル211にて用いる、レコードを一意に識別するための情報である。したがって、一意に識別が可能であれば、必ずしもレコード番号でなくても良い。
プロトコル種別フィールドには、内側NIC104から入って来るパケットの種別として、TCP又はUDPを示すフラグが格納される。これはIPヘッダ401のプロトコル番号から読み取る。
送信元IPアドレスフィールドには、内側NIC104から入って来るパケットに付されている送信元IPアドレスが格納される。これはIPヘッダ401の送信元IPアドレスから読み取る。
送信元ポート番号フィールドには、内側NIC104から入って来るパケットに付されている送信元ポート番号が格納される。これはTCPヘッダ403又はUDPヘッダ404の送信元ポート番号から読み取る。
宛先IPアドレスフィールドには、内側NIC104から入って来るパケットに付されている宛先IPアドレスが格納される。これはIPヘッダ401の宛先IPアドレスから読み取る。
宛先ポート番号フィールドには、内側NIC104から入って来るパケットに付されている宛先ポート番号が格納される。これはTCPヘッダ403又はUDPヘッダ404の宛先ポート番号から読み取る。
暗号種別他フィールドには、当該XPTCPセッションに用いる認証や暗号の種類等の情報が格納される。
つまり、XPTCP処理対象マスタ208には、端末からサーバに向けて送信されるパケットのIPアドレス及びポート番号の組み合わせと、そのIPアドレス及びポート番号の組み合わせを有するパケットによって、内側NIC104及び外側NIC108の夫々に形成されるコネクションを通過するデータストリームに適用する、暗号化等に関する情報が記憶される。
プロトコル種別フィールドには、XPTCP処理対象マスタ208と同様、内側NIC104から入って来るパケットの種別として、TCP又はUDPを示すフラグが格納される。これはIPヘッダ401のプロトコル番号から読み取る。
索引用ポート番号フィールドには、当該セッションのパケットに対してアドレス変換処理部203によって付されている、索引用ポート番号が格納される。
レコード番号フィールドは、XPTCP処理対象マスタ208のレコード番号そのものである。したがって、このフィールドに記されているレコード番号で、XPTCP処理対象マスタ208のレコードを指定し、当該レコードの暗号種別他フィールドを参照する。
XPTCPポリシーテーブル211は、索引用ポート番号と暗号種別他の情報を紐付けることで、索引用ポート番号に係るTCPコネクションを通過するデータストリームに適用する、暗号種別等を特定する。
アドレステーブル更新カウンタ213は、内側NICアドレステーブル209及び外側NICアドレステーブル210の、使われなくなったレコードを削除する際に、経過時間を見るためのカウンタである。アドレステーブル更新カウンタ213は、一例としては0から119迄の数を計数するループカウンタである。0から始まり、1秒毎に計数値が1インクリメントして、119迄計数すると、再度0から計数を開始する。
アドレス変換処理部203は、後述するTCP切断シーケンスにおいて、TCP FINパケットが内側NIC104及び外側NIC108の両方から来たことに呼応して、アドレステーブル更新カウンタ213の値を、内側NICアドレステーブル209及び外側NICアドレステーブル210の該当するレコードの、タイマ用カウント値フィールドに書き込む。そして、タイマ用カウント値フィールドの値と現在のアドレステーブル更新カウンタ213の値を比較して、60秒以上を経過したと判断したら、もはやそのレコードに示される通信セッションは終了したと判断して、当該レコードを削除する。
内側NIC104からTCP SYNパケットが来ると、新たなコネクションを作成する必要がある。アドレス変換処理部203はTCP/IPプロトコルスタック205にコネクションを作成させるために、アドレス変換処理を行う。アドレス変換処理によって、TCP/IPプロトコルスタック205は本来の送信元IPアドレス及び宛先IPアドレス等とは異なる、偽の送信元IPアドレス及び宛先IPアドレス等が付されたパケットに対して、コネクションを形成する。
内側NICアドレステーブル209に新たなレコードが作成された際、TCPポート番号メモリ212の値を1インクリメントして、その値を索引用ポート番号フィールドに書き込む。
索引用ポート番号はTCP/IPプロトコルスタック205が認識可能な番号でなければならないので、TCPポート番号メモリ212に記入される最大値は65535である。
TCPポート番号メモリ212は、「短命なポート」とも呼ばれる周知のエフェメラルポートの番号である、ポート番号49152から65535迄を1ずつインクリメントする値が書き込まれる。なお、TCPポート番号メモリ212はループカウンタで構成しても良い。
図5は、アドレス変換処理部203の機能ブロック図である。
アドレス変換処理部203は、内側NIC受信処理部501、外側NIC受信処理部502、外側NIC送信処理部503、内側NIC送信処理部504、テーブル更新処理部505、及びポリシー回答部506の、五つの機能ブロックに分けられる。
内側NIC104が受信したパケットは、最初に受信パケット判定部601がXPTCP処理対象マスタ208を参照して、当該パケットがXPTCP処理の対象になるか否か等を判定する。
もし、内側NIC104が受信したパケットが、例えばICMPパケットやXPTCP処理対象マスタ208に合致しない処理対象外パケットである場合は、受信パケット判定部601はそのパケットをそのまま外側NIC108へ転送する。
もし、内側NIC104が受信したパケットが、XPTCPゲートウェイ装置101に対して送信された、XPTCP処理対象外パケットである場合は、受信パケット判定部601はそのパケットをそのままTCP/IPプロトコルスタック205へ転送する。
もし、内側NIC104から入力されたパケットがXPTCP処理対象マスタ208に合致する処理対象パケットである場合は、受信パケット判定部601は次にそのパケットの詳細を見る。
アドレス置換部602は内側NICアドレステーブル209を送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号で検索して、レコードを特定し、パケットの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス及び宛先IPアドレスを書き換えて、TCP/IPプロトコルスタック205へ転送する。
そこで、受信パケット判定部601はTCP FINパケットをレコード削除準備処理部604に引き渡す。
レコード削除準備処理部604は、TCP FINパケットに付されている送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号で内側NICアドレステーブルを検索してレコードを特定し、当該レコードの索引ポート番号を削除予定リスト605に書き出す。削除予定リスト605は、図示しないRAM内に設けられた、削除を予定しているレコードの索引ポート番号が記録されるリストである。その後、レコード削除準備処理部604はTCP FINパケットをアドレス置換部602に引き渡す。アドレス置換部602は前述のTCPデータパケット及びTCP SYNパケットと同様に、TCP FINパケットの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス及び宛先IPアドレスを書き換えて、TCP/IPプロトコルスタック205へ転送する。
アドレス置換部602は、パケットに付されているMACアドレス、IPアドレス及びポート番号を書き換える際、仮IPMACリスト204を参照する。
図7は、外側NIC受信処理部502の機能ブロック図である。
外側NIC108が受信したパケットは、最初に受信パケット判定部701がXPTCP処理対象マスタ208を参照して、当該パケットがXPTCP処理の対象になるか否か等を判定する。
もし、外側NIC108が受信したパケットが、例えばICMPパケットやXPTCP処理対象マスタ208に合致しない処理対象外パケットである場合は、外側NIC受信処理部502はそのパケットをそのまま内側NIC104へ転送する。
もし、外側NIC108が受信したパケットが、XPTCPゲートウェイ装置101に対して送信された、XPTCP処理対象外パケットである場合は、外側NIC受信処理部502はそのパケットをそのままTCP/IPプロトコルスタック205へ転送する。
もし、外側NIC108から入力されたパケットがXPTCP処理対象マスタ208に合致する処理対象パケットである場合は、受信パケット判定部701は次にそのパケットの詳細を見る。
アドレス置換部702は外側NICアドレステーブル210を送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号で検索してレコードを特定し、パケットの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号を書き換えて、TCP/IPプロトコルスタック205へ転送する。
そこで、受信パケット判定部701はTCP FINパケットをレコード削除処理部703に引き渡す。
レコード削除処理部703は、TCP FINパケットに付されている送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号で内側NICアドレステーブルを検索してレコードを特定し、当該レコードの索引ポート番号を取得する。
次に、取得した索引ポート番号が削除予定リスト605にあるか否かを確認する。削除予定リスト605に当該索引ポート番号があったなら、現時点のアドレステーブル更新カウンタ213の値を、当該索引ポート番号に係る外側NICアドレステーブル210及び内側NICアドレステーブル209のレコードの、タイマ用カウンタ値フィールドに書き込む。その後、レコード削除処理部703はTCP FINパケットをアドレス置換部702に引き渡す。
アドレス置換部702は前述のTCPデータパケットと同様に、TCP FINパケットの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス宛先IPアドレス及び宛先ポート番号を書き換えて、TCP/IPプロトコルスタック205へ転送する。
アドレス置換部702は、パケットに付されているMACアドレス、IPアドレス及びポート番号を書き換える際、仮IPMACリスト204を参照する。
図8は、外側NIC送信処理部503の機能ブロック図である。
送信パケット判定部801は、TCP/IPプロトコルスタック205から送出されたパケットを受信すると、最初にパケットがアドレス書換対象外パケットか、アドレス書換対象TCPパケットか、或はARP要求パケットかを判定する。
もし、パケットがアドレス書換対象外のパケットであれば、そのまま何もせずに外側NIC108に送信する。
ARP応答処理部802は仮IPMACリスト204を参照して、TCP/IPプロトコルスタック205に第二仮MACアドレスを返答する。
動的ポート記録処理部803は、TCP SYNパケットに付されている送信元ポート番号、つまり動的ポート番号と、宛先ポート番号として付されている索引ポート番号を取得する。そして、索引ポート番号で外側NICアドレステーブル210の該当レコードを特定したら、当該レコードの動的ポート番号フィールドに、動的ポート番号を記録する。そして、動的ポート記録処理部803は当該TCP SYNパケットをアドレス復元部804に引き渡す。
アドレス復元部804は外側NICアドレステーブル210の、先に宛先ポート番号で特定したレコードの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号を取得し、パケットの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号を書き戻して、外側NIC108に送信する。
送信パケット判定部801は当該TCPパケットをアドレス復元部804に引き渡す。
アドレス復元部804は外側NICアドレステーブル210の、先に索引ポート番号で特定したレコードの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号を取得し、パケットの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号を書き戻して、外側NIC108に送信する。
図9は、内側NIC送信処理部504の機能ブロック図である。
送信パケット判定部901は、TCP/IPプロトコルスタック205から送出されたパケットを受信すると、最初にパケットがアドレス書換対象外パケットか、或はアドレス書換対象TCPパケットかを判定する。
もし、パケットがアドレス書換対象外のパケットであれば、そのまま何もせずに内側NIC104に送信する。
もし、パケットがTCPパケットであり、パケットに付されている宛先IPアドレスが第一仮IPアドレスである場合は、送信パケット判定部901は当該TCPパケットをアドレス復元部902に引き渡す。
アドレス復元部902は内側NICアドレステーブル209の、索引ポート番号で特定したレコードの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号を取得し、パケットの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号を書き戻して、内側NIC104に送信する。
テーブル更新処理部505は1秒毎に起動し、アドレステーブル更新カウンタ213の値を1インクリメントして、内側NICアドレステーブル209及び外側NICアドレステーブル210の全てのレコードのタイマ用カウント値フィールドを検査し、TCP FINパケットが来てクローズされたコネクションが60秒以上経過したレコードがあるか否かを確認する。そして、そのようなレコードがあれば当該レコードを削除する。
ポリシー回答部506は、XPTCP処理部206から送出される、索引ポート番号を伴うポリシー問い合わせに対し、XPTCP処理対象マスタ208及び内側NICアドレステーブル209を参照して、当該索引ポート番号で特定されるコネクションに対する暗号種別等を指定するための、XPTCP処理対象マスタ208のレコード番号を返答する。
図10は、XPTCP処理部206の機能ブロック図である。
イベント検出部1001は、TCP/IPプロトコルスタック205から得られる、acceptイベント、connect requestイベント及びcloseイベントを検出し、ソケット操作部1002及びポリシー設定部1003を制御する。
ソケット操作部1002は、TCP/IPプロトコルスタック205によって図示しないRAM上に形成されたソケットメモリ領域1004に対し、ソケットから得られるストリームデータを、暗号化処理部1005又は復号処理部1006に引き渡し、処理されたストリームデータをソケットメモリ領域1004上の所定のソケットに引き渡す。
ポリシー設定部1003は、ソケット操作部1002からイベント検出部1001を通じて得られた索引ポート番号を引数として、アドレス変換処理部に対してポリシーを問い合わせる。この問い合わせに対しては、アドレス変換処理部のポリシー回答部506がXPTCP処理対象マスタ208のレコード番号を返答する。すると、ポリシー設定部1003はXPTCPポリシーテーブル211に、索引ポート番号とXPTCP処理対象マスタ208のレコード番号を記録して、紐付ける。
暗号化処理部1005は、XPTCPポリシーテーブル211及びXPTCP処理対象マスタ208を参照して、ソケット操作部1002から受け取ったストリームデータに対して、指定された暗号化処理を遂行する。
復号処理部1006は、XPTCPポリシーテーブル211及びXPTCP処理対象マスタ208を参照して、ソケット操作部1002から受け取ったストリームデータに対して、指定された復号処理を遂行する。
なお、本来ならXPTCP処理部206には、認証に関する機能も存在するが、本実施形態のXPTCPゲートウェイ装置101では、認証に関する動作は発明の範疇から外れるので、敢えて認証に関する記述は省略している。このため、図10に示すXPTCP処理部206の機能ブロック図には、認証に関する機能ブロックは記述を省略している。
これより、図11から図17のフローチャートに基づいて、XPTCPゲートウェイ装置101の動作の流れを説明する。
処理を開始すると(S1101)、受信パケット判定部601は、最初に内側NIC104が受信したパケットが、例えばARPパケットやICMPパケット等の、明らかに転送対象となる処理対象外パケットであるか否かを判定する(S1102)。
判定の結果、受信したパケットが、ARPパケットやICMPパケット等の、明らかに転送対象となる処理対象外パケットである場合は(S1102のYES)、受信パケット判定部601はそのパケットをそのまま外側NIC108へ転送して(S1103)、一連の処理を終了する(S1104)。
判定の結果、受信したパケットが、XPTCPゲートウェイ装置101に対して送信された、XPTCP処理対象外パケットである場合は(S1105のYES)、受信パケット判定部601はそのパケットをそのままTCP/IPプロトコルスタック205へ転送して(S1106)、一連の処理を終了する(S1104)。
検索の結果、受信したパケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス及び宛先ポート番号の組み合わせが、XPTCP処理対象マスタ208になければ(S1108のNO)、当該パケットはXPTCPゲートウェイ装置101の処理対象外なので、受信パケット判定部601はそのパケットをそのまま外側NIC108へ転送して(S1103)、一連の処理を終了する(S1104)。
受信パケット判定部601は、受信したパケットがTCP SYNパケットであるか否かを判定する(S1109)。
判定の結果、受信したパケットがTCP SYNパケットであれば(S1109のYES)、受信パケット判定部601は当該TCP SYNパケットをコネクション登録処理部603に引き渡す。
コネクション登録処理部603は、TCP SYNパケットを受け取ると、TCPポート番号メモリを参照して、現時点で使われていない(重複しない)新たな索引ポート番号を得た後、受信したパケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス及び宛先ポート番号と共に、内側NICアドレステーブル209に新規のレコードとして追記録する(S1110)。更に、同じ内容で外側NICアドレステーブル210にも同様に新規レコードを追記録する(S1111)。
・パケットに付されている送信元MACアドレスを第一仮MACアドレスに、
・パケットに付されている送信元IPアドレスを第一仮IPアドレスに、
・パケットに付されている送信元ポート番号を索引ポート番号に、
・パケットに付されている宛先MACアドレスを内側NICMACアドレスに、
・パケットに付されている宛先IPアドレスを内側NICIPアドレスに書き換える。
そして、宛先ポート番号は変更しない。
アドレス置換部602はIPアドレス等の置換処理を行った後、当該TCP SYNパケットをTCP/IPプロトコルスタック205に送信して(S1106)、一連の処理を終了する(S1104)。
判定の結果、受信したパケットがTCP FINパケットであれば(S1109のYES)、受信パケット判定部601は当該TCP FINパケットを索引ポート番号と共にレコード削除準備処理部604に引き渡す。
レコード削除準備処理部604は、当該TCP FINパケットの索引ポート番号を削除予定リスト605に書き込む(S1104)。その後、レコード削除準備処理部604はTCP FINパケットと索引ポート番号をアドレス置換部602に引き渡す。
アドレス置換部602はIPアドレス等の置換処理を行った後、当該TCP FINパケットをTCP/IPプロトコルスタック205に送信して(S1106)、一連の処理を終了する(S1104)。
アドレス置換部602はIPアドレス等の置換処理を行った後、当該TCPデータパケットをTCP/IPプロトコルスタック205に送信して(S1106)、一連の処理を終了する(S1104)。
処理を開始すると(S1201)、受信パケット判定部701は、最初に外側NIC108が受信したパケットが、例えばARPパケットやICMPパケット等の、明らかに転送対象となる処理対象外パケットであるか否かを判定する(S1202)。
判定の結果、受信したパケットが、ARPパケットやICMPパケット等の、明らかに転送対象となる処理対象外パケットである場合は(S1202のYES)、受信パケット判定部701はそのパケットをそのまま内側NIC104へ転送して(S1203)、一連の処理を終了する(S1204)。
判定の結果、受信したパケットが、XPTCPゲートウェイ装置101に対して送信された、XPTCP処理対象外パケットである場合は(S1205のYES)、受信パケット判定部701はそのパケットをそのままTCP/IPプロトコルスタック205へ転送して(S1206)、一連の処理を終了する(S1204)。
検索の結果、受信したパケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス及び宛先ポート番号の組み合わせが、XPTCP処理対象マスタ208になければ(S1208のNO)、当該パケットはXPTCPゲートウェイ装置101の処理対象外なので、受信パケット判定部701はそのパケットをそのまま内側NIC104へ転送して(S1203)、一連の処理を終了する(S1204)。
受信パケット判定部701は、受信したパケットがTCP FINパケットであるか否かを判定する(S1209)。
判定の結果、受信したパケットがTCP FINパケットであれば(S1209のYES)、受信パケット判定部701は当該TCP FINパケットを索引ポート番号と共にレコード削除処理部703に引き渡す。
レコード削除処理部703は、当該TCP FINパケットの索引ポート番号が削除予定リスト605にあることを確認したら、内側NICアドレステーブル209の、当該索引ポート番号に係るレコードのタイマ用カウンタ値フィールドに、アドレステーブル更新カウンタ213の値を書き込む(S1210)。
その後、レコード削除処理部703はTCP FINパケットと索引ポート番号をアドレス置換部702に引き渡す。
・パケットに付されている送信元MACアドレスを第二仮MACアドレスに、
・パケットに付されている送信元IPアドレスを第二仮IPアドレスに、
・パケットに付されている送信元ポート番号を索引ポート番号に、
・パケットに付されている宛先MACアドレスを外側NICMACアドレスに、
・パケットに付されている宛先IPアドレスを外側NICIPアドレスに、
・パケットに付されている宛先ポート番号を動的ポート番号に
書き換える。
アドレス置換部702はIPアドレス等の置換処理を行った後、当該TCP FINパケットをTCP/IPプロトコルスタック205に送信して(S1206)、一連の処理を終了する(S1204)。
アドレス置換部702はIPアドレス等の置換処理を行った後、当該TCPデータパケットをTCP/IPプロトコルスタック205に送信して(S1206)、一連の処理を終了する(S1204)。
処理を開始すると(S1301)、送信パケット判定部は、最初にTCP/IPプロトコルスタック205から受け取ったパケットの種別と宛先IPアドレスを見る。
パケットの種別がICMPパケットやUDPパケットである場合、パケットの種別がARP要求パケットで且つ探索IPアドレスが仮IPMACリスト204に記されている第二仮IPアドレスでない場合、パケットの種別がTCPパケットであって且つ宛先IPアドレスが仮IPMACリスト204に記されている第二仮IPアドレスではない場合は(S1302のNO)、これらのパケットはXPTCPゲートウェイ装置101が処理していないパケットである。そこで、送信パケット判定部はそのパケットに対して何ら加工せず、そのまま外側NIC108を通じて送信して(S1303)、一連の処理を終了する(S1304)。
ARP要求パケットであって且つ探索IPアドレスが仮IPMACリスト204に記されている第二仮IPアドレスである場合(S1305のYES)は、このARP要求パケットはTCP/IPプロトコルスタック205が実在しない第二仮IPアドレスに対してパケットを送信しようとした結果、生成されたパケットである。このARP要求パケットは外側NIC108から送信させるのではなく、第二仮IPアドレスと同様に実在しないMACアドレスである第二仮MACアドレスで、ARP応答パケットを生成して返答しなければならない。そこで、送信パケット判定部は当該ARP要求パケットをARP応答処理部802に引き渡す。
ARP応答処理部802は、送信パケット判定部からARP要求パケットを受け取ると、仮IPMACリストを参照して、第二仮MACアドレスでARP応答パケットを生成して、TCP/IPプロトコルスタック205に返送して(S1306)、一連の処理を終了する(S1304)。
判定の結果、TCP/IPプロトコルスタック205から受け取ったパケットがTCP SYNパケットであれば(S1307のYES)、当該TCP SYNパケットはコネクションが新たに生成されたことを示すパケットである。その際、TCP/IPプロトコルスタック205がコネクションを生成する際に、送信元ポート番号として動的ポート番号を自動的に付与している。この動的ポート番号を、外側NICアドレステーブル210に記憶しておく必要がある。そこで、送信パケット判定部は当該TCP SYNパケットを動的ポート記録処理部803に引き渡す。
動的ポート記録処理部803は、TCP SYNパケットを受け取ると、先ずTCP SYNパケットの送信元ポート番号を取得する。次に、宛先ポート番号に記されている索引ポート番号で外側NICアドレステーブル210を検索し、特定したレコードの動的ポート番号フィールドに、先に取得したTCP SYNパケットの送信元ポート番号を書き込む(S1308)。
こうして、コネクションの開始を示すTCP SYNパケットに付されている動的ポート番号を記憶しておくことで、これ以降に当該コネクションを経由するパケットのIPアドレス等を正しく置換又は復元することができる。
アドレス復元部902は、先に動的ポート記録処理部803が特定した外側NICアドレステーブル210のレコードを参照して、TCP SYNパケットの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号を復元する(S1309)。そして、当該TCP SYNパケットを外側NIC108を通じて送信して(S1303)、一連の処理を終了する(S1304)。
アドレス復元部902は、TCPパケットの宛先ポート番号に付されている索引ポート番号で外側NICアドレステーブル210のレコードを検索してレコードを特定し、TCPパケットの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号を復元する(S1309)。そして、当該TCP SYNパケットを外側NIC108を通じて送信して(S1303)、一連の処理を終了する(S1304)。
処理を開始すると(S1401)、送信パケット判定部は、最初にTCP/IPプロトコルスタック205から受け取ったパケットの種別と宛先IPアドレスを見る。
パケットの種別がICMPパケットやARPパケットやUDPパケットである場合、パケットの種別がTCPパケットであって且つ宛先IPアドレスが仮IPMACリスト204に記されている第一仮IPアドレスではない場合は(S1402のNO)、これらのパケットはXPTCPゲートウェイ装置101が処理していないパケットである。そこで、送信パケット判定部はそのパケットに対して何ら加工せず、そのまま内側NIC104を通じて送信して(S1403)、一連の処理を終了する(S1404)。
アドレス復元部902は、TCPパケットの宛先ポート番号に付されている索引ポート番号で内側NICアドレステーブル209のレコードを検索してレコードを特定し、TCPパケットの送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号を復元する(S1405)。そして、当該TCP SYNパケットを内側NIC104を通じて送信して(S1403)、一連の処理を終了する(S1404)。
図15は、XPTCP処理部206のXPTCP処理の流れを示すフローチャートである。
XPTCP処理とは、TCP又はUDPパケットに対し、トランスポート層において所定の認証及び暗号化処理を施す処理である。XPTCP処理の基本的な技術内容は特許文献1に開示されているので、本実施形態では詳細には説明しない。その代わり、前述のアドレス変換処理部203及び後述するソケット処理部207で行っている、ソケットの処理に関係する内容を説明する。
ポリシー設定部1003は当該acceptイベントに係るソケットに関し、索引ポート番号にてアドレス変換処理部203に対してポリシーの問い合わせを行う。アドレス変換処理部203のポリシー回答部506は、内側NICアドレステーブル209を索引ポート番号で検索してレコードを特定する。そして、特定したレコードの送信元IPアドレス及びポート番号、宛先IPアドレス及びポート番号を用いてXPTCP処理対象マスタ208を検索し、レコードを特定し、当該レコードのレコード番号を取得したら、そのレコード番号をポリシー設定部1003へ回答する。ポリシー設定部1003は、得られたレコード番号と索引ポート番号を、XPTCPポリシーテーブル211に記録して、紐付ける。この時点で、暗号化処理部1005は索引ポート番号を手がかりに、XPTCP処理対象マスタ208のレコードを特定して、暗号化のポリシーを設定することができる(S1504)。そして、一連の処理を終了する(S1505)。
図16は、ソケット処理部207の初期動作の流れを示すフローチャートである。
処理を開始すると(S1601)、ソケット処理部207は予め定められたポート番号に対する、TCPサーバ機能を起動する(S1602)。この時、内側NIC104に向けてリクエストを受け付けるためのソケットが作成され(socket関数)、当該ソケットにはリクエストを受け付ける際のポート番号が定義される(bind関数)。そして、一連の処理を終了する(S1603)。
ソケット処理部207は、TCP/IPプロトコルスタック205からconnectイベントを受け取ると(S1301)、ソケットを通じて内側NIC104に対して接続許可を示すacceptイベントを発行する(S1702)。これはサーバとしての振る舞いである。次にソケット処理部207は、外側NIC108に向けて、接続を要求するconnect requestイベントを発行する(S1703)。これはクライアントとしての振る舞いである。そして、一連の処理を終了する(S1704)。
図18、図19及び図20は、XPTCPゲートウェイ装置101を通過するパケットの変化を示す概略図である。
XPTCP非対応PC103には、第一MACアドレスと第一IPアドレスが付与されている。
XPTCP対応サーバ107には、第二MACアドレスと第二IPアドレスが付与されている。
XPTCP非対応PC103からXPTCP対応サーバ107に向けてパケットが送信されると、送信パケットは内側NIC104を通じて、アドレス変換処理部203に到達する。アドレス変換処理部203は内側NICアドレステーブル209を参照して、アドレス変換処理を施す。すると、送信パケットはアドレス変換処理済み送信パケットに変化する。
アドレス変換処理済み送信パケットは、宛先IPアドレスが内側NIC104のIPアドレスである。したがって、TCP/IPプロトコルスタック205はアドレス変換処理済み送信パケットを受け入れ、パケットからMACヘッダ、IPヘッダ、TCPヘッダの順にヘッダを除去し、ペイロードを連結してストリームデータを復元する。復元されたストリームデータはソケットを通じてXPTCP処理部に到達する。XPTCP処理部はストリームデータに所定の暗号化処理を施す。そして、暗号化されたストリームデータは外側NIC108に向けて作成されたソケットに供給される。
暗号化及びアドレス変換処理済み受信パケットは、宛先IPアドレスが外側NIC108のIPアドレスである。したがって、TCP/IPプロトコルスタック205は暗号化及びアドレス変換処理済み受信パケットを受け入れ、パケットからMACヘッダ、IPヘッダ、TCPヘッダの順にヘッダを除去し、ペイロードを連結して暗号化ストリームデータを復元する。復元された暗号化ストリームデータはソケットを通じてXPTCP処理部に到達する。XPTCP処理部はストリームデータに所定の復号処理を施す。そして、復号されたストリームデータは外側NIC108に向けて作成されたソケットに供給される。
図21、図22及び図23は、XPTCPゲートウェイ装置101における、TCP接続確立シーケンスのタイムチャートである。図21はタイムチャート全体を示す俯瞰図であり、図22はタイムチャートのうち、前半の処理内容を示す詳細図であり、図23はタイムチャートのうち、後半の処理内容を示す詳細図である。
端末からTCP SYNパケットが送信されたことに呼応して、端末とXPTCPゲートウェイ装置101との間と、サーバとXPTCPゲートウェイ装置101都の間との夫々に、TCPコネクションが形成される迄の、XPTCPゲートウェイ装置101の時系列上の動作の推移を示す。
TCP SYNパケットは、内側NIC104を通じてアドレス変換処理部203に到達する。アドレス変換処理部203の内側NIC受信処理部501は、TCP SYNパケットの送信元及び宛先MACアドレス、IPアドレス及びポート番号を変換する(S2102)。なお、この時点で内側NICアドレステーブル209に新規レコードが追記録され、当該レコードは索引ポート番号で特定可能になる。
ソケット処理部207は、自身のサーバ機能によって、connectイベント(接続要求)に対するacceptイベント(接続許可)を、TCP/IPプロトコルスタック205に対して発行する(S2104)。
TCP ACK/SYNパケットは、内側NIC104を通じてXPTCP非対応PC103に到達する。XPTCP非対応PC103は、TCP ACK/SYNパケットを受けて、TCP ACKパケットで応答する(S2111)。
connect requestイベントはTCP/IPプロトコルスタック205に到達する。TCP/IPプロトコルスタック205はconnect requestイベントを受けて、ARP要求パケットを生成する(S2115)。
ARP要求パケットはアドレス変換処理部203に到達する。アドレス変換処理部203の外側NIC送信処理部503は、ARP要求パケットに対するARP応答パケットを生成し、TCP/IPプロトコルスタック205に返送する(S2116)。
TCP/IPプロトコルスタック205は、ARP応答パケットを受け取ると、ステップS2114におけるconnect requestイベントに対応するTCP SYNパケットを生成する準備が整ったので、TCP SYNパケットを生成する(S2117)。
ステップS2117にて生成されるTCP SYNパケットはアドレス変換処理部203に到達する。アドレス変換処理部203の外側NIC送信処理部503は、TCP SYNパケットの送信元及び宛先MACアドレス、IPアドレス及びポート番号を変換する(S2118)。なお、この時点で外側NICアドレステーブル210の該当レコードに、TCP SYNパケットの送信元ポート番号として、TCP/IPプロトコルスタック205によって自動的に付されている動的ポート番号が記録される。
TCP ACK/SYNパケットは、外側NIC108を通じてアドレス変換処理部203に到達する。アドレス変換処理部203の外側NIC受信処理部502は、TCP ACK/SYNパケットの送信元及び宛先MACアドレス、IPアドレス及びポート番号を変換する(S2120)。
アドレス変換処理を施されたTCP ACK/SYNパケットは、TCP/IPプロトコルスタック205に到達する。TCP/IPプロトコルスタック205は、TCP ACK/SYNパケットを受けて、TCP ACKパケットで応答する(S2121)。このとき、TCP/IPプロトコルスタック205はconnect応答イベントをクライアントプログラムであるソケット処理部207に通知する。
TCP ACKパケットは、外側NIC108を通じてXPTCP対応サーバ107に到達する。XPTCP対応サーバ107は、TCP ACKパケットの到着を以て、コネクションが確立したことを認識する(S2127)。これ以降、当該コネクションにはTCPデータパケットが送受信される。
図24は、XPTCPゲートウェイ装置101における、TCPデータ転送シーケンスのタイムチャートである。端末からTCPデータパケットが送信されたことに呼応して、端末とXPTCPゲートウェイ装置101との間と、サーバとXPTCPゲートウェイ装置101都の間との夫々に形成されたTCPコネクションにTCPデータパケットが通過する際の、XPTCPゲートウェイ装置101の時系列上の動作の推移を示す。
TCPデータパケットは、内側NIC104を通じてアドレス変換処理部203に到達する。アドレス変換処理部203の内側NIC受信処理部501は、TCPデータパケットの送信元及び宛先MACアドレス、IPアドレス及びポート番号を変換する(S2402)。
ストリームデータはXPTCP処理部206によって暗号化処理が施され、外側NIC108のソケットに転送される(S2404)。
アドレス復元処理を施されたTCPデータパケットは、外側NIC108を通じてXPTCP対応サーバ107に到達する(S2407)。XPTCP対応サーバ107は、TCPデータパケットを受けて、所定の処理を行った後、返信データとしてのTCPデータパケットを、XPTCP非対応PC103に向けて送信する(S2408)。
アドレス変換処理を施されたTCPデータパケットは、TCP/IPプロトコルスタック205に到達する。TCP/IPプロトコルスタック205は、TCPデータパケットのヘッダを除去して、TCPデータパケットペイロードを連結し、ストリームデータに復元する(S2410)。
ストリームデータはXPTCP処理部206によって復号処理が施され、内側NIC104のソケットに転送される(S2411)。
TCPデータパケットはアドレス変換処理部203に到達する。アドレス変換処理部203の内側NIC送信処理部504は、TCPデータパケットの送信元及び宛先MACアドレス、IPアドレス及びポート番号を変換する(S2413)。
アドレス復元処理を施されたTCPデータパケットは、内側NIC104を通じてXPTCP非対応PC103に到達する(S2414)。
図25、図26及び図27は、XPTCPゲートウェイ装置101における、TCP切断シーケンスのタイムチャートである。図25はタイムチャート全体を示す俯瞰図であり、図26はタイムチャートのうち、前半の処理内容を示す詳細図であり、図27はタイムチャートのうち、後半の処理内容を示す詳細図である。
端末からTCP FINパケットが送信されたことに呼応して、端末とXPTCPゲートウェイ装置101との間と、サーバとXPTCPゲートウェイ装置101との間の夫々に形成されていたTCPコネクションを終了(close:クローズ)される迄の、XPTCPゲートウェイ装置101の時系列上の動作の推移を示す。
TCP FINパケットは、内側NIC104を通じてアドレス変換処理部203に到達する。アドレス変換処理部203の内側NIC受信処理部501は、TCP FINパケットの送信元及び宛先MACアドレス、IPアドレス及びポート番号を変換する(S2102)。なお、この時点で削除予定リスト605に索引ポート番号が追記録される。
close requestイベントはTCP/IPプロトコルスタック205に到達する。TCP/IPプロトコルスタック205はclose requestイベントを受けて、TCP FINパケットを生成する(S2505)。
ステップS2505にて生成されるTCP FINパケットはアドレス変換処理部203に到達する。アドレス変換処理部203の外側NIC送信処理部503は、TCP FINパケットの送信元及び宛先MACアドレス、IPアドレス及びポート番号を変換する(S2506)。
TCP ACK/FINパケットは、外側NIC108を通じてアドレス変換処理部203に到達する。アドレス変換処理部203の外側NIC受信処理部502は、TCP ACK/FINパケットの送信元及び宛先MACアドレス、IPアドレス及びポート番号を変換する(S2509)。
TCP ACKパケットは、外側NIC108を通じてXPTCP対応サーバ107に到達する。XPTCP対応サーバ107は、TCP ACKパケットを受けて、当該パケットに係るコネクションの切断が完了した(クローズされた)ことを認識する(S2513)。
TCP ACK/FINパケットは、内側NIC104を通じてXPTCP非対応PC103に到達する。XPTCP非対応PC103は、TCP ACK/FINパケットを受けて、TCP ACKパケットで応答する(S2517)。
XPTCP非対応PC102から受信したパケットP1402は、内側NIC104及び外側NIC108のIPアドレスとは無関係である。このため、パケットP1402のままでは、TCP/IPプロトコルスタック205が所定のパケットの処理を行うことができない。そこで、一旦内側NICアドレステーブル209のレコードに、パケットP1402に付されている送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号をメモしておく。更に、後で書き戻すために索引となるポート番号を連番で付与する。そして、TCP/IPプロトコルスタック205がパケットの受信処理ができるようにするために、パケットP1402を「第一仮IPアドレスを有する架空のホストから、内側NICのIPアドレスに向けて送信されたパケット」とする、パケットP1405に書き換える。
本実施形態に係るXPTCPゲートウェイ装置101は、以下のような応用例が考えられる。
(1)XPTCPゲートウェイ装置101は、容易にサーバ機能を実装することができる。例えば、XPTCP処理対象マスタを編集するためのユーザインターフェースを提供するためにwebサーバプログラムを稼働させて、予め特定のポート番号に対応しておく。一例として、10030というポート番号を用いるとする。
XPTCP処理部206は、宛先ポート番号がこの10030であった場合、暗号化処理を施すことなく、そのままwebサーバプログラムに引き渡す。このようにXPTCP処理部206を構成することで、XPTCPゲートウェイ装置101は容易にサーバ機能を実装できる。
外側NICアドレステーブル210の、宛先IPアドレスフィールドを書き換えると、端末が意図しているIPアドレスとは別のIPアドレスのサーバと通信することができる。
図28は、XPTCPゲートウェイ装置101において、送信するパケットの宛先IPアドレスを書き換える応用形態を説明する概略図である。
端末2801には「A」というIPアドレスが付与されている。今、端末2801は「B」というIPアドレスが付与されているサーバ2802に接続しようと、パケットP2803を送信したとする。パケットP2803の送信元IPアドレスは「A」であり、宛先IPアドレスは「B」である。
XPTCPゲートウェイ装置101の内側NICアドレステーブル209は、「A」と「B」という対応関係を忠実に再現できる必要があるので、そのままのIPアドレスが記録される。
このように、XPTCPゲートウェイ装置101は、外側NICアドレステーブル210に登録されている宛先IPアドレスを書き換えることで、宛先IPアドレスを端末2801が把握していない先で変換することができる。この動作を応用すると、XPTCPゲートウェイ装置101を二台以上数珠繋ぎに構成することで、容易にVPN(Vitual Private Network)を構築できる。
外側NICアドレステーブル210の、送信元IPアドレスフィールドを書き換えると、サーバの側に存在する悪意ある第三者から、端末2801の本当のIPアドレスを隠蔽することができる。
図29は、XPTCPゲートウェイ装置101において、送信するパケットの送信元IPアドレスを書き換える応用形態を説明する概略図である。
端末2901には「A」というIPアドレスが付与されている。今、端末2901は「B」というIPアドレスが付与されているサーバ2902に接続しようと、パケットP2903を送信したとする。パケットP2903の送信元IPアドレスは「A」であり、宛先IPアドレスは「B」である。
XPTCPゲートウェイ装置101の内側NICアドレステーブル209は、「A」と「B」という対応関係を忠実に再現できる必要があるので、そのままのIPアドレスが記録される。
このように、XPTCPゲートウェイ装置101は、外側NICアドレステーブル210に登録されている送信元IPアドレスを書き換えることで、送信元IPアドレスを悪意ある第三者から隠蔽することができる。
例えば、周知のTELNET(TCPポート23番)の場合は、ストリームデータを全て暗号化する必要がある。
しかし、例えば周知のSMTP(Simple Mail Transfer Protocol:TCPポート25番)の場合は、送信したメールがSMTPサーバを転々と転送される可能性がある。その際、全てのSMTPサーバがXPTCPの認証及び暗号化処理に対応することは困難である。そこで、送信元の端末と、最終的に受信する側のホストのみ認証及び暗号化処理に対応させ、暗号化の対象はSMTPメッセージの本文のみとする。周知のように、SMTPメッセージは一行の空改行をセパレータとしてヘッダと本文に分けられ、ヘッダにはメールがSMTPサーバ等のホストを経由する際に記録される情報(Received:ヘッダ)が追記される。
本実施形態の暗号化処理部1005も、SMTPやHTTP等、ストリームデータがヘッダと本文とに分離できるプロトコルの場合等、プロトコルに応じて暗号化の対象をストリームデータ全部ではなく本文のみとする、といった処理が含まれることが好ましい。
既存のネットワークOSに標準搭載されているTCP/IPプロトコルスタック205の機能を最大限有効に活用しつつ、必要最小限のプログラムを追加することでXPTCPゲートウェイ装置101を実現するために、TCP/IPプロトコルスタック205を「騙す」処理を施す。XPTCPゲートウェイ装置101に割り当てられているIPアドレスとは無関係である筈のパケットをTCP/IPプロトコルスタック205が処理できるようにするために、予めパケットに付されている送信元MACアドレス、送信元IPアドレス、送信元ポート番号、宛先MACアドレス、宛先IPアドレス及び宛先ポート番号を内側NICアドレステーブル209及び外側NICアドレステーブル210にメモしておく。その上で、受信したパケットに付されている送信元MACアドレス及び送信元IPアドレスは偽のMACアドレス及び偽のIPアドレスに、宛先MACアドレス及び宛先IPアドレスはXPTCPゲートウェイ装置101に割り当てられているIPアドレス及びMACアドレスに書き換えてから、TCP/IPプロトコルスタック205に与える。
Claims (7)
- 第一のNICと、
第二のNICと、
前記第一のNICおよび前記第二のNICとの間でTCP/IP通信処理を行うTCP/IPプロトコルスタックと、
前記第一のNICから受信して前記TCP/IPプロトコルスタックに送信する受信パケットに付されているアドレス、および前記TCP/IPプロトコルスタックから受信して前記第二のNICに送信する送信パケットに付されているアドレスを変換するアドレス変換処理部と、を有し、
前記アドレス変換処理部は、前記第一のNICから受信した前記受信パケットに付されている送信元MACアドレスを第一仮MACアドレスに変換し、送信元IPアドレスを第一仮IPアドレスに変換し、宛先MACアドレスを前記第一のNICに付されている第一のNICMACアドレスに変換し、および宛先IPアドレスを前記第一のNICに付されている第一のNICIPアドレスに変換する変換処理と、前記TCP/IPプロトコルスタックから受信した前記送信パケットに付されている送信元MACアドレス、送信元IPアドレス、宛先MACアドレスおよび宛先IPアドレスを、送信元および宛先として設定するアドレスに変換する変換処理を行なうことを特徴とするネットワークゲートウェイ装置。 - 更に、前記TCP/IPプロトコルスタックから送られたデータのペイロード部分に所定の処理を施して前記TCP/IPプロトコルスタックに返送する拡張TCP処理部を有し、
前記拡張TCP処理部において前記所定の処理が施された前記送信パケットを、前記TCP/IPプロトコルスタックから前記アドレス変換処理部に送信することを特徴とする請求項1に記載のネットワークゲートウェイ装置。 - 更に、前記アドレス変換処理部は、前記第一のNICから受信した前記受信パケットが前記拡張TCP処理部における前記所定の処理対象であるか否かを判定する受信パケット判定部を有し、
前記アドレス変換処理部は、前記受信パケット判定部により前記受信パケットが前記処理対象であると判定された場合に、前記受信パケットに付されているアドレスの前記変換処理を行なうことを特徴とする請求項2に記載のネットワークゲートウェイ装置。 - 前記TCP/IPプロトコルスタックから受信した前記送信パケットには、送信元MACアドレスとして前記第二のNICに付されている第二のNICMACアドレスが付され、送信元IPアドレスとして前記第二のNICに付されている第二のNICIPアドレスが付され、宛先MACアドレスとして第二仮MACアドレスが付され、および宛先IPアドレスとして第二仮IPアドレスが付されていることを特徴とする請求項1から請求項3のいずれかに記載のネットワークゲートウェイ装置。
- 前記送信元および宛先として設定するアドレスに変換する変換処理は、前記TCP/IPプロトコルスタックから受信した前記送信パケットに付されている送信元MACアドレス、送信元IPアドレス、宛先MACアドレスおよび宛先IPアドレスを、前記第一のNICから受信した前記受信パケットに付されていた前記送信元MACアドレス、前記送信元IPアドレス、前記宛先MACアドレスおよび前記宛先IPアドレスに書き戻す処理であることを特徴とする請求項1から請求項4のいずれかに記載のネットワークゲートウェイ装置。
- 前記送信元および宛先として設定するアドレスに変換する変換処理は、前記TCP/IPプロトコルスタックから受信した前記送信パケットに付されている送信元MACアドレスおよび送信元IPアドレスを、前記第一のNICから受信した前記受信パケットに付されていた前記送信元MACアドレスおよび前記送信元IPアドレスに書き戻すとともに、
前記TCP/IPプロトコルスタックから受信した前記送信パケットに付されている宛先MACアドレスおよび宛先IPアドレスを、宛先として新たに設定したMACアドレスおよびIPアドレスに変換する処理であることを特徴とする請求項1から請求項4のいずれかに記載のネットワークゲートウェイ装置。 - 前記送信元および宛先として設定するアドレスに変換する変換処理は、前記TCP/IPプロトコルスタックから受信した前記送信パケットに付されている宛先MACアドレスおよび宛先IPアドレスを、前記第一のNICから受信した前記受信パケットに付されていた前記宛先MACアドレスおよび前記宛先IPアドレスに書き戻すとともに、
前記TCP/IPプロトコルスタックから受信した前記送信パケットに付されている送信元MACアドレスおよび送信元IPアドレスを、送信元として新たに設定したMACアドレスおよびIPアドレスに変換する処理であることを特徴とする請求項1から請求項4のいずれかに記載のネットワークゲートウェイ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011220366A JP5750352B2 (ja) | 2011-10-04 | 2011-10-04 | ネットワークゲートウェイ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011220366A JP5750352B2 (ja) | 2011-10-04 | 2011-10-04 | ネットワークゲートウェイ装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011180215A Division JP4843116B1 (ja) | 2011-08-22 | 2011-08-22 | ネットワークゲートウェイ装置 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2013046406A JP2013046406A (ja) | 2013-03-04 |
JP2013046406A5 JP2013046406A5 (ja) | 2014-10-02 |
JP5750352B2 true JP5750352B2 (ja) | 2015-07-22 |
Family
ID=48009919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011220366A Active JP5750352B2 (ja) | 2011-10-04 | 2011-10-04 | ネットワークゲートウェイ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5750352B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150235052A1 (en) | 2014-02-17 | 2015-08-20 | Samsung Electronics Co., Ltd. | Electronic device and method for protecting users privacy |
WO2018229931A1 (ja) * | 2017-06-15 | 2018-12-20 | 三菱電機株式会社 | ゲートウェイ装置及びネットワークシステム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100405113B1 (ko) * | 2001-06-22 | 2003-11-10 | 주식회사 엑스큐어넷 | 네트워크상에서의 투명한 게이트웨이 또는 투명한 프록시구현 방법 |
US7249191B1 (en) * | 2002-09-20 | 2007-07-24 | Blue Coat Systems, Inc. | Transparent bridge that terminates TCP connections |
US7756956B2 (en) * | 2002-11-14 | 2010-07-13 | Canon Development Americas, Inc. | Mimic support address resolution |
US20100077203A1 (en) * | 2006-07-13 | 2010-03-25 | Keiko Ogawa | Relay device |
-
2011
- 2011-10-04 JP JP2011220366A patent/JP5750352B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2013046406A (ja) | 2013-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4843116B1 (ja) | ネットワークゲートウェイ装置 | |
CN114866521B (zh) | 会议服务器 | |
US7505473B2 (en) | Transmission of broadcast packets in secure communication connections between computers | |
US9154512B2 (en) | Transparently proxying transport protocol connections using an external server | |
CN107077432B (zh) | Https请求充实 | |
EP2400693B1 (en) | Routing and service performance management in an application acceleration environment | |
JP4802295B1 (ja) | ネットワークシステム及び仮想プライベート接続形成方法 | |
JP4489008B2 (ja) | 通信装置、通信方法および通信プログラム | |
JPH11167537A (ja) | ファイアウォールサービス提供方法 | |
WO2021073555A1 (zh) | 业务服务提供方法及***、远端加速网关 | |
JP5750352B2 (ja) | ネットワークゲートウェイ装置 | |
JP3935823B2 (ja) | Httpセッション・トンネリング・システム、その方法、及びそのプログラム | |
CN102546307A (zh) | 基于dhcp侦听实现代理arp功能的方法和*** | |
JP2005530404A (ja) | ネットワークを経て通信するための改善セキュリティ方法及び装置 | |
JP2005210352A (ja) | Ipアドレス変換装置及び変換方法 | |
JP2011109186A (ja) | ネットワーク通信方法及びアクセス管理方法とパケット中継装置 | |
JP4279847B2 (ja) | 通信システム、通信方法、ならびに、プログラム | |
JP6075871B2 (ja) | ネットワークシステム、通信制御方法、通信制御装置及び通信制御プログラム | |
JP2012222461A (ja) | ネットワークシステム | |
JP7178523B2 (ja) | 中継装置及びローカルブレイクアウトの転送方法 | |
CN117439815B (zh) | 一种基于反向透明桥接的内网穿透***及方法 | |
KR102263755B1 (ko) | 엔드포인트의 트래픽에 대한 포워딩 시스템 및 방법 | |
WO2016013118A1 (ja) | 中継装置、ネットワークシステム、及びネットワークシステムの制御方法 | |
JP3788802B2 (ja) | ネットワーク間セキュア通信方法、パケットセキュア処理装置、その処理方法、プログラム、その記録媒体、アドレス変換装置 | |
JP2006033350A (ja) | 代理セキュアルータ装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20131029 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20131029 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131126 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140818 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140818 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150409 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150421 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150518 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5750352 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |