3
Linuxで子プロセスを「オフライン」(外部ネットワークなし)で実行するコマンド
実際のネットワークを停止せずにオフラインモードでテストしたいプログラムがあります。このプログラムは、Unixドメインソケットとループバックを含むローカルソケットに接続する必要があります。また、ループバックでリッスンし、他のアプリに表示される必要があります。 ただし、リモートマシンへの接続は失敗します。 strace/ unshare/のように機能sudoし、インターネット(およびLAN)を隠した状態でコマンドを実行し、他のすべてがまだ機能しているユーティリティが必要です。 $ offline my-program-to-test この質問には答えがあります:プロセスのネットワークアクセスをブロックしますか? 他のユーザーとして実行してからiptablesを操作するなど、いくつかの提案がありunshare -nます。しかし、どちらの場合も、UNIXドメインソケットとループバックをメインシステムと共有するための呪文はわかりません。その質問に対する答えは、ネットワーク全体の共有を解除する方法を教えてくれるだけです。 私がテストしているプログラムは、まだXサーバーとdbusに接続し、システム上の他のアプリからの接続をループバックでリッスンできる必要があります。 ネットワークケーブルを抜くのと同じくらい迷惑になるので、理想的には、chrootやユーザー、VMなどを作成しないようにします。すなわち質問のポイントはどのように私はこれをaのように簡単にすることができるかsudoです。 非ローカルアドレスを指定するネットワークコールが失敗することを除いて、通常どおりに100%実行するプロセスが必要です。理想的には、同じuid、同じhomedir、同じpwd、...を除くすべてをオフラインに保つ。 私はFedora 18を使用しているので、移植性のないLinuxの答えは問題ありません(予想される、でも)。 それが関係しているのであれば、Cプログラムを書くことでこれを解決できてうれしいので、Cを書くことに関係する答えは問題ありません。ローカルネットワークを維持しながら、Cプログラムが外部ネットワークアクセスを取り消すために必要なsyscallがわからないだけです。 「オフラインモード」をサポートしようとする開発者は、おそらくこのユーティリティに感謝するでしょう!