web-dev-qa-db-ja.com

Debianでの複数のサブインターフェースを介したルーティング

私の質問はタイトルと同じくらい簡単です、私は次のように、単一のインターフェースにDebian 6、2 NIC、3つの異なるサブネットを持っています:

auto eth0
iface eth0 inet static
    address 192.168.106.254
    netmask 255.255.255.0

auto eth0:0
iface eth0:0 inet static
    address 172.19.221.81
    netmask 255.255.255.248

auto eth0:1
iface eth0:1 inet static
    address 192.168.254.1
    netmask 255.255.255.248

auto eth1
iface eth1 inet static
    address 172.19.216.3
    netmask 255.255.255.0
    gateway 172.19.216.13

eth0は3つの異なるVLANを持つスイッチに接続され、eth1はルーターに接続されます。 iptables DROPがないため、すべてのトラフィックが許可されます。これで、トラフィックをeth0に渡すことはOKで、トラフィックをeth0:0に渡すことはOKですが、トラフィックをeth0:1に渡すことは機能しません。そのサブのIPアドレスに、pingを実行できます。このIPがデフォルトのゲートウェイであるが、eth1インターフェースのサブネット内のサーバーに到達できない、PCからのインターフェース、すべてのトラフィックをログに記録するようにiptablesを設定しても、トラフィックは通過しません。 FORWARD chainと私はそこにトラフィックを見ることができますが、トラフィックは実際には通過していません。面白いのは、eth1からeth0:1、RDP、telnet、pingなどを渡すことで、他の方法で実行できることです。

iptableでいくつかの作業を行っていると、eth0:1からeth1にトラフィックを渡すことができ、iptablesは次のようになります。

iptables -t nat PREROUTING -d 192.168.254.1/32 -p tcp -m multiport --dports 25,110,5269 -j DNAT --to-destination 172.19.216.1
iptables -t nat PREROUTING -d 192.168.254.1/32 -p udp -m udp --dport 53 -j DNAT --to-destination 172.19.216.9
iptables -t nat PREROUTING -d 192.168.254.1/32 -p tcp -m tcp --dport 21 -j DNAT --to-destination 172.19.216.11

iptables -t nat POSTROUTING -s 172.19.216.0/24 -d 172.19.221.80/29 -j SNAT --to-source 172.19.221.81
iptables -t nat POSTROUTING -s 172.19.216.0/24 -d 192.168.254.0/29 -j SNAT --to-source 192.168.254.1
iptables -t nat POSTROUTING -s 172.19.216.0/24 -o eth0 -j SNAT --to-source 192.168.106.254

これは機能していますが、各ポートをサーバーにマップする必要があるのは本当に頭痛の種です。サーバーからサービスを移動するかどうかを想像してみてください。
debianは複数のサブインターフェースを経由してルーティングできますか??これには限界がありますか?そうでない場合は、他のサブネットと同じ設定をしていて、正常に機能しているときに何が間違っているのでしょうか。 natにiptablesルールがないと、機能しません

ありがとう、そして私は良いコメント/回答を願っています

172.19.216.3のルート

root@dbf1:~# ip route
192.168.254.0/29 dev eth0  proto kernel  scope link  src 192.168.254.1
172.19.221.80/29 dev eth0  proto kernel  scope link  src 172.19.221.81
172.19.216.0/24 dev eth1  proto kernel  scope link  src 172.19.216.3
192.168.106.0/24 dev eth0  proto kernel  scope link  src 192.168.106.254
default via 172.19.216.13 dev eth1
1
Castro Roy

マシンがルートのない宛先にパケットを送信したい場合、マシンはそれをデフォルトゲートウェイに転送します。到達しようとしているマシンは、生成している応答パケットを使用してこれを実行しています。使用しているデフォルトゲートウェイマシンがこのマシンに到達する方法を知らない場合、このマシンがトラフィックを適切に送信していないように見えます。しかし、そうです。問題は、返信が返ってこないことにあります。

これはシーケンスです:

  1. このマシンは、パケットを正しいマシンに送信します。

  2. 宛先マシンはパケットを取得し、応答を形成します。応答のIP宛先は、受信したパケットの送信元です。

  3. 宛先マシンはローカルサブネット上にないため、このパケットの宛先へのルートはありません。そのため、デフォルトゲートウェイルーターに転送します。

  4. そのルーターもサブネット上にないため、その宛先に到達する方法がわかりません。そのため、デフォルトゲートウェイ(おそらくインターネット)を介して送信します。

ネットワークが正しく機能するためには、マシンのデフォルトゲートウェイであるデバイスは、到達方法を知っている必要がありますすべてクライアントが到達したいローカルサブネットまたはそれらのクライアントのそれぞれが到達するための独自の方法を持っている必要がありますそのサブネット。

1
David Schwartz