デフォルトルートを削除すると、これが行われます。 /sbin/route
でルーティングテーブルを表示できます でデフォルトを削除します:
sudo /sbin/route del default
これにより、システムはローカル ネットワークに接続されたままになりますが、その先のパケットをどこに送信すればよいかわかりません。これはおそらく「外部アクセスなし」の状況を非常に正確にシミュレートします。
route add
で元に戻せます (ゲートウェイがどうあるべきかを思い出してください)、またはネットワークを再起動するだけです。 NetworkManager を使用してシステムを試してみたところ、デフォルトのザッピングは正常に機能し、パネル アイコンをクリックしてローカル ネットワークを再選択するだけで復元できました。 NM が他のイベントで単独でこれを行う可能性があるため、注意してください。
別のアプローチは、 iptables
を使用することです 送信トラフィックをブロックするルール。しかし、おそらくルーティング アプローチの方が優れていると思います。
あなたが書きました
<ブロック引用>では、開発マシンで「外部アクセスなし」をシミュレートするにはどうすればよいでしょうか?
イーサネット インターフェイスを「非アクティブ化」し、後で手間をかけずに再アクティブ化するにはどうすればよいですか?
これらは 2 つの質問ですか、それとも 1 つの質問ですか? simulate "no external access"
の意味がわかりません .ただし、イーサネット インターフェイスを非アクティブ化するには、単純に行うことができます
#ifdown eth0
#ifup eth0
またはあなたのインターネットデバイスが何であれ。これにより、イーサネット インターフェイスがそれぞれダウンおよびアップします。
ホストオンリー ネットワーク インターフェイスのみを提供する仮想マシン (ユーザー モード Linux、VServer、OpenVZ、VirtualBox、VMWare、KVM など) でコードを実行できます (つまり、VM からホスト マシン以外へのルーティングはありません)。 ).
アプリケーションを専用ユーザー appuser
として実行する場合 、そのユーザーのネットワーク アクセスを制限できます。 iptables
であることを確認してください (Ubuntu:iptables iptables http://bit.ly/software-small をインストール) および iproute2 (ip
コマンド) (Ubuntu:iproute インストール iproute http://bit.ly/software-small, iproute-doc インストール iproute-doc http://bit.ly/software-small) がインストールされています。次に、 iptables
を使用できます appuser
として実行されているプロセスからの発信トラフィックをマークする 、および ip rule
および ip route
そのユーザーの代替ルーティング テーブルを設定します。
ip rule add fwmark 1 table 1
ip route add 127.0.0.0/0 table 1 dev lo
iptables -t mangle -A OUTPUT -m owner --uid-owner appuser -j MARK --set-mark 1
(注:未テスト。その他の Linux IP パケットマングリングの例も参照してください。)