
次の設定があります。ノード1とノード2はLANにあります。両方とも、eth0ネットワークカードを使用してLANに接続します。どちらもDebianシステムです。また、 node1 は wlan0 ネットワークカードを使用してインターネットに接続します。ノード1とノード2の両方がインターネットにアクセスできると予想しています。
この設定ではインターネットにアクセスできません。カーネル IP はルータにデフォルトのルールを表示します。
基本的には2つの問題があります。
質問1:
ノード1から
この設定を有効にすると、node1:kernel ipテーブルにeth0を介したデフォルトのルールが表示されます。したがって、router1 / LANに接続してください。 IPパスdelを試して、新しいデフォルトルールデバイスwlan0を追加しました。 IPテーブルは良く見えます(少なくともwlan0を介して期待できる基本的な規則)。しかし、まだインターネットに接続されていません。 Q1:システムの動作を変更するための基本ルールを削除して追加する正しい方法ですか?パケットを送信するデバイスを選択する必要があります。または追加の設定が必要です。
今好奇心に開発者を覆した。 wlan0ネットワークカードがLANに接続され、eth0がrouter2(外部ネットワーク)に接続されていることを示します。 ip テーブルには eth0 の基本ルールが表示されます。今回は、eth0がrouter2に接続され、インターネットに接続されます。 ping、ナビゲーションなどを実行できます。 Q2:eth0は常にデフォルトのルールに使用されますか?別のネットワークカードに変更する方法これはwlan0です。
質問2:
ノード2で
ただし、ノード2から始まると、ノード2はインターネット接続を確立しないため、この成功はもはや持続できません。これは静的構成であり、GWをノード1のIPアドレスと呼びます。
質問3:これは正しいですか?または、node1またはrouter-2でSNATまたはMASQRADEタイプの設定を実行する必要がありますか?インターネット接続のためにここで欠けているものは何ですか?
上記のシナリオについていくつかの説明を提供しました。まだコメントする権限がないため、一部のコメントの説明も含まれています。
ノード2(LANに多くのシステムがある場合)からのインターネットアクセスは、ノード1を介してのみ可能です。 LANルーター(router-1)ではdhcpが有効になっており、すべてのノードが対応するクライアントです。インターネットルーター2と同じです。
したがって、この場合、node-1に特別な設定が必要ですか?
ノード1でのIPルーティング:デフォルトはdev eth0によって設定されます。ノード2でのIPルーティング:デフォルトはdev eth0によって設定されます。
もう1つのトリッキーな質問ですが、それほど重要ではないのは、eth0を使用してインターネットルーターに接続することでこの問題を解決できることです。私はなぜ基本的にeth0を介して常に接続されているのか尋ねました。 wlan0に接続されたゲートウェイを強制的に使用するにはどうすればよいですか(私の場合)。私のデフォルトの削除/追加は機能しません。
答え1
追加情報がなくても、ノード1またはノード2にはSNATまたはMASQUERADEは必要ありません。これはインターネットに接続されているシステム(おそらくルーター)を介して行う必要があります。
ただし、ノード2のトラフィックをノード1を介してルーティングする必要がある場合、ノード1はノード2に対してSNATまたはMASQUERADEを実行する必要があります(ノード1のゲートウェイ/ルーターによって実行されるSNAT / MASQUERADEに加えて)。
答え2
Node-1でIP転送を有効にしましたか?努力する:
sysctl -w net.ipv4.ip_forward=1
機能する場合は、/etc/sysctl.confに次の行を追加して永久に作成します
net.ipv4.ip_forward = 1
(0に設定した同様の行が削除またはコメントアウトされていることを確認してください)。
答え3
ここでは、LAN上のすべてのインターネットトラフィックがノード1を通過する必要があると仮定します(あなたの目標)。 IP4のみを使用してください。前述したように、ノード1はすでにインターネットに接続されています。
ノード2から:カーネルIPテーブルのデフォルトルールはノード1としてGWを持ち、dev eth0を使用する必要があります。
ノード1:上記の前提に基づいて、デフォルトルールはGWを「ルーター2」dev eth0に設定する必要があります。
さらに、次のものがtrueまたは追加される必要があります。 1) IP_FORWARD フラグ。
ipv4.ip_forward flag must be set to 1. (use sysctl or change the sysctl conf file variable)
# sysctl -w net.ipv4.ip_forward="1"
注:再起動後も保持されません。
2) フィルタリングテーブルに IP 転送ルールを追加します。これにより、デバイスeth1のすべてのトラフィックがeth0に転送されます。
# iptables -t filter -A FORWARD -i eth1 -o eth0 -j ACCEPT
3)発信IP遮断
Qu:ルータ2からインターネットにトラフィックを送信するためにノード1から出てくるIPをマスクする必要がある場合、誰がこのMASQUERADEを実行しますか?回答:Router-2はデフォルトでこれを行います。
Qu:それでは、ルーター2をノード2またはLAN上の他のコンピューターで使用できないのはなぜですか?
答え:ノード2と他のノードはルーター2のドメインに属していないからです。この場合、ノード1はLANに接続されている他のすべてのノードに対して明示的にMASQUERADINGを実行する必要があります。したがって、この段階です。
# iptables -nat -A POSTROUTING --out-interface eth0 -j MASQUERADE
# iptables save
これで、ノード2またはLANに接続されている他のシステムからインターネットに接続できるようになりました。
メモ:ただし、ノード 1 が再起動した後、上記の内容は保持されません。最後に作る方法は扱いません。
気づく:router-2のNICがwlan0の場合、AP(router-2)はMASQURADE node-2パケットを拒否できるため、上記の方法が機能するかどうかはわかりません。 eth0@node-1のmac idはAPに登録されていないため、wlan0とは異なります。ここでは、eth0パケットのmacアドレスをwlan0アドレスに明示的に変更する必要があります。教えてください。