同じ物理ネットワーク上の2つのサブネット間のゲートウェイの設定

同じ物理ネットワーク上の2つのサブネット間のゲートウェイの設定

静的IPを使用する既存のネットワーク(192.168.1。)を含む物理層でDHCP対応ネットワーク(192.168.2。)を構成する必要があります。 2つのインターフェース(サーバーとインターフェースの両方が仮想的)を持つDebian 7サーバーがあり、IPを自分のネットワークのゲートウェイに設定したいと思います。 eth0を使用して元のネットワーク(192.168.1.5にアクセスするインターネットゲートウェイ)にパケットをルーティングし、eth1を使用して自分のネットワークからの着信トラフィックを処理します。

設定されている場合

eth0      Link encap:Ethernet  HWaddr 00:0c:29:d4:02:1b  
          inet addr:192.168.1.110  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fed4:21b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21668983 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10044848 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10931368249 (10.1 GiB)  TX bytes:2383839079 (2.2 GiB)

eth1      Link encap:Ethernet  HWaddr 00:0c:29:d4:02:25  
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fed4:225/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14113604 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11269734 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1871598524 (1.7 GiB)  TX bytes:10331981618 (9.6 GiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8158 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8158 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:629690 (614.9 KiB)  TX bytes:629690 (614.9 KiB)

路線

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.5     0.0.0.0         UG    0      0        0 eth0
localnet        *               255.255.255.0   U     0      0        0 eth0
192.168.2.0     *               255.255.255.0   U     0      0        0 eth1

iptables-vL

Chain INPUT (policy ACCEPT 5603K packets, 822M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy DROP 138K packets, 8597K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  14M 9542M ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
 398K   27M ACCEPT     all  --  eth1   any     anywhere             anywhere            

Chain OUTPUT (policy ACCEPT 2915K packets, 1432M bytes)
 pkts bytes target     prot opt in     out     source               destination         

iptables-tnat-vL

Chain PREROUTING (policy ACCEPT 607K packets, 49M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 112K packets, 17M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 6893 packets, 977K bytes)
 pkts bytes target     prot opt in     out     source               destination        

Chain POSTROUTING (policy ACCEPT 2391 packets, 374K bytes)
 pkts bytes target     prot opt in     out     source               destination         
 363K   24M MASQUERADE  all  --  any    eth0    anywhere             anywhere   

その後、eth1で特権DHCPサーバーを有効にしました。

これで問題は、サーバーへの接続が常にうまく機能することです(ここにSamba共有とMySQLサーバーがあります)。ただし、時々(ランダムに見える)クライアント(主にWindows 7またはXP)はさまざまな時間失敗します。インターネットに接続する。この場合、192.168.1.110ではpingできますが、192.168.1.5ではpingできません。

付録

FORWARDチェーンがパケットを破棄するという事実は疑わしいので、そのフィルタリングを一時的に無効にしました。

iptables -A FORWARD -j ACCEPT

この新しいルールを使用すると、すべてが正常です。しかし、まだ正確に何が起こっているのかを明確にする必要があります...

付録2

実際のiptablesルールは次のとおりです。

iptables - 保存

# Generated by iptables-save v1.4.14 on Fri Jun 27 20:53:32 2014
*mangle
:PREROUTING ACCEPT [28129147:14012989399]
:INPUT ACCEPT [8479051:1218948772]
:FORWARD ACCEPT [19639349:12792010625]
:OUTPUT ACCEPT [4434912:3183821941]
:POSTROUTING ACCEPT [23940877:15968783924]
COMMIT
# Completed on Fri Jun 27 20:53:32 2014
# Generated by iptables-save v1.4.14 on Fri Jun 27 20:53:32 2014
*nat
:PREROUTING ACCEPT [931027:74896097]
:INPUT ACCEPT [153578:23398245]
:OUTPUT ACCEPT [9169:1292388]
:POSTROUTING ACCEPT [3186:492868]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Jun 27 20:53:32 2014
# Generated by iptables-save v1.4.14 on Fri Jun 27 20:53:32 2014
*filter
:INPUT ACCEPT [2415796:331288771]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1218435:1654003511]
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -j ACCEPT
COMMIT
# Completed on Fri Jun 27 20:53:32 2014

答え1

iptablesチェーンを介してパケットが流れる場所を診断するのに役立つように-j LOGパラメータを使用し、最後に--log-prefix "kern.logまたはsyslogのログを簡単に識別できるいくつかのテキスト"を使用できますあります。デフォルトのAcceptポリシーを許可できます。ドロップされるパケットの種類をよりよく理解するために、ロギングが有効なFORWARDチェーンの末尾にすべての拒否ルールを追加します。

この回路図を見ることもできます。http://www.linuxnetmag.com/share/issue9/iptables3.jpg、iptables チェーン内のデフォルトのパケットフローを表示します。

より良い答えを提供するために定義した完全なiptableルールを持つことは興味深いでしょう。

関連情報