注:クライアントデバイス(
computer B
この例では)がゲートウェイシステムを介してインターネットに接続する場合は、ネームサーバー検証を設定する必要があります。ここではこれを説明しません(ゲートウェイが必ずしもインターネットを提供するわけではありません)。
ネットワークルーティングの基本を理解しようとしています。
だから私はこれを私のLANで試しています(今はインターネットを必要とせず、LAN通信だけが必要です)。
ネットワーク構成の問題がかなり複雑であることはわかりますが、ただコンピュータを作成したいです(例:A)。ゲートウェイとして機能他のもの(例:B)(どちらもUbuntu Linuxを実行しています)。
Aのみがアクセスできるルーターにアクセスするには、Bのみが必要です。
状況はこんな感じです。
Router for computer A --> 192.168.0.1
Computer A - eth0 --> 192.168.0.2
Computer A - eth1 --> 192.168.1.1
Computer B - eth0 --> 192.168.1.2
コンピュータ接続とても良いルーター。
コンピュータAとB接続状態が良好(ping、SSH...など)それらの間。
コンピュータBはできるルータに接続できません。コンピュータAの場合
コンピュータBに追加することができたようだった。Aをデフォルトゲートウェイとして使用有効にしてAのIP転送BがAのルーターに到達できるようにします。
luis@ComputerB:~$ sudo route add default gw 192.168.1.1
luis@ComputerB:~$ sudo routel
target gateway source proto scope dev tbl
127.0.0.0 broadcast 127.0.0.1 kernel link lo local
127.0.0.0 8 local 127.0.0.1 kernel host lo local
127.0.0.1 local 127.0.0.1 kernel host lo local
127.255.255.255 broadcast 127.0.0.1 kernel link lo local
192.168.1.0 broadcast 192.168.1.2 kernel link eth0 local
192.168.1.2 local 192.168.1.2 kernel host eth0 local
192.168.1.255 broadcast 192.168.1.2 kernel link eth0 local
default 192.168.1.1 eth0
169.254.0.0 16 link eth0
192.168.1.0 24 192.168.1.2 kernel link eth0
コンピュータA(中間ゲートウェイ)から:
root@ComputerA:~$ echo 1 > /proc/sys/net/ipv4/ip_forward
コンピュータBはまだコンピュータAに対してpingを実行できますが、Aのルータは応答しません。
luis@ComputerB:~$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
^C
(pingレスなし)
これだよな?正しい手順Linuxを実行している1つのコンピュータが簡単な方法で他のコンピュータのゲートウェイとして機能するようにしますか?
ベストアンサー1
ほぼすべて来ました。トラフィックがBに戻ることを確認するだけです。 Bから外部の世界にトラフィックを転送しましたが、AはトラフィックをBに戻す方法がわかりません。接続全体で一部の状態を維持するには、A が必要です。これを行うには有効にする必要があります。ネットワークアドレス変換。最初のステップを完了して配信を許可しました。次に、次のコマンドを使用していくつかのファイアウォールルールを追加する必要がありますiptables
。
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
これが意味するのは、ネットワークアドレス変換テーブルからeth0(外部)に出てくるパケットの経路を把握した後、戻りアドレス情報を私たち自身のアドレス情報に置き換えて返りパケットが私たちに届くようにするということです。また、私たちがこれを行ったことを覚えておいてください(この接続のルックアップテーブルを覚えているのと同じです)。
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
eth1(内部インタフェース)のパケットがeth0(外部インタフェース)から出ることを許可します。
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
以前のルックアップテーブルを使用して、外部インターフェイスに到着したパケットが実際に内部で開始された接続に属していることを確認してください。