最新のRaspbianを実行しているPIをネットワークブリッジとして使用したいのですが、それが正確に正しい用語かどうかはわかりませんが、目標は簡単に説明できます。
PIはDHCPを実行しません。そのeth0はアドレスマスク255.255.255.0で静的IP 192.168.0.1を使用するように構成され、ルーターはIP 192.168.0.2、同じアドレスマスクおよび192.168.0.1を使用するように構成されますゲートウェイ。
テストでは、PI自体がオンラインであるという事実に加えて、次のことがわかります。
ネットワーキングに関してはすべてが問題ないように見えますが、おそらくパケット転送ルールがないか間違っているために、LANデバイスからインターネットにアクセスできません。 eth0に到着するすべてのパケットをIP 192.168.0.2からusb0の動的IPに転送するルールは何ですか+戻ってくる途中の「応答パケット」の対応物?すべての着信要求をブロックするルールと組み合わせて後者ですか?
ありがとう!
@BillThorの答えとこれのおかげで tutorial 私は軌道に乗ることができました。ルーティングとファイアウォールの側面を混同しないことが重要です。ルーティングには特別な転送ルールは必要ありません。IPマスカレードが有効になっている場合、これは「含まれています」。 IPマスカレードを有効にするコマンドは次のとおりです。
$> Sudo sysctl -w net.ipv4.ip_forward=1
カーネルでIP転送を有効にし、
$> Sudo iptables -t nat -A POSTROUTING -o <wan_network_interface> -j MASQUERADE
<wan_network_interface>
を使用して、インターネット接続を提供するネットワークインターフェース、私の場合はusb0
を使用します。これは、FORWARDのデフォルトのファイアウォールポリシーがACCEPTである限り機能します(他のルールでは明示的に許可されていません)。 iptables -S
が返された場合
OUTPUT DROP FORWARD ACCEPT INPUT DROP
FORWARDのデフォルトポリシーをDROPに変更すると、次のルールによりインターネット接続の共有が有効になります。$> Sudo iptables -A FORWARD -i <shareconn_nw_intf> -o <online_nw_intf> -j ACCEPT $> Sudo iptables -A FORWARD -i <online_nw_interface> -o <shareconn_nw_interface> -j ACCEPT
パケットがIPマスカレードによってnot開かれていたポートの<online_nw_interface>
に到着した場合、どうなるかまだ疑問がありますか? INPUTと見なされますか、それとも上記の最後のFORWARDルールが適用されますか?つまり、これらのFORWARDルールは、他の場所(マスカレード)で行われた転送決定を受け入れるようにファイアウォールを構成しているようですが、実際にはiptablesに何かを転送するように指示していません。直感に反することがわかりますが、転送ルールを保持したままマスカレードルールを削除すると、インターネットに接続できなくなります。
マスカレードを有効にすると、すべての発信トラフィックがPiからのように見えるようになります。出発点はこれらのルールでしょう。
Sudo sysctl -w net.ipv4.ip_forward=1
Sudo iptables -A FORWARD -i eth0 -j ACCEPT
Sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
チェーンに適切なポリシーを設定する必要があります。おそらく、WANインターフェースで予期しないパケットをドロップし、eth0インターフェースでパケットを拒否するという追加のルールを使用します。
IPv6を使用できる場合、これにはネットワークアドレス変換は必要ありませんが、個別のip6tables実装があります。別のshorewall6
これを設定するパッケージ。shorewall
で使用できるpi
のようなツールを使用して設定する方が簡単な場合があります。 Shorewall サイトには、独自のルールまたはshorewall
ツールのみを構築するために使用できる多くのドキュメントがあります。