2つのネットワークカード(インターネット用のeth0、ローカルネットワーク用のeth1)を備えたDebian Squeezeサーバー(仮想サーバーのルーターおよびホストとして)があります。 KVMをインストールしたので、br0(eth0、vnet0)とbr1(eth1、vnet1)を作成しました。今、このサーバーでローカルネットワークアクセスを設定する必要がありますが、機能していません:(ローカルネットワークからインターネットにアクセスするにはどうすればよいですか(br1でトラフィックが来る)?LANでのインターネットアクセス以外はすべて正常に機能します。
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
ブリッジを使用しない場合、そのような構成は機能しています(eth0はbr0ではありません)。
うーん、iptablesにログインするように設定しましたが、br1からbr0へのトラフィックがありました。次に、br0でtcpdumpを確認したところ、ローカルネットワークからのすべてのパケットはローカルIPアドレスでした。もう一度iptablesをチェックし、同じiptablesコマンドを追加しました。
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
そして今それは働いていました...多分私は前にいくつかの他の間違いをしました...
MASQUERADE
ターゲットは、出力インターフェイスに設定されたIPを使用してトラフィックをソース変換するため、少し「魔法」です。
パラメータにパブリックIPアドレスを指定してSNAT
ターゲットを使用できます。
iptables -t nat -A POSTROUTING -o br0 --to-source W.X.Y.Z -j SNAT
MASQUERADE
ターゲットを使用したい場合(たとえば、パブリックIPが変更された場合)、パブリックアドレスが設定されているインターフェイスにルールを配置する必要があります。eth0:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE