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

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

答え2

ゲートウェイとして機能する 2 台の Linux コンピュータ間のルーティングが正常に機能するには、次の事項を満たす必要があります。

  • 両方のゲートウェイには、互いに物理リンク(または仮想マシンを接続する場合は仮想リンク)が必要です。
  • ルータの両方のインターフェイスにルートを追加する必要があります。

    route add -net 192.168.0.0/24 gw 192.168.0.1
    route add -net 192.168.1.0/24 gw 192.168.1.1
    
  • リモートネットワークの両方のゲートウェイにローカルゲートウェイを指定する必要があります。これにより、ローカルネットワーク上のコンピュータは、リモートネットワークにパケットを送信する場所を知ることができる。ゲートウェイは、リモートネットワークにパケットを送信するコンピュータのIPアドレスでなければなりません。

  • ネットワーク間でトラフィックを転送するコンピュータは、リモートネットワークとのトラフィックを処理するローカルゲートウェイも知っている必要があります。これは通常、ダイナミックホストコントロールプロトコル(DHCP)を介して行われますが、別のインターネットゲートウェイを使用する場合は、インターネットと他のネットワークにアクセスする必要があるコンピュータの両方で指定する必要があります(たとえば、DHCPや他のネットワークルーティング用のゲートウェイ)。
  • 両方のゲートウェイに対してIP転送が有効になっている必要があります。
  • ゲートウェイ間でNATが機能するには、IPマスカレーディングを有効にする必要があります。

    modprobe iptable_nat
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -A FORWARD -i eth1 -j ACCEPT
    

    マスカレーディングに同じインターフェイスを使用しているため、ソースとターゲットを指定する必要があります。

    iptables -t nat -A POSTROUTING -i eth0 -s 192.168.0.0/24 ! -d 192.168.1.0/24 -j MASQUERADE
    

    そして別のゲートウェイ:

    iptables -t nat -A POSTROUTING -i eth1 -s 192.168.1.0/24 ! -d 192.168.0.0/24 -j MASQUERADE   
    

    各ゲートウェイに対して、ローカルネットワークトラフィックは次のように適切なインターフェイスで許可される必要があります。

    iptables -A FORWARD -i eth0 -s 192.168.0.0/24 -j ACCEPT
    

    または

    iptables -A FORWARD -i eth1 -s 192.168.1.0/24 -j ACCEPT
    

持つたくさん リンクそして似たような 質問これは、あなたが直面している問題を解決するために参考資料を提供することができます。

この特別な場合の問題は、両方のシステムのルーティングとゲートウェイの設定が完了しておらず、iptablesを使用してネットワークアドレス変換(NAT)が有効になっていないため、ゲートウェイが別のサブネット上のシステムからの要求をホストできることです。それらの代わりに。

接続の一端を担当するので、インターネット接続を確立することも重要です(たとえば、LinuxコンピュータをPPPoE接続のゲートウェイとして使用)。

関連情報