
Ubuntu日本語フォーラム

ログインしていません。
ルータやインターネット接続を考慮していない状態でのLAN構築設定が見つからないため、ご教授よろしくお願いします。
現在、以下の様なスタンドアローンなLANを構築し、とりあえずPC1とPC2間でpingを通したいと思っています。
Serverにはeth0とeth1の2つのLANポートを持つNICがあり、それぞれPC1とPC2へ有線で接続されています。
PC1、PC2にはUbuntu14.04 desktopを、ServerにはUbuntu14.04 serverを導入しています。
(PC1)
192.168.0.11 (eth0)
|
|
192.168.0.10 (eth0)
(Server)
192.168.1.10 (eth1)
|
|
192.168.1.11 (eth0)
(PC2)
/etc/network/interfacesにてそれぞれのNICに上記の固定IPアドレスを割り振り、
ServerではIPフォワードを有効にするため/etc/sysctl.confにてnet.ipv4.ip_forward=1のコメントアウトを外しています。
この状態でpingコマンドを試したのですが、PC1からPC2(またその逆)へpingが通りませんでした。
PC1から192.168.0.10へ、PC2から192.168.1.10へはpingが通っております。
そして、ServerからはPC1、PC2のどちらにもpingが通ります。
また、Serverを介さずPC1とPC2を直接有線接続した場合もpingが通りました。
よって、Serverでのipフォワーディングの設定が不十分だと判断したのですが、どうしたらいいのかわかりません。
よろしくお願いします。
オフライン
koeda による投稿:
また、Serverを介さずPC1とPC2を直接有線接続した場合もpingが通りました。
通常考えると PC1 と PC2 の IP アドレスを変更せず、そのまま直接接続しても ping は通りません。
ping が通ったことから、PC1、PC2 の IP アドレスを変更したか、255.255.255.0 (24bit) よりも広い範囲を指定するサブネットマスクを指定しているかのどちらかがなされていると思われます。
また、当初の構成で PC1 と PC2 の間で ping が通らない理由として、一番最初に思いつくのが PC1、PC2 のデフォルト ゲートウェイ (ルーティング テーブル) が正しく構成されていないということです。
確認のために PC1、PC2、Server の /etc/network/interfaces の内容と、ip addr show コマンド、ip route show コマンドの出力を提示ください。
オフライン
ryさん、お返事ありがとうございます。
おっしゃる通り、設定ファイルに手を加えております。
そして、ルーティングの設定は恥ずかしながら理解できておりませんので何もしていません。
まず、3台とも/etc/init/network-manager.confの自動起動に関する部分をコメントアウトしております。
ですので、ネットワークマネージャは起動していません。
/etc/network/interfacesの内容を以下に書いていきます。
PC1
*******************************************
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.11
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
*******************************************
PC2
*******************************************
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.11
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
*******************************************
Server
*********************************************************
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback metwork interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
# The secondary network interface
auto eth1
iface eth1 inet static
address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
*********************************************************
次にip addr showコマンドの結果を載せます。
PC1
******************************************************************************************
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff (MACアドレスっぽいので伏せました)
inet 192.168.0.11/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 aaaa::bbbb:cccc:dddd:eeee/64 scope link
valid_lft forever preferred_lft forever
******************************************************************************************
PC2
******************************************************************************************
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 aaaa::bbbb:cccc:dddd:eeee/64 scope link
valid_lft forever preferred_lft forever
******************************************************************************************
Server
******************************************************************************************
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
inet 192.168.0.10/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 aaaa::bbbb:cccc:dddd:eeee/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 aaaa::bbbb:cccc:dddd:eeee/64 scope link
valid_lft forever preferred_lft forever
******************************************************************************************
最後に、ip route showの結果を載せます。
PC1
***************************************************************
default via 192.168.0.1 dev eth0
169.254.0.0/16 dev eth0 scope link metric 1000
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.11
***************************************************************
PC2
***************************************************************
default via 192.168.1.1 dev eth0
169.254.0.0/16 dev eth0 scope link metric 1000
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.11
***************************************************************
Server
***************************************************************
default via 192.168.0.1 dev eth0
169.254.0.0/16 dev eth0 scope link metric 1000
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.10
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10
***************************************************************
また、Serverにてtcpdumpを実行中にPC1から192.168.1.10へpingを投げますと、
**:**:**.****** ARP, Request who-has 192.168.1.1 tell 192.168.1.11, length 46
とログを出してます。
大変長くなりましたが以上です。
よろしくお願いします。
オフライン
予想通りですが、デフォルト ゲートウェイ (ルーティング テーブル) が正しく構成されていないようです。
インターネット接続を考慮しないとのことなので、PC1、PC2、SERVER の三台のみのネットワークと想定します。
この場合、PC1 の /etc/network/interfaces ファイルの gateway の行を以下の様に修正します
gateway 192.168.0.10
PC2 の /etc/network/interfaces ファイルの gateway の行を以下の様に修正します。
gateway 192.168.1.10
SERVER の /etc/network/interfaces ファイルの gateway の行はふたつとも不要です。(残っていても実害はありません。)
これらを修正して、それが反映されるよう念のため再起動して、疏通を確認してください。
オフライン
お早い返信大変感謝いたします。
指示通りの設定で無事pingが通ることを確認できました。
ありがとうございます。
欲を言えば解説を願いたいのですが、今回の問題点は何だったのでしょうか。
PC1→PC2へのpingはServerのeth0までは物理的に届くだろうし、
Serverは自身の持つNICであるeth1へとパケットを転送してくれるものだと思っていました。
そもそも各PCはpingを存在しないゲートウェイへ送っておりServerへ届いていなかったのでしょうか。
オフライン
IPv4 アドレスは 0 から 255 までの 4組の数 (0.0.0.0 ~ 255.255.255.255) で表されます。
0 から 255 の数は 8 桁の 2進数で表されます (0→00000000、1→00000001、2→00000010、...、255→11111111)
つまり IPv4 アドレスは 32 桁の 2進数 = 32bit の数値で表されるということです。
サブネット (サブネット マスク) も同様なので 32bit の数値で表せます。
ただし、サブネット マスクの場合は原則として最上位桁から 1 を連続させると言うルールがあります。
例えば サブネット マスクが 255.255.255.0 を 2進数で表すと 11111111 11111111 11111111 00000000 のように最上位桁から 1 が24個と 0 が 8個並びます。
さて、IPv4 アドレスとサブネット マスクを 2進数で上下に並べたとき、IPv4 アドレスの各桁に対応するサブネット マスクが 1 の桁だけを抜き出し、サブネット マスクが 0 の桁は 0 に置き換えたアドレスをネットワーク アドレスと呼びます。
例えば、IPv4 アドレスが 192.168.0.11 でサブネットマスクが 255.255.255.0 だと、そのネットワークアドレスは 192.168.0.0 です。
11000000 10101000 00000000 00001011 ← 192.168.0.11
11111111 11111111 11111111 00000000 ← 255.255.255.0
11000000 10101000 00000000 00000000 → 192.168.0.0
また、IPv4 アドレスが 192.168.1.11 でサブネットマスクが 255.255.255.0 だと、そのネットワーク アドレスは 192.168.1.0 です。
11000000 10101000 00000001 00001011 ← 192.168.1.11
11111111 11111111 11111111 00000000 ← 255.255.255.0
11000000 10101000 00000001 00000000 → 192.168.1.0
さて IPv4 で通信する場合、相手の IPv4 アドレスのネットワーク アドレスが同じだと直接その相手にパケットを送信します。
しかし相手のネットワーク アドレスが自分と異なるときは、相手にパケットを送るのでは無く、自身の経路情報テーブル (ルーティング テーブル) で指定されるルーター機器にパケットを送信します。
ルーター機能を有する機器以外では、通常では経路情報テーブルを用意することは無く、デフォルト ゲートウェイ (意味的に正確には「デフォルト ルーター」と呼ぶべき) だけを指定します。
デフォルト ゲートウェイは経路情報テーブルで指定されなかったネットワーク アドレス宛のパケットの送信先のルーターになります。
当然ですがデフォルト ゲートウェイに指定される機器のネットワーク アドレスは、自機のネットワーク アドレスと同じでなければなりません。
例えば、IPv4 アドレスが 192.168.0.11、サブネット マスクが 255.255.255.0、デフォルト ゲートウェイが 192.168.0.10 のとき、192.168.0.10 宛の ping は宛先が同じネットワーク アドレスなので、192.168.0.10 に直接送信されます。
192.168.1.11 宛の ping は宛先のネットワーク アドレスが自機のネットワーク アドレスと異なり、直接送信することはできず、代わりにデフォルト ゲートウェイ (192.168.0.10) に宛てて送信します。
192.168.0.11 から 191.168.1.11 宛のパケットを受け取った 192.168.0.10 は、受け取ったパケットを 192.168.1.11 に宛てて改めて送信 (転送) します。
192.168.0.10 は自分自身に 192.168.11.10 (サブネットマスク 255.255.255.0) という宛先と同じネットワーク アドレスのインターフェースがあるため、このインターフェースから 192.168.11.11 にパケットを直接送信できます。
このときのパケットは 192.168.10.10 (192.168.11.10 でもある) が受け取ったパケットをそのまま送信します。
このようにして 192.168.11.11 は 192.168.10.11 から送信された ping のパケットを受け取ります。
192.168.11.11 から 192.168.10.11 に返す ping の戻りパケットも、同様に 192.168.11.10 に送られ、192.168.11.10 (192.168.10.10 でもある) から 192.168.10.11 に転送されます。
詳しくは「サブネット ルーティング」あたりでググるなどして、学習してください。
オフライン
詳しい解説ありがとうございます。
改めて、ネットワークの仕組みを学ぶことができました。
自分は、ルータが異なるネットワーク内の端末同士を繋ぐために存在しているという
当たり前のことがよく理解できていなかったようです。
ですので、宛先ipアドレスがLAN内にない場合、ipフォワーディングが可能なServerが傍聴した結果
気を利かせて目的地まで繋いでくれる・・・なんて都合よく考えておりました。
ルータはゲートウェイとして指定されて始めてルーティングをするのですね。
例えば、LAN内にルータが複数ある場合などを考えれば、間違いだとわかります。
Ubuntuとは本来無関係ですし、これ以上はちゃんと自分で調べようと思います。
ここまでお付き合いいただきまして、重ねてお礼申し上げます。
オフライン