「インターネット共有」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
22行目: 22行目:
 
* ネットワークデバイスはインターネットにアクセスするマシンと接続します。一つ、または複数のマシンを使うことができます。複数のマシンとインターネットを共有するには[[Wikipedia:ja:スイッチングハブ|スイッチ]]が必要です。一つのマシンで共有する場合は、[[Wikipedia:ja:イーサネット・クロスオーバー・ケーブル|クロスオーバーケーブル]]で十分です。
 
* ネットワークデバイスはインターネットにアクセスするマシンと接続します。一つ、または複数のマシンを使うことができます。複数のマシンとインターネットを共有するには[[Wikipedia:ja:スイッチングハブ|スイッチ]]が必要です。一つのマシンで共有する場合は、[[Wikipedia:ja:イーサネット・クロスオーバー・ケーブル|クロスオーバーケーブル]]で十分です。
   
  +
{{Note|片方のコンピュータにギガビットイーサネットカードを挿している場合、クロスオーバーケーブルは必要ありません。通常のイーサネットケーブルで動作します。}}
{{Note|If one of the two computers has a gigabit ethernet card, a crossover cable is not necessary and a regular ethernet cable should be enough}}
 
   
 
== 設定 ==
 
== 設定 ==
52行目: 52行目:
 
net.ipv6.conf.all.forwarding=1
 
net.ipv6.conf.all.forwarding=1
 
</nowiki>}}
 
</nowiki>}}
  +
  +
設定した後は、再起動してから転送が有効になっているか確認するのを推奨します。
  +
  +
{{Note|[[systemd-networkd]] はバージョン 220/221 から新しいフォワーディングセマンティクスを導入しています [https://github.com/systemd/systemd/blob/a2088fd025deb90839c909829e27eece40f7fce4/NEWS]。systemd-networkd を使ってネットワークインターフェイスを制御している場合、デフォルトで、systemd-networkd が {{ic|net.*.ip_forward}} の設定を上書きして、転送をオフにしてしまいます。systemd-networkd で上記の設定を使うには systemd-networkd のインターフェイス設定ファイルで {{ic|1=IPForward=kernel}} と設定する必要があります (詳しくは {{ic|man 5 systemd.network}} を参照)。}}
   
 
=== NAT の有効化 ===
 
=== NAT の有効化 ===
67行目: 71行目:
 
=== クライアント PC に IP アドレスを割り当てる ===
 
=== クライアント PC に IP アドレスを割り当てる ===
   
  +
定期的に、複数のマシンで、設定したマシンのインターネット共有を使う場合、[[Wikipedia:ja:Dynamic Host Configuration Protocol|dhcp サーバー]]をインストールすると良いでしょう。
If you are planning to regularly have several machines using the internet shared by this machine, then is a good idea to install a [[Wikipedia:dhcp|dhcp server]].
 
   
  +
[[dhcpd]] の wiki 記事を読んで dhcp サーバーを追加することができます。その後、クライアント pc に [[dhcpcd]] クライアントをインストールしてください。
You can read the [[dhcpd]] wiki article, to add a dhcp server. Then, install the [[dhcpcd]] client on every client pc.
 
   
  +
特に定期的に使うというわけではないのであれば、手動でクライアントに ip を追加する方法もあります。
If you are not planing to use this setup regularly, you can manually add an ip to each client instead.
 
   
 
==== 手動で IP を追加 ====
 
==== 手動で IP を追加 ====
   
  +
dhcp を使わない場合、クライアント pc で、ip アドレスとデフォルトルートを追加:
Instead of using dhcp, on each client pc, add an ip address and the default route:
 
 
# ip addr add 192.168.123.201/24 dev eth0 # arbitrary address, first three blocks must match the address from above
 
# ip addr add 192.168.123.201/24 dev eth0 # arbitrary address, first three blocks must match the address from above
 
# ip link set up dev eth0
 
# ip link set up dev eth0
 
# ip route add default via 192.168.123.100 dev eth0 # same address as in the beginning
 
# ip route add default via 192.168.123.100 dev eth0 # same address as in the beginning
   
  +
全てのクライアントで DNS サーバーを設定してください。詳しくは [[resolv.conf]] を参照。
Configure a DNS server for each client, see [[resolv.conf]] for details.
 
   
  +
これでクライアント PC はインターネットに接続されるはずです。
That's it. The client PC should now have Internet.
 
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
  +
PC に接続することはできながら、データを送信することはできない場合 (例えば、クライアント PC がサーバー PC に DHCP リクエストを送った場合、サーバー PC はリクエストを受け取ってクライアントに IP を返すが、クライアントがそれを受け取れずに、タイムアウトしてしまう等)、[https://bbs.archlinux.org/viewtopic.php?pid=1093208 干渉する] [[Iptables]] ルールが設定されていないか確認してください。
If you are able to connect the two PCs but cannot send data (for example, if the client PC makes a DHCP request to the server PC, the server PC receives the request and offers an IP to the client, but the client does not accept it, timing out instead), check that you don't have other [[Iptables]] rules [https://bbs.archlinux.org/viewtopic.php?pid=1093208 interfering].
 
   
 
== 参照 ==
 
== 参照 ==

2015年7月10日 (金) 10:27時点における版

関連記事

この記事ではあるマシンと他のマシンでインターネット接続を共有する方法を解説します。

要件

  • サーバーとして機能するマシンにはネットワークデバイスを別に設定する必要があります。
  • ネットワークデバイスはインターネットにアクセスするマシンと接続します。一つ、または複数のマシンを使うことができます。複数のマシンとインターネットを共有するにはスイッチが必要です。一つのマシンで共有する場合は、クロスオーバーケーブルで十分です。
ノート: 片方のコンピュータにギガビットイーサネットカードを挿している場合、クロスオーバーケーブルは必要ありません。通常のイーサネットケーブルで動作します。

設定

このセクションでは、クライアントのコンピュータに接続するネットワークデバイスの名前は net0、インターネットに接続するネットワークデバイスの名前は internet0 としています。

ヒント: Udev#固定デバイス名の設定を使ってデバイスの名前は変更することができます。

固定 IP アドレス

他のマシンに接続したインターフェイスに固定 IPv4 アドレスを割り当てます。アドレスの頭3バイトは他のインターフェイスのアドレスの頭3バイトと違っている必要があります。

# ip link set up dev net0
# ip addr add 192.168.123.100/24 dev net0 # arbitrary address

起動時に固定 ip を割り当てたい場合、netctl を使います。

パケット転送の有効化

現在のパケット転送の設定をチェック:

# sysctl -a | grep forward

次のコマンドを実行して一時的にパケット転送を有効化:

# sysctl net.ipv4.ip_forward=1

再起動した後も設定が残るようにするには /etc/sysctl.d/30-ipforward.conf を編集:

/etc/sysctl.d/30-ipforward.conf
net.ipv4.ip_forward=1
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1

設定した後は、再起動してから転送が有効になっているか確認するのを推奨します。

ノート: systemd-networkd はバージョン 220/221 から新しいフォワーディングセマンティクスを導入しています [1]。systemd-networkd を使ってネットワークインターフェイスを制御している場合、デフォルトで、systemd-networkd が net.*.ip_forward の設定を上書きして、転送をオフにしてしまいます。systemd-networkd で上記の設定を使うには systemd-networkd のインターフェイス設定ファイルで IPForward=kernel と設定する必要があります (詳しくは man 5 systemd.network を参照)。

NAT の有効化

公式リポジトリから iptables パッケージをインストールしてください。iptables を使って NAT を有効化:

# iptables -t nat -A POSTROUTING -o internet0 -j MASQUERADE
# iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i net0 -o internet0 -j ACCEPT
ノート: Of course, this also works with a mobile broadband connection (usually called ppp0 on routing PC).

詳細は iptables の記事を読んで下さい (特に、ルールの保存と、起動時に自動的にルールを適用させる方法の項)。iptables についてはシンプルなステートフルファイアウォールのページでも詳しい解説をしています。

クライアント PC に IP アドレスを割り当てる

定期的に、複数のマシンで、設定したマシンのインターネット共有を使う場合、dhcp サーバーをインストールすると良いでしょう。

dhcpd の wiki 記事を読んで dhcp サーバーを追加することができます。その後、クライアント pc に dhcpcd クライアントをインストールしてください。

特に定期的に使うというわけではないのであれば、手動でクライアントに ip を追加する方法もあります。

手動で IP を追加

dhcp を使わない場合、クライアント pc で、ip アドレスとデフォルトルートを追加:

# ip addr add 192.168.123.201/24 dev eth0  # arbitrary address, first three blocks must match the address from above
# ip link set up dev eth0
# ip route add default via 192.168.123.100 dev eth0   # same address as in the beginning

全てのクライアントで DNS サーバーを設定してください。詳しくは resolv.conf を参照。

これでクライアント PC はインターネットに接続されるはずです。

トラブルシューティング

PC に接続することはできながら、データを送信することはできない場合 (例えば、クライアント PC がサーバー PC に DHCP リクエストを送った場合、サーバー PC はリクエストを受け取ってクライアントに IP を返すが、クライアントがそれを受け取れずに、タイムアウトしてしまう等)、干渉する Iptables ルールが設定されていないか確認してください。

参照