Linuxでインターネットパススルー(リバーステザー)を設定するにはどうすればよいですか?


19

USB経由で接続し、コンピューターのインターネット接続を使用するオプションがあるHTC Desire Sがあります。これはWindowsでは正常に機能しますが、Ubuntuでのセットアップに苦労しています。プラグインしてusbメニューからインターネットパススルーを選択すると、usb1デバイスが作成され、そのIPアドレスにpingを実行できます。さまざまなiptables構成とnatのセットアップを試しましたが、正しく実行しているかどうか、または追加の構成が必要かどうかはわかりません...

助けてくれてありがとう。


trac.osuosl.org/trac/replicant/wiki/ReplicantUSBNetworkingtranslate.googleusercontent.com/…からの情報を組み合わせて使用​​することで機能しました。以下に答えてください。
ブルーグレー

回答:


11

以下はしばらくの間は機能しますが、ブラウザに対してのみ機能します。

USB経由で電話を接続し、インターネットパススルーを選択すると、新しいRNDISデバイス(usb0またはusb1)を取得する必要があります。ubuntuの場合、/ etc / network / interfacesを編集し、次の行を追加します。

iface usb0 inet dhcp
iface usb1 inet dhcp

これにより、デバイスの追加時にIPが自動的に割り当てられます。ネットワークアドレスがusb0またはusb1に自動的に割り当てられない場合は、手動で行う必要があります。

次に、LinuxコンピューターでNATをセットアップする必要があります。何かのようなもの:

sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo echo 1 > /proc/sys/net/ipv4/ip_forward 

DNSサーバーも必要です。

sudo apt-get install bind9

これは数分間機能しますが、しばらくすると電話はHTC Syncの検索を中止して切断します。

根ざした携帯電話向け

ルート化された電話を持っている場合は、永久に接続できます(fre3voが機能しました)。adbで次を実行します。

ネットワークとadbのusbモードを有効にします。

adb shell echo 6 > /sys/devices/platform/msm_hsusb/usb_function_switch

電話機のusb0デバイスにIPを割り当てます。

adb shell ifconfig usb0 192.168.99.5 netmask 255.255.255.0 up

デフォルトルートを追加します。IPは、Linuxでusb0に割り当てられたIPである必要があります。

adb shell route add default gw 192.168.99.1 dev usb0

DNSサーバーを設定します。これはGoogleのオープンDNSサーバーですが、DNSサーバーがある場合は、LinuxコンピューターのIPになります。

adb shell setprop net.dns1 8.8.8.8

2
伝説によると、次の操作を行うことでHTC同期を偽造できます。HTC電話では、USBを接続してインターネットパススルーを選択すると、HTC同期を待機して放棄します。ポート6000でリッスンしています。したがって、netcatとのHTC同期を偽装するだけで済みます。コマンドラインでこれを試してください: phoneip=$(arp -n | grep usb | awk '{print $1}') echo -n -e "\x00\x02\x00\x00" | nc $phoneip 6000 > /dev/null の16進値00 02 00 00が探しているすべてです。
ゲフチャン

@geffchang、ありがとう!Windowsユーザーの場合、モバイルがUSB経由で接続しようとすると、netsh interface ip show configすべてのインターフェイス名を表示するために実行し、新しいアダプターが呼び出されるnetsh interface ip show config name="Local Area Connection #2"インターフェイスを取得できますLocal Area Connection #2。便宜上、この名前を変更できます。
サムハスラー

3

Aはすべてを自動化するためにこの小さなbashを作成しました。携帯電話を充電モードでコンピューターに接続して、このbashを実行するだけです。

#!/bin/bash
/opt/android-sdk-update-manager/platform-tools/adb shell 'echo 6 > /sys/devices/platform/msm_hsusb/usb_function_switch'
sleep 1
/opt/android-sdk-update-manager/platform-tools/adb shell ifconfig usb0 192.168.99.5 netmask 255.255.255.0 up
sleep 1
/opt/android-sdk-update-manager/platform-tools/adb shell setprop net.dns1 8.8.8.8

get_ip ()
{
ifconfig usb0 | grep inet | awk '{print $2}' | sed 's/addr://' | grep .
}

echo "waiting for IP on computer usb0"
while [[ `get_ip` < 192 ]];do sleep 2; done
ip=`get_ip`
echo "IP adress is $ip "
/opt/android-sdk-update-manager/platform-tools/adb shell route add default gw $ip dev usb0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

0

私は自分でLinuxマシンにアクセスできないため、このソリューションをテストすることはできませんが、ここで説明されて いる手順を試すことができます(ロシア語からのGoogle翻訳)

翻訳へのコメント:

  • 「ルートバニム」は根ざしを意味します。
  • WBまたはBBはBig Brother(デスクトップ)を意味します。
  • スマータは「スマートフォン」の略です。

がんばろう!


感謝しますが、インターフェースをブリッジするよりも簡単な方法があります。
ブルーグレー

0

OK、これがまさに私がやったことです、HTCの応援は望みません:

bind9およびNATなどを設定します...

注:1:sudo echo 1> / proc / sys / net / ipv4 / ip_forwardを実行すると、アクセス許可エラーが発生するため、プロセスのスクリプトを次に示します。特定のデバイスのパラメーターを追加します。


cd ~
echo '!/bin/bash
apt-get install bind9
iptables -A POSTROUTING -t nat -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward' > setup_bind9_nat.sh

chmod +x setup_bind9_nat.sh
sudo ./setup_bind9_nat.sh

電話を接続して、「インターネットパススルー」を選択します

デバイスが表示されるのを待ちます:デバイスが次の場所にあることを ifconfig 確認します: arp

デバイスを取り外してから再び接続し、arpに表示する必要があることがわかりました。arpがデバイスを表示しない場合、正しく動作しません。

デバイスは、HTC Syncがメッセージを送信するのを待って待機するため、HTC Syncsメッセージをモックする必要があります。


#change this line to be more specific if you have more than one usb network device
phone_usb_device="usb"
get_ip ()
{
    arp -n | grep $phone_usb_device | awk '{print $1}'
}

#TODO: This needs a timeout and loop needs cleaning up, but works fine and borrowed from another post.
echo "waiting for IP on computer usb"
while [[ `get_ip` < 192 ]];do sleep 2; done
phoneip=`get_ip`
echo "IP adress is $phoneip "

echo -n -e "\x00\x02\x00\x00" | nc -q 2 $phoneip 6000 > /dev/null

D-Busを使用してこのバージョンを作成し、デバイスが接続されたときなどに後半部分が自動的に実行されるようにすることができます。

OK、進行中の私の作業です。d-busで「一般的な」ものを見つけることができなかったので、udevを使用したハックソリューションを選択しました。これは完全ではありません。たとえば、コマンドが2回実行されるため、一致するパラメーターをもう少しフィルタリングできるかどうかを確認し、最後のスクリプトにタイムアウトを追加し、念のために、arpをもう少し良いものに置き換えることができるかどうかを確認する必要があります。

here.s /etc/udev/rules.dから作成した.rulesファイル


cat /etc/udev/rules.d/htc-desire.rules

好きな名前を付けることができますが、数字で始めないでください。

選択したエディターなどを使用して、sudoとしてファイルに以下を追加します。


#KERNEL=="usb?" or DRIVERS=="usb" not sure which is best, may need extra mode information too from usb device.
SUBSYSTEM=="net", DRIVERS=="usb", ATTRS{manufacturer}=="HTC", ATTRS{idProduct}=="0ffe", RUN+="/home/olli/chain_mock_htc_sync.sh $kernel"


Ubuntu is setup to create the file with the correct permissions already 


ls -lrt /etc/udev/rules.d/htc-desire.rules 
-rw-r--r-- 1 root root 248 Jun 26 22:09 htc-desire.rules

基本的に、これら3つの 'r'が表示されない場合、


sudo chmod a+r /etc/udev/rules.d/htc-desire.rules 

次に、udevからのRUNが他のすべてをブロックするため(最後に実行されたとしても!!)...うーん...とにかく、2つのファイルが必要です。

私は今のところ「/ home / olli /」のホームディレクトリにファイルを作成しました...そのため、「/ home / olli /」ビットをファイルを作成した場所に置き換えることを忘れないでください:

だから私にとっては、ホームディレクトリにcdします。


cd ~

というファイルを作成します


chain_mock_htc_sync.sh

以下を含む:



#!/bin/bash
/home/olli/mock_htc_sync.sh "$1" &
exit

実行可能にする


chmod +x chain_mock_htc_sync.sh

という別のファイルを作成します


mock_htc_sync.sh

以下を含む


#!/bin/bash
#change this line to be more specific if you have more than one usb network device

phone_usb_device="$1"
get_ip ()
{
    arp -n | grep $phone_usb_device | awk '{print $1}'
}

#TODO: This needs a timeout and loop needs cleaning up, but works fine and borrowed from another post.
echo "waiting for IP on computer $phone_usb_device"
while [[ `get_ip`  /dev/null

実行可能にする:

chmod +x mock_htc_sync.sh

できれば、すぐに素敵な整理されたバージョンが必要です。(おそらく明日)。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.