Linuxをゲートウェイとして使用するには?

Linuxをゲートウェイとして使用するには?

注:クライアントデバイス(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

以前のルックアップテーブルを使用して、外部インターフェイスに到着したパケットが実際に内部で開始された接続に属していることを確認してください。

おすすめ記事