「インターネット共有」の版間の差分
(同期) |
Kusakata.bot (トーク | 投稿記録) 細 (文字列「http://xyne.archlinux.ca/」を「https://xyne.archlinux.ca/」に置換) |
||
95行目: | 95行目: | ||
== 参照 == |
== 参照 == |
||
− | * [ |
+ | * [https://xyne.archlinux.ca/notes/network/dhcp_with_dns.html Xyne's guide and scripts for launching a subnet with DHCP and DNS] |
2018年2月6日 (火) 23:43時点における版
関連記事
この記事ではあるマシンと他のマシンでインターネット接続を共有する方法を解説します。
目次
要件
- サーバーとして機能するマシンにはネットワークデバイスを別に設定する必要があります。
- ネットワークデバイスはインターネットにアクセスするマシンと接続します。一つ、または複数のマシンを使うことができます。複数のマシンとインターネットを共有するにはスイッチが必要です。一つのマシンで共有する場合は、クロスオーバーケーブルで十分です。
設定
このセクションでは、クライアントのコンピュータに接続するネットワークデバイスの名前は net0、インターネットに接続するネットワークデバイスの名前は internet0 としています。
固定 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
設定した後は、再起動してから転送が有効になっているか確認するのを推奨します。
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
詳細は 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 ルールが設定されていないか確認してください。