USBネットワークインターフェースモードでIP経由でAndroidデバイスとLinuxボックス間で通信したいと思います。
AndroidデバイスをLinuxボックスに接続し、いくつかのJavaリフレクションハッキングを介してAndroidデバイスをネットワークインターフェイスモードに切り替えました。 (私はLinuxボックスをゲートウェイとして使用したいのですが、その逆を使用したくないので、Androidでは標準のテザリング設定を使用しません。)私は両端ip addr add
(LinuxボックスとAndroidデバイス)にIPアドレスを追加してから、ip route
Linuxボックスを介してインターネットにアクセスするためのパスを追加しました。また、Linuxボックス側でIPv4転送を有効にし、必要なすべてのiptables
ルールを有効にしました。
私の質問は:root
コミュニケーションはインターフェースを介してのみ行うことができるということです。たとえば、私のLinuxボックス10.42.0.1
とAndroidデバイスは10.42.0.2
USBネットワークインタフェースを介して実行されたり、ping 10.42.0.1
Androidping 8.8.8.8
デバイスはsu
シェルで実行されずに実行されます。動作しません。関数と同じコマンドを完全に実行しますroot
。 AndroidのWiFiインターフェースを介して実行される同じコマンドは、ルートなしで動作します。
私はこれがKitKatでうまく機能するので、Android 5.0 / 5.1で実装された新しいセキュリティ機能であると仮定します。問題がカーネルでオンになっているか、Androidに関連するものではない他のものが原因であると信じているので、ここに投稿します。私はネットワーキングの経験があまりないので、誰かがこの問題を軽減するために何をすべきかを教えてくれることを願っています。
ベストアンサー1
他のネットワーク機能も機能しますか?telnet
あるコンピュータから別のコンピュータに移動してみてください。ルートではなくルートではなくルートに正常に接続できる場合は、問題があります。ルートとして「Connection Denied」(または同様のメッセージ)を受け取り、root以外のユーザーとして「Permission Denied」(または同様のメッセージ)を受け取っても問題が発生します。
長い話を短く
他のネットワーク機能がroot以外のユーザーとして機能している場合、実際に問題は発生しません。このping
プログラムは、rootとしてのみ使用が制限されたICMPプロトコルを使用します。したがって、ping
プログラムは通常ルートにsetuidをインストールします。する
ls -ld $(which root)
---s--x--x
root および setuid( 少なくとも ) に属していない場合は、次のようにしてそれを作成します。
chownルート道_フラット 修正 4755道_フラット
ルートとして。