FTPのように、制御と転送の2つのポートを利用し、送信元リモートホストごとにforkして対応するTCPサーバプログラムを利用しています。
ここで、OS側から、制御ポート(ログイン等)のコネクションは切断しないで、転送ポートのコネクションだけを切断したいと思うのですが、可能でしょうか。
1つのプロセスが、1つのホストとの制御、転送、両方のコネクションを担当するので、プロセスをkillするわけにはいきません。
Macでは、IPNetMonitorというGUIアプリケーションで、TCPコネクションごとの切断ができるので、Linuxでも可能ではないかと思うのですが...
環境は、redhat7.3です。
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
iptableにルールを追加して、パケットを拒否するようにするとか。
切断するわけでないので、一生待ちという事態になるかもしれませんが。
カーネルレベルでの強制切断ってのは、危ないのではないかと。
下手にこれができると、迷子のパケットが到達した時に、通信に混乱が生じる恐れがありそうな。
やはりプログラムレベルで、ちゃんとshutdown/closeしてやるように、管理インタフェースを追加すべきですね。
この回答への補足
>iptableにルールを追加して、パケットを拒否するようにするとか。
現在はこれを行っているのですが、CLOSEまでの時間が、アプリケーション層の実装に依ってしまうのと、元々80ちかいルールを設定しているので、あとからリストをみてルール番号を確認するのが大変面倒なのです。
>カーネルレベルでの強制切断ってのは、危ないのではないかと。
下手にこれができると、迷子のパケットが到達した時に、通信に混乱が生じる恐れがありそうな。
言われている意味が分かりません。
現在のTCP/IPで、不測の切断や、迷子のパケットによって、他に影響があるとは思えないのですが?
特にTCPでは、アクティブクローズ側はTIME-WAITで2MSL間待機しますので、カーネルレベルの切断(FINの送信)によって、迷子のパケットや不測の切断という状況はまず起こりえないですし、上位層が対応できないこともないのでしょう(通信相手がフリーズしただけでバグってしまうことになる...)
上の方法の方が、TCPコネクションを正常に終了しないので、よくないのでは?
>やはりプログラムレベルで、ちゃんとshutdown/closeしてやるように、管理インタフェースを追加すべきですね。
これでは、そういった操作がしたいアプリケーション全てのソースを修正する必要があります。
少なくとも、Macでは、簡単に実現できるので、なんとかならないかなお考えているのですが。
通信の両ホストのアドレスとポートを指定して、FINパケットを送出するだけなので、どこかにそんなツールはないでしょうか?
No.1
- 回答日時:
ごめんなさい。
質問の意図がよくわかりません。コネクションごとにソケットがオープンされているので、切断したいソケットを
クローズすればいいと思うのですが。
ソケットプログラミングに関する参考サイトを3つ紹介しておきますのでご覧ください。
http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socke …
http://www.ueda.info.waseda.ac.jp/~toyama/network/
http://x68000.startshop.co.jp/~68user/net/
この回答への補足
プログラミングの話ではなく、OSレベルの話です。
上記サーバによって、下記のコネクションがあった場合に、ソフトウェア外から、強制的に192.168.0.1:2421だけ切断したいのです。
ソフトウェア自身の機能としてではありません。
この例に限らず、プロセスのkillではなくて、コネクションだけを切断することができないでしょうか?
[root@hostname]# netstat -tn
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.0.1:2420 192.168.1.3:49170 ESTABLISHED
tcp 0 0 192.168.0.1:2421 192.168.1.3:49174 ESTABLISHED
tcp 0 0 192.168.0.1:2420 192.168.1.24:52744 ESTABLISHED
tcp 0 0 192.168.0.1:2421 192.168.1.24:52751 ESTABLISHED
回答ありがとうございます。
すいません、補足でちょっと間違えを。
切断したいのは、192.168.0.1:2421と192.168.1.3:49174間のコネクションです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ファイアウォール ポート開放で利用可能なTCP一覧の中に利用したいTCPが入ってない場合どうすればいいのでしょうか? 2 2022/09/12 10:31
- UNIX・Linux Ubuntuサーバーでメールを受信できない 7 2022/08/23 20:55
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- ルーター・ネットワーク機器 ネットワークの機器(ルーター、スイッチ)選びについて 2 2023/03/16 22:12
- UNIX・Linux iptablesを設定するとメール送信処理が遅くなる!? 6 2022/06/07 01:11
- デスクトップパソコン 古ーいパソコン/Atheros AR2181 PCIe Gigabit LAN コントローラー 7 2022/09/07 12:58
- ルーター・ネットワーク機器 YAMAHAルータ設定について 1 2022/09/03 16:31
- 借金・自己破産・債務整理 教えて!「債務不履行!ついに裁判所から呼出状!本人訴訟で期日の先送りは可能か!?」 5 2022/10/14 10:31
- 訴訟・裁判 ①こうゆう裁判↓は、本人訴訟でしてるのですか。 ②なんでニュースになるのですか。本人がマスコミにタレ 3 2023/07/11 12:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
材木の斜め切断
-
厚さ5mm~8mmの鉄板の切断
-
ステンレス板の切断
-
WinSCPのセッションの終了方法...
-
鉄板に四角い穴を開ける方法
-
L字アングル 切断方法
-
3Φの アルミニウムパイプを き...
-
ピアノ線を切断するには?
-
Windows11のデスクトップについて
-
2mmのステン板を20cmの円状に切...
-
アルミフェンスの切断方法
-
はみ出たネジを切断したい。
-
アセチレンガス溶断
-
大谷石を切断したいが道具等を...
-
ステンレスの板
-
内径Φ30mmの鋼管(果樹支柱)を接...
-
アセチレンガス 溶断 取り扱い
-
塀のブロックを縦に2段切断したい
-
プラズマ切断機のコツについて
-
アングルラック等に使われてい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
はみ出たネジを切断したい。
-
鉄板に四角い穴を開ける方法
-
ステンレス板の切断
-
厚さ5mm~8mmの鉄板の切断
-
厚めの鉄板の切断方法を教えて...
-
WinSCPのセッションの終了方法...
-
ピアノ線を切断するには?
-
給湯器の電源コード切ってしま...
-
L字アングル 切断方法
-
大谷石を切断したいが道具等を...
-
アセチレンガス溶断
-
VHDの作成が上手く出来ません。
-
アルミジョイナーを切断するた...
-
ポリカ波板を綺麗に切断するには?
-
FileZillaを終了する時
-
2mmのステン板を20cmの円状に切...
-
軽天(角スタッド、ランナー)を...
-
Windowsでリモートデスクトップ...
-
ステンレスの板
-
コンクリート板の切断料金
おすすめ情報