• ベストアンサー

IPsec over TCP/UDPについて

お世話になります。 IPsec over TCP/UDPというのがありますが、 どういう時にTCP、あるいはUDPになるのか 理解ができません。 どなたかご存知の方、ご教授頂けますでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.2

> しかし、なぜNAT環境だとUDPなのか理解が難しいですね。 正確を期すと、厳密な意味での"NAT (Network Address Translation)" であれば、ESP over IPでも ESP over UDP でも問題なく通信できますが、最近よく使われる"NAPT (Network Address and Port Translation)" では、ESP over UDP (または ESP over TCP)である必要があります。 なぜか。 NAPTの動作原理を理解されていればわかると思いますが、NAPTは通信プロトコルとしてTCP/IPまたはUDP/IPを使うことが前提になっている技術です。 ESP over IPは、NAPTではまともに扱えないので何らかの例外処置を執る必要が出てくるのです。 なぜESP over TCPではなくてESP over UDPか、という話だと、この短いスペースで説明できるほど理解が深くないので説明はパスさせてください。 (一応ヒント:TCP over TCP はよくない、という話があります。これを調べてみてください。根っこは同じはずです)

ringo105
質問者

お礼

Toshi0230様 お忙しいところ、ご回答頂きありがとうございます。 Toshi0230様の説明から得たヒントをもとに、色々調べてみようと 思います。 どうもありがとうございました。

その他の回答 (1)

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.1

何も考えずに"IPSec"というと、ESP over IPになったりしてしまうのですが、「NAT(NAPT)透過型IPSec」なるものだと、ESP over UDPなどの方式でNAT(NAPT)を超えてIPSecが使えるようになります。 もちろん、「NAT透過型IPSec」を使う場合は送受信側双方が対応していることが前提になります。 # 非常にぶっきらぼうな説明なのはご容赦

ringo105
質問者

お礼

Toshi0230様 ご回答ありがとうございます。 簡単にいうとそういうことになるのですね。 クライアントの環境がNAT環境などの場合は、UDPを使うのですね。 しかし、なぜNAT環境だとUDPなのか理解が難しいですね。 すみません。

関連するQ&A

  • UDPとTCPについて

    ファイアーウォールのソフト(ルータなど)の設定をしようとすると、UDPとTCPを選ぶ所が出てきたりします。 UDPとTCPについては調べてみたりしたのですが、結局の所、設定ではどちらを選択するのか私では迷う事があります^_^; 迷った場合、とりあえずはTCPを選んでいれば問題ないでしょうか? 場合によっては絶対、UDPを選んばないと、「まずいよ!」って事もあるでしょうか? ご存知のかたいらっしゃいましたら、どうぞよろしくお願い致します

  • POP3は、TCPそれともUDPのどちらのでしょうか?

    シスアドの勉強をしていて、どちらが正解なのかわからないので、技術のプロの方に質問をさせて頂きます。 POP3の説明を読んでいると、本によってUDPやTCPなど、表現がまちまちでどちらが正解なのか困っております。 また、ホームページで検索すると、POP3にはUDP・TCPの両方があるみたいな、書き方をしてるとこともありました。 結局、POP3は、UDPとTCPでは、どちらが一般的な正解なのでしょうか?

  • cp コマンドは TCP? UDP?

    お世話になっております。 タイトル通りのご質問です。 cpコマンドのトランスポート層って、TCPなのでしょうか?、それともUDPなのでしょうか?たとえば、FTPコマンドはTCPですよね。 ふと気になったものですが、よろしかったら教えてください。

  • TCP及びUDP通信について

    TCP及びUDP通信について 現在WinSockAPIを用いた通信を行うプログラムを組んでいます。 しかしながらネットワークに関しては初心者で、わからない点がいくつか出てきたので質問させて頂きます。 -------------------------------------------------- 1.TCPで双方向通信を行う場合、サーバ側は指定したポートにbind→listenし、接続を待ち受けます。 クライアント側はサーバのIPを指定し、接続確立後にポートはOSが自動で割り振ると聞きました。 つまり、クライアント側がポートを開放せずに通信が出来るのは、OSなどが自動でポートを割り当て、割り当てたポートに到着したデータを該当アプリケーションに渡すからでしょうか? ポート関連は全てルータが管理しているものだと思っていたのですが、OSがポートを割り当てるという動作がよく理解できません。 -------------------------------------------------- 2.UDPで双方向通信を行う場合、端末A・端末Bともに指定したポートにbindする必要があると聞きました。 つまり、UDPで双方向通信を行う場合、端末A・端末Bの双方でポートを開放する必要があるということでしょうか? -------------------------------------------------- 是非ともご教授ください。

  • winsockを使ったTCP及びUDP通信について

    今回winsockを使った通信プログラムを組む事になったのですが、わからない点が多々ありましたので、どなたかご教授頂けると大変ありがたいです。 1. TCP通信において、送信側が"Hoge" "Fuga"と2回sendした際、受信側でrecvすると"Ho" "geFu" "ga"と3回受信する可能性があると認識しているのですが、これは正しいでしょうか? (到着する順序は保証されるが、recvする際に送信側がどのようにsendしたかは考慮されない) 2. UDP通信においては、上記のような現象は起きないと認識しているのですが、これは正しいでしょうか? (UDP通信では、2回sendすれば2回以上はrecvしない。パケットの破棄はあっても、分割はない) 3. もしUDP通信でも上記のような現象が起きる場合、到着順序の保証がされないという観点から、recvした際に"Ho" "ga" "geFu"と受信する事はあり得るのでしょうか? 4. 2が正しい前提での話です。UDP通信では、MTUを超えた場合、自動でパケットが分割されると聞きました。プログラムを組む際、これは意識しないといけないのでしょうか? (MTUが1500Byteの場合、UDPで2000Byteをsendすると、recvで1500,500と2回受信する?) 以上の4点です。 どなたかご存知の方いらっしゃいましたら、是非ご教授ください。

  • UDPポート110(POP3)の使われ方??

    ファイアウォールの設定をやっているのですがパケットフィルタリングの設定でPOP3を許可したところポートスキャンを行うとTCPだけではなくUDPも開いていることがわかりました。 私の認識ではPOP3はTCPだけを使っていると思っていたのですがUDPも何かに使用しているのでしょうか?ご存知の方がいたら使用目的等をご教授願えないでしょうか? ちなみに他のポートは使用されているプロトコルのみしかポートは開きません。例えばHTTPやHTTPS、SMTPなどを許可するとそれぞれTCPだけしか開いてませんでした。 設定を行っているのはFortigateです。 よろしくお願いします。

  • RTX1200 L2TP/IPSec 見えない

    自宅のPCから、会社にある YAMAHA のルータ RTX1200 に L2TP/IPsec でVPN接続しようとしているのですが、 RTX1200のルータまでは接続できて、 RTX1200 へのpingは通るのですが、 その先のPCにpingが通らず、またtracert コマンドで確認しても RTX1200まではいくのですが、その先はタイムアウトします。 自宅PC ( IP : 192.168.0.51/24) (Win7 の標準のネットワーク接続でVPN設定)    |    |  [ルータ:NEC Aterm]    |    | ( INTERNET )    |    | WAN ( IP : DDNS )  [ルータ:NTT NXSM-4BRU-2]  udp 500,1701,4500 転送。 192.168.1.254    | LAN ( IP : 192.168.1.1/24)    |    | LAN2 ( IP : 192.168.1.254/24)  [ルータ:YAMAHA RTX1200]    | LAN1 ( IP : 192.168.11.1/24 )    | 会社PC ( IP : 192.168.11.100/24 ) RTX1200 CONFIG ファーム REV.10.1.48 ※テストのためフィルタを解除して全通し --------------------------------------------- ip route default gateway 192.168.1.1 ip route 192.168.1.0/24 gateway dhcp lan2 ip route 192.168.11.0/24 gateway dhcp lan1 tunnel 11 ip lan1 address 192.168.11.1/24 ip lan1 ospf area backbone ip lan1 proxyarp on ip lan1 secure filter in 1099 ip lan1 secure filter out 1099 ip lan2 address 192.168.1.254/24 ip lan2 rip send on version 2 ip lan2 ospf area backbone ip lan2 secure filter in 1099 ip lan2 secure filter out 1099 ip lan2 nat descriptor 1 ip lan2 proxyarp on pp disable all pp select anonymous pp bind tunnel11 pp auth request mschap-v2 pp auth username [user-id] [password] ppp ipcp ipaddress on ppp ipcp msext on ip pp remote address pool 192.168.11.51-192.168.11.59 ip pp mtu 1258 pp enable anonymous no tunnel enable all tunnel select 11 tunnel encapsulation l2tp ipsec tunnel 111 ipsec sa policy 111 11 esp aes-cbc sha-hmac ipsec ike keepalive use 11 off ipsec ike local address 11 192.168.11.1 ipsec ike nat-traversal 11 on ipsec ike pre-shared-key 11 text [公開キー] ipsec ike remote address 11 any l2tp tunnel disconnect time off l2tp keepalive use on 10 3 l2tp keepalive log on l2tp syslog on ip tunnel tcp mss limit auto tunnel enable 11 ip filter 1000 reject * * udp,tcp 135 * ip filter 1001 reject * * udp,tcp * 135 ip filter 1002 reject * * udp,tcp netbios_ns * ip filter 1003 reject * * udp,tcp * netbios_ns ip filter 1004 reject * * udp,tcp netbios_dgm * ip filter 1005 reject * * udp,tcp * netbios_dgm ip filter 1006 reject * * udp,tcp netbios_ssn * ip filter 1007 reject * * udp,tcp * netbios_ssn ip filter 1008 reject * * udp,tcp 445 * ip filter 1009 reject * * udp,tcp * 445 ip filter 1011 reject 192.168.11.0/24 * * * * ip filter 1012 reject * 192.168.11.0/24 * * * ip filter 1021 reject * * tcp * telnet ip filter 1022 reject * * udp * tftp ip filter 1030 pass * * icmp * * ip filter 1031 pass * * established * * ip filter 1032 pass * * tcp * ident ip filter 1033 pass * * tcp ftpdata * ip filter 1034 pass * * tcp,udp * domain ip filter 1035 pass * * udp domain * ip filter 1036 pass * * udp * ntp ip filter 1037 pass * * udp ntp * ip filter 1071 pass * * udp * 500 ip filter 1072 pass * * esp * * ip filter 1073 pass * * udp * 500 ip filter 1074 pass * * esp * * ip filter 1075 pass * * udp * 4500 ip filter 1076 pass * * udp * 4500 ip filter 1077 pass * * udp * 1701 ip filter 1078 pass * * udp * 1701 ip filter 1099 pass * * * * * ip filter 5000 reject * * * * * ip filter dynamic 10080 * * ftp ip filter dynamic 10081 * * domain ip filter dynamic 10082 * * www ip filter dynamic 10083 * * smtp ip filter dynamic 10084 * * pop3 ip filter dynamic 10098 * * tcp ip filter dynamic 10099 * * udp nat descriptor type 1 masquerade nat descriptor address outer 1 primary nat descriptor address inner 1 any nat descriptor masquerade static 1 1 192.168.11.1 esp nat descriptor masquerade static 1 2 192.168.11.1 udp 500 nat descriptor masquerade static 1 3 192.168.11.1 udp 1701 nat descriptor masquerade static 1 4 192.168.11.1 udp 4500 rip use on ospf area backbone ipsec auto refresh on ipsec transport 1 111 udp 1701 syslog notice on syslog debug on tftp host any dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.11.100-192.168.11.179/24 dns server 192.168.1.1 l2tp service on

  • TCP、UDPソケット

    あるC++言語の教科書に、TCPやUDPのクアリアントプログラム例が書いてありました。この例では、最初に、sock=0となっており、一つの接続しかできません。 複数の接続を行う場合、例えば、どのようにすると、良いのか御教授をお願いいたします。 #pragma comment(lib, "wsock32.lib") // #include <winsock.h> // #include "Main.h" //--------------------------------------------------------------------------- #pragma resource "*.dfm" TMainForm *MainForm; //--------------------------------------------------------------------------- __fastcall TMainForm::TMainForm(TComponent* Owner) : TForm(Owner) { sock = 0 ; } //---------------------------------------------------------------------------

  • UDPについて

    こんばんは。 UDPについてうまく理解できず困っております。 お分かりになる方がいらっしゃいましたら、教えて下さい。 わからないのはUDPでのクライアント-サーバ間での通信方法です。 例えばこちらからあるコマンドを投げたとして、向こうから結果が返ってくるとします。 UDPなのでこちらからはじゃんじゃん投げます。 サーバからもじゃんじゃん返ってきます。 でも投げるコマンドによって処理時間が違うので 返ってくるデータの順番がバラバラになってしまう可能性があると思うのです。 TCPだとコネクションはって1対1というイメージがあるのですが、 UDPはやりたい放題(?)というイメージがあります。 順番がバラバラになってしまうのはもうどうしようもないことなのでしょうか? それともプログラミングのテクニック(?)で解消できるものなのでしょうか? 1コマンド1Threadにして管理すれば良いのでしょうか? (こうすると、このコマンドに対しての結果はこれって識別できますよね???) 一人ではどうにも前に進めないので、ご指導宜しくお願いします。 意味不明な部分は補足させていただきます。

  • servicesの個別TCP/UDPの内容(役割)について

    こんばんは。今、セキュリティオ設定をしているのですが、servicesの個別TCP/UDPの内容(役割)を知りたいのですが、内容(働きや役割)が日本語でかかれているサイトを探しています。 いろいろ見たのですが、見つかりませんでした。 どれが閉じていいものか分からなくて困っています。 ご存知の方、見えましたら教えて下さい。よろしくお願いします。