プロが教える店舗&オフィスのセキュリティ対策術

携帯電話(EM・ONE)をUSB接続してモデムにしたLinuxパソコンからインターネットに接続すると、tun0デバイスを通じて接続されます。
その時、下に書いたようなネットワークインターフェース状況です。
この携帯電話でのインターネット回線を複数のLinuxパソコンで共有できますでしょうか。

モデムにつながったパソコンのeth0と、ルータのWAN側とをつないでみようとしましたが、WAN側アドレスの設定でゲートウェイアドレスがわからず、つまずいてしまいました。
tun0のアドレスは接続毎に変化します。
利用ディストリビューションはVine4.2です。

$ /sbin/ifconfig
eth0 リンク方法:イーサネット ハードウェアアドレス xxx
inetアドレス:192.168.1.1 ブロードキャスト:192.168.1.255 マスク:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

tun0 リンク方法:不明なネット ハードウェアアドレス yyy
inetアドレス:61.25.24.13 P-t-P:0.0.0.0 マスク:255.0.0.0
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RXパケット:50 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:52 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:500
RX bytes:3117 (3.0 Kb) TX bytes:4233 (4.1 Kb)

$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=pca
GATEWAY=192.168.1.254
DOMAIN=myhome

2008年2月3日

A 回答 (2件)

> やはり「パソコンVのデフォルトゲートウェイを携帯電話にする」必要があり、それをどこかから教えてもらう必要がありますね。


 ああ、う~ん。あのー、そうでは無くってですな。ではパソコンV単独の話をしましょう。今はLAN内のそれ以外は忘れてちゃぶだい。
 今、パソコンVは、携帯電話(tun0)でインターネットできてるんだよね? つまり、/etc/sysconfig/networkのGATEWAY=192.168.1.254は無効になってて、パソコンVからインターネット向けのパケットは61.25.24.13(本当はあまりこういうIPアドレスは表示するべきではないです)に飛ぶようになっている。ダイヤルアップPPPってのは、・・・・ええと、そもそもPPPってのは、2点間(ここではパソコンVと携帯電話の通話先のプロバイダ)が一つのIPセグメントになる。IPセグメントになるって事は、本来IPアドレスが4つ必要なのね。ネットワークアドレス、パソコンVのアドレス、相手のアドレス、ブロードキャストアドレス。このうち、tun0経由のデフォルトゲートウェイってのは、本当は相手のアドレスになる。んだけど、現在ではそれはごにょごにょして一つのIPアドレスで済むようになっているものが多い。という訳で、難しい話をはしょるとANo.1の1番は既に済んでるって事なの。
 ・・・・多分。
 正確なところは確かに会社に問い合わせんと分からんね。

 ルーティングの設定は、ANo.1の
# echo 1 > /proc/sys/net/ipv4/ip_forward
これが、「今電源が入っている状態でルーティング(パソコンVがeth0で受け取って宛先が分からないパケットをtun0に渡し、tun0で受け取って宛先がLAN内であるパケットをeth0に渡す処理を言う)できるようにする」ためのコマンドだ。で、次に電源入れた時にも同じ効果を得るには/etc/sysctl.confの、上と似たような風な行を0から1に変える。詳しくは検索の事。
 次に、上の設定で普通にルーティングしただけではパソコンAからインターネット向けに「ローカルアドレスが送信元である」パケットが飛んでいってしまうのでまずい(まぁ、次のルータではじかれるけどね)。なので、インターネット向けにはあくまで「送信元がパソコンVのtun0」であるようなパケットに変換して送り出さないといけない。でないと帰ってこれんけんね。で、帰ってきたパケットが正しく本当の送信元に帰っていくように「宛先がパソコンAであるパケット」に変換するわけだ。これがIPマスカレード。ここまで言うと分かるだろうけど、ブロードバンドルータはこの動きをあの小さな筐体で実現した機器だって事やね。IPマスカレの詳しい話はまた別途検索してください。
 一番簡単な書式だと、

# iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

でいける・・・・んじゃないかなぁ・・・・。もうちっと細かな書式もあるはずなのでこれも検索ね。もちろん次回起動時にも有効にするために

# /etc/init.d/iptables save

も忘れずに。

この回答への補足

anmochi様、親切なアドバイスをありがとうございます。
tun0についてですが、「4つのIPアドレスが1つのアドレスになってしまう」ということですが、tun0経由のデフォルトゲートウェイは、今回の例の場合はtun0自身のアドレスである61.25.24.13と考えればよいということでしょうか。そうだとしても、61.25.24.13はクライアント側で設定したものではなく、接続するたびにアドレスが異なっており、DHCPで与えられているように思われます。接続するたびにアドレスが異なっていますので、アドレスを特定できません。
パソコンVをインターネットへのゲートウェイにして、その後ろにルータを付けた場合、ルータのWAN側ポートのゲートウェイアドレスは61.25.24.13にすればよいように思われますが、そのアドレスは特定できないと思うのですが、どのようにすればよいでしょうか。

ルーティングの設定は意味は理解できるものの実際にできるかどうかまだこれからのなので、不明点があれば改めてお伺いすることとします。

2008年2月5日

補足日時:2008/02/05 01:52
    • good
    • 0
この回答へのお礼

携帯電話(EM・ONE)モデム・Linuxパソコン・ルータを利用して、携帯電話回線インターネットと家庭内LANを接続することができました。

構成は次のとおりです。
ゲートウェイパソコンVとルータWAN側をクロスケーブルでつなぐことを偶然発見するまで随分試行錯誤しました。
アドレス変換・フィルタリングにはiptablesを利用していますが、各種ウェブサイトにアップされている設定を自宅環境のアドレスに変える程度で殆どそのまま利用しています。ゲートウェイパソコンとルータの2回のアドレス変換が行われていますが、いまのところ不具合ないです。

インターネット
 |
携帯電話(EM・ONE)
 |
USB
tun0(不特定アドレス)
ゲートウェイパソコンV
eth0 192.168.2.254 ゲートウェイアドレスは指定せず
 |
(クロスケーブル)
 |
(WAN側)192.168.2.1 ゲートウェイアドレス:192.168.2.254
ルータ
(LAN側)192.168.1.254
 |
eth0 192.168.1.yyy ゲートウェイアドレス:192.168.1.254
パソコンA

2008年2月25日

お礼日時:2008/02/25 22:35

Vineのパソコンがeth0とtun0があるパソコンという事かな。


では、以下の構成を考えてみよう。VineをパソコンVとし、LAN内のもう一つのパソコンをパソコンAとする。

インターネット
 |
携帯電話
 |
tun0 xxx.xxx.xxx.xxx
パソコンV
eth0 192.168.1.1
 |
家庭内LANー192.168.1.254 ルータ
 |
192.168.1.yyy
パソコンA

上の構成を見ていただくと分かるように。パソコンVの携帯経由でパソコンAがインターネットに接続するには、ルータではなくパソコンVがゲートウェイになる。つまり、
・パソコンVのデフォルトゲートウェイを携帯電話にする。
 これは、Vineで携帯電話でインターネットする設定はよくわかんないのでマニュアルに従ってください。
・パソコンAのデフォルトゲートウェイをパソコンV(192.168.1.1)にする。
 これは普通に設定すれば良い。
・パソコンVがルーティングできるようにする。
 # echo 1 > /proc/sys/net/ipv4/ip_forward するのと、iptablesでIPMASQUERADEするくらいでしょーか。/etc/sysctl.confも修正しよう。
の3つが必要になる。
 もし、パソコンAとパソコンVの間にルータがくるようにするためには、パソコンVールータ間とルーターパソコンA間のセグメントを変える事になる。具体的にはパソコンVのeth0が192.168.2.254になり、ルータのWAN側が192.168.2.1になる。

tun0
パソコンV
eth0 192.168.2.254
 |
192.168.2.1
ルータ
192.168.1.254
 |
eth0 192.168.1.yyy
パソコンA

ルータが何を目的にどう絡んでくるのか分からないのでひょっとしたら全然関係ない事を言っているかも知れない。ルータでインターネットしている訳ではないのかな?

この回答への補足

anmochi様、ありがとうございます。
1.パソコンVのデフォルトゲートウェイを携帯電話にする。
 やはり「パソコンVのデフォルトゲートウェイを携帯電話にする」必要があり、それをどこかから教えてもらう必要がありますね。「マニュアルに従って」ということですが、マニュアルには書かれていませんので、電話会社に照会する必要がありそうです。
 現在、携帯電話(モデム)をUSBにつないでモジュールを組み込むと勝手につながります。これはtun0インターフェースがDHCPでアドレスの配布を受けているのかと思うのですが、この状態の時にデフォルトゲートウェイを確認する方法はないでしょうか。

2.パソコンVがルーティングできるようにする。
 iptablesの勉強も、このようなことをしている理由のひとつなのですが、勉強未着手でわかりません。
 というわけで、「iptablesでIPMASQUERADEする」「/etc/sysctl.confも修正」の具体的な方法がわかりません。ぼちぼち勉強します。

2008年2月4日

補足日時:2008/02/04 07:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!