SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
TCP connectionの保存と復元

   筑波大学ソフトウェア研究室
    三戸健一 (@mittyorz)

                 2012年9月22日
             Kernel/VM探検隊@つくば
自己紹介
   筑波大学情報科学類4年生
   ソフトウェア研究室
   好きな言語はPerl
       最近全然触れていない
   @go_vmさんのVMRPCを使って面白いこ
    としよう
   普段は環境構築とかメンテナンスとかばか
    りでhacker的なことはあまりしていません
                         2
TCPソケットの状態を保存しよう
   理想:
       TCPコネクションを維持したままプロセスの停止、
        状態の保存、別の環境で再開、が簡単にできると
        うれしい
   現実:
       送受信キューとかシーケンス番号などの情報を読
        み取ってdumpしないといけない
       close()するとFINが送信されてしまう

    TCPスタックをちゃんと理解して自力でやるの
    は大変そう…。なんとかインチキできんのか

                               3
従来の解決法 仮想計算機を使う
   難しいことを考えないでVMに載せてしまう
       ライブマイグレーション!

   利点
       ノウハウが十二分に存在している
       コードに手を入れる必要は無い
   欠点
       仮想計算機を稼働させるのはそれなりに大変
       OSごと環境を移動させるので、コストが高い
                            4
TCP repair mode
   先生「3.5 kernelなら簡単らしいよ」
   私「」

   Linux Kernel 3.5で新しくマージされた機能
   TCP_REPAIRというソケットオプションが新設
    された
   Repairモードに入ると、副作用無しに様々な
    操作が行えるようになる
   Software Design 2012年9月号
       「続・Linux 3.5の新機能」

                                   5
Repair modeで出来ること
   connect()を用いて、実際には接続してい
    なくてもESTABLISHEDにする
   ポートの衝突を無視してbind()でLISTEN
   FIN_WAIT, TIME_WAITを経由せずに
    close()
       FINパケットは送信されない
   TCPシーケンス番号、送受信キューなどソ
    ケットの再開に必要な情報の取得

                                6
ソケットの保存
1.       iptables で新規パケットをブロック
         iptables -D INPUT -s 192.168.10.222/32 -d
          192.168.10.102/32 -p tcp -m tcp --sport 58085 --dport
          12345 -j DROP

2.       repair modeに移行
         setsockopt(sockfd, SOL_TCP, TCP_REPAIR, …);
3.       接続情報の取得/パケットキューの読取
4.       close()


                                                                  7
ソケットの復元
1.   sock = socket(…);
2.   repair modeに移行
3.   シーケンス番号の復元
4.   bind()
5.   connect()
6.   TCPオプションの復元
7.   キューの復元
8.   repair modeを終了
9.   通信のブロックを解除
                         8
実装例
   間に合いませんでした



    ……だけだと哀しいので




                  9
crtools
   an utility to checkpoint/restore a process
    tree
       http://criu.org/CR_tools
       “CRIU is sub-project of OpenVZ”
   TCPセッションだけでなく、プロセス自体を
    freeze/dump to file/restore出来る
   有名なOSS projectでcheckpoint/restore出
    来るか試している模様
       http://criu.org/What_software_is_supported

                                                     10
crtoolsのbuild
   Ver 0.2が二日前(09/20)に出てますが、
    試したのは0.1
   Ubuntu 12.10 beta x86_64

   $ git clone git://git.criu.org/crtools.git
   $ make
       色々warningとかerrorとか出るが、2,3カ所適
        当に直すとbuild出来た

                                                 11
保存、復元の対象
   echo-server-nofork-fdopen.c
       サーバ: Ubuntu 12.10 (192.168.10.102)
       クライアント: Debian 6.0 (192.168.10.222)
   単純なechoサーバ
       selectもforkもしないので、一つのconnect

   mitty@quantal:~/tcp-repair$ gcc echo-server-nofork-fdopen.c
   mitty@quantal:~/tcp-repair$ ./a.out 12345
   mitty@quantal:~$ sudo lsof -i | grep 12345


                                                                  12
connect to server
   telnetコマンドでechoサーバへ接続
   debian$ telnet 192.168.10.102 12345
   mitty@quantal:~$ sudo lsof -i | grep 12345



   ファイルディスクリプタ
       3でaccept
       4 で clientへwrite
       5 = dup(4) を用いてclientからread




                                                 13
dump tcp connection to files
   mitty@quantal:~$ sudo ./crtools/crtools dump --tcp-
    established -t 12327


   mitty@quantal:~$ ls -l *.img




   エラーは出ているが、dump出来た

   mitty@quantal:~$ sudo iptables-save | grep 12345




                                                          14
restore from files
   mitty@quantal:~$ sudo ./crtools/crtools restore --tcp-
    established -t 12327
   mitty@quantal:~$ sudo lsof -i | grep 12345




   復元された
   iptablesの設定はdeleteしてくれない
       mitty@quantal:~$ sudo iptables -D INPUT -s
        192.168.10.222/32 -d 192.168.10.102/32 -p tcp -m tcp --
        sport 58085 --dport 12345 -j DROP



                                                                  15
既知の問題
   なぜか0, 1, 2のファイルディスクリプタが
    復元されない
       クライアントが再接続すると、0や1のfdが再利
        用されて、サーバのstdoutがクライアントに接
        続されるという楽しいことになる




                               16
ご静聴ありがとうございました




                 17

Mais conteúdo relacionado

Mais procurados

Intel 82599 10GbE Controllerで遊ぼう
Intel 82599 10GbE Controllerで遊ぼうIntel 82599 10GbE Controllerで遊ぼう
Intel 82599 10GbE Controllerで遊ぼう
Takuya ASADA
 
Xen4.0 and vt-d Network Performance Benchmark
Xen4.0 and vt-d Network Performance BenchmarkXen4.0 and vt-d Network Performance Benchmark
Xen4.0 and vt-d Network Performance Benchmark
Mitsutoshi Kiuchi
 
Linux packet-forwarding
Linux packet-forwardingLinux packet-forwarding
Linux packet-forwarding
Masakazu Asama
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
Takashi Takizawa
 
OpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみようOpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみよう
Kimihiko Kitase
 
サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろ
kjwtnb
 
Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)
Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)
Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)
Panda Yamaki
 
パケットフィルタリングの考え方
パケットフィルタリングの考え方パケットフィルタリングの考え方
パケットフィルタリングの考え方
Koiwa Hidekazu
 

Mais procurados (20)

Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)
 
Intel 82599 10GbE Controllerで遊ぼう
Intel 82599 10GbE Controllerで遊ぼうIntel 82599 10GbE Controllerで遊ぼう
Intel 82599 10GbE Controllerで遊ぼう
 
Xen4.0 and vt-d Network Performance Benchmark
Xen4.0 and vt-d Network Performance BenchmarkXen4.0 and vt-d Network Performance Benchmark
Xen4.0 and vt-d Network Performance Benchmark
 
Lagopus 0.2.2
Lagopus 0.2.2Lagopus 0.2.2
Lagopus 0.2.2
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
Linux packet-forwarding
Linux packet-forwardingLinux packet-forwarding
Linux packet-forwarding
 
Hokkaido.cap#3 ケーススタディ(基礎編)
Hokkaido.cap#3 ケーススタディ(基礎編)Hokkaido.cap#3 ケーススタディ(基礎編)
Hokkaido.cap#3 ケーススタディ(基礎編)
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
Varnish 4.0 Release Party in Tokyo発表資料
Varnish 4.0 Release Party in Tokyo発表資料Varnish 4.0 Release Party in Tokyo発表資料
Varnish 4.0 Release Party in Tokyo発表資料
 
High Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many CoreHigh Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many Core
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
OpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみようOpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみよう
 
サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろ
 
Lagopus, raw socket build
Lagopus, raw socket buildLagopus, raw socket build
Lagopus, raw socket build
 
Xeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdkXeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdk
 
Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)
Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)
Hokkaido.cap#7 ケーススタディ(セキュリティ解析:前編)
 
パケットフィルタリングの考え方
パケットフィルタリングの考え方パケットフィルタリングの考え方
パケットフィルタリングの考え方
 

Destaque (7)

JIT Code Profiling with VTune
JIT Code Profiling with VTuneJIT Code Profiling with VTune
JIT Code Profiling with VTune
 
研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法
 
『データ解析におけるプライバシー保護』勉強会 #2
『データ解析におけるプライバシー保護』勉強会 #2『データ解析におけるプライバシー保護』勉強会 #2
『データ解析におけるプライバシー保護』勉強会 #2
 
『データ解析におけるプライバシー保護』勉強会
『データ解析におけるプライバシー保護』勉強会『データ解析におけるプライバシー保護』勉強会
『データ解析におけるプライバシー保護』勉強会
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
 
Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方
 
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
 

Semelhante a TCP connectionの保存と復元

配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
 
Cloud stack徹底入門7章 20130514
Cloud stack徹底入門7章 20130514Cloud stack徹底入門7章 20130514
Cloud stack徹底入門7章 20130514
samemoon
 
Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419
エイシュン コンドウ
 

Semelhante a TCP connectionの保存と復元 (20)

配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
 
Mincs 日本語版
Mincs 日本語版Mincs 日本語版
Mincs 日本語版
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
 
コンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてコンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用について
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
 
DPDKを拡張してみた話し
DPDKを拡張してみた話しDPDKを拡張してみた話し
DPDKを拡張してみた話し
 
Container Networking Deep Dive
Container Networking Deep DiveContainer Networking Deep Dive
Container Networking Deep Dive
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
MINCS – containers in the shell script
MINCS – containers in the shell scriptMINCS – containers in the shell script
MINCS – containers in the shell script
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
PF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGPF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAG
 
Cloud stack徹底入門7章 20130514
Cloud stack徹底入門7章 20130514Cloud stack徹底入門7章 20130514
Cloud stack徹底入門7章 20130514
 
Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419
 
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれNGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
 
もしCloudStackのKVMホストでPCIパススルーできるようになったら
もしCloudStackのKVMホストでPCIパススルーできるようになったらもしCloudStackのKVMホストでPCIパススルーできるようになったら
もしCloudStackのKVMホストでPCIパススルーできるようになったら
 
コンテナ情報交換会2
コンテナ情報交換会2コンテナ情報交換会2
コンテナ情報交換会2
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
Trax Workshop: Windows版TraxソフトウェアをWineで動かして開発する
Trax Workshop: Windows版TraxソフトウェアをWineで動かして開発するTrax Workshop: Windows版TraxソフトウェアをWineで動かして開発する
Trax Workshop: Windows版TraxソフトウェアをWineで動かして開発する
 
201104016 osc2011 kobe
201104016 osc2011 kobe201104016 osc2011 kobe
201104016 osc2011 kobe
 

Último

Último (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

TCP connectionの保存と復元

  • 1. TCP connectionの保存と復元 筑波大学ソフトウェア研究室 三戸健一 (@mittyorz) 2012年9月22日 Kernel/VM探検隊@つくば
  • 2. 自己紹介  筑波大学情報科学類4年生  ソフトウェア研究室  好きな言語はPerl  最近全然触れていない  @go_vmさんのVMRPCを使って面白いこ としよう  普段は環境構築とかメンテナンスとかばか りでhacker的なことはあまりしていません 2
  • 3. TCPソケットの状態を保存しよう  理想:  TCPコネクションを維持したままプロセスの停止、 状態の保存、別の環境で再開、が簡単にできると うれしい  現実:  送受信キューとかシーケンス番号などの情報を読 み取ってdumpしないといけない  close()するとFINが送信されてしまう TCPスタックをちゃんと理解して自力でやるの は大変そう…。なんとかインチキできんのか 3
  • 4. 従来の解決法 仮想計算機を使う  難しいことを考えないでVMに載せてしまう  ライブマイグレーション!  利点  ノウハウが十二分に存在している  コードに手を入れる必要は無い  欠点  仮想計算機を稼働させるのはそれなりに大変  OSごと環境を移動させるので、コストが高い 4
  • 5. TCP repair mode  先生「3.5 kernelなら簡単らしいよ」  私「」  Linux Kernel 3.5で新しくマージされた機能  TCP_REPAIRというソケットオプションが新設 された  Repairモードに入ると、副作用無しに様々な 操作が行えるようになる  Software Design 2012年9月号  「続・Linux 3.5の新機能」 5
  • 6. Repair modeで出来ること  connect()を用いて、実際には接続してい なくてもESTABLISHEDにする  ポートの衝突を無視してbind()でLISTEN  FIN_WAIT, TIME_WAITを経由せずに close()  FINパケットは送信されない  TCPシーケンス番号、送受信キューなどソ ケットの再開に必要な情報の取得 6
  • 7. ソケットの保存 1. iptables で新規パケットをブロック  iptables -D INPUT -s 192.168.10.222/32 -d 192.168.10.102/32 -p tcp -m tcp --sport 58085 --dport 12345 -j DROP 2. repair modeに移行  setsockopt(sockfd, SOL_TCP, TCP_REPAIR, …); 3. 接続情報の取得/パケットキューの読取 4. close() 7
  • 8. ソケットの復元 1. sock = socket(…); 2. repair modeに移行 3. シーケンス番号の復元 4. bind() 5. connect() 6. TCPオプションの復元 7. キューの復元 8. repair modeを終了 9. 通信のブロックを解除 8
  • 9. 実装例  間に合いませんでした ……だけだと哀しいので 9
  • 10. crtools  an utility to checkpoint/restore a process tree  http://criu.org/CR_tools  “CRIU is sub-project of OpenVZ”  TCPセッションだけでなく、プロセス自体を freeze/dump to file/restore出来る  有名なOSS projectでcheckpoint/restore出 来るか試している模様  http://criu.org/What_software_is_supported 10
  • 11. crtoolsのbuild  Ver 0.2が二日前(09/20)に出てますが、 試したのは0.1  Ubuntu 12.10 beta x86_64  $ git clone git://git.criu.org/crtools.git  $ make  色々warningとかerrorとか出るが、2,3カ所適 当に直すとbuild出来た 11
  • 12. 保存、復元の対象  echo-server-nofork-fdopen.c  サーバ: Ubuntu 12.10 (192.168.10.102)  クライアント: Debian 6.0 (192.168.10.222)  単純なechoサーバ  selectもforkもしないので、一つのconnect  mitty@quantal:~/tcp-repair$ gcc echo-server-nofork-fdopen.c  mitty@quantal:~/tcp-repair$ ./a.out 12345  mitty@quantal:~$ sudo lsof -i | grep 12345 12
  • 13. connect to server  telnetコマンドでechoサーバへ接続  debian$ telnet 192.168.10.102 12345  mitty@quantal:~$ sudo lsof -i | grep 12345  ファイルディスクリプタ  3でaccept  4 で clientへwrite  5 = dup(4) を用いてclientからread 13
  • 14. dump tcp connection to files  mitty@quantal:~$ sudo ./crtools/crtools dump --tcp- established -t 12327  mitty@quantal:~$ ls -l *.img  エラーは出ているが、dump出来た  mitty@quantal:~$ sudo iptables-save | grep 12345 14
  • 15. restore from files  mitty@quantal:~$ sudo ./crtools/crtools restore --tcp- established -t 12327  mitty@quantal:~$ sudo lsof -i | grep 12345  復元された  iptablesの設定はdeleteしてくれない  mitty@quantal:~$ sudo iptables -D INPUT -s 192.168.10.222/32 -d 192.168.10.102/32 -p tcp -m tcp -- sport 58085 --dport 12345 -j DROP 15
  • 16. 既知の問題  なぜか0, 1, 2のファイルディスクリプタが 復元されない  クライアントが再接続すると、0や1のfdが再利 用されて、サーバのstdoutがクライアントに接 続されるという楽しいことになる 16