web-dev-qa-db-ja.com

iptables / iprouteを使用したLinuxポートベースのルーティング

私は次の設定をしています:

192.168.0.4        192.168.0.6      192.168.0.1
+-----------+      +---------+      +----------+
|WORKSTATION|------|  LINUX  |------| GATEWAY  |
+-----------+      +---------+      +----------+
                   192.168.150.10
                        |
                   192.168.150.9
                   +---------+
                   |   VPN   |
                   +---------+
                   192.168.150.1

WORKSTATIONのデフォルトルートは192.168.0.6です。LINUXのデフォルトルートは192.168.0.1です。

ゲートウェイをデフォルトルートとして使用しようとしていますが、VPN経由でポート80トラフィックをルーティングします。私が読んだものに基づいて http://www.linuxhorizo​​n.ro/iproute2.html 私はこれを試しました:

echo "1 VPN" >> /etc/iproute2/rt_tables
sysctl net.ipv4.conf.eth0.rp_filter = 0
sysctl net.ipv4.conf.tun0.rp_filter = 0
sysctl net.ipv4.conf.all.rp_filter = 0

iptables -A PREROUTING -t mangle -i eth0 -p tcp --dport 80 -j MARK --set-mark 0x1
ip route add default via 192.168.150.9 dev tun0 table VPN
ip rule add from all fwmark 0x1 table VPN

LINUXで「tcpdump-ieth0 port 80」を実行し、WORKSTATIONでWebページを開くと、トラフィックがLINUXを通過するのがまったく表示されません。 WORKSTATIONからpingを実行すると、いくつかのパケットからこれが返されます。

92 bytes from 192.168.0.6: Redirect Host(New addr: 192.168.0.1)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 de91   0 0000  3f  01 4ed3 192.168.0.4  139.134.2.18

これが私のルーティングが機能しない理由ですか? WORKSTATIONがGATEWAYにリダイレクトされないようにするには、GATEWAYとLINUXを異なるサブネットに配置する必要がありますか? NATを使用する必要がありますか、それともルーティングのみでこれを行うことができますか(これが私が望むものです)?

4
Pawz Lion

「LINUX」は、「WORKSTATION」に、同じサブネット上にあるように見えるため、それ自体ではなく「GATEWAY」を使用するように指示しています。これは、「LINUX」でブリッジングを設定した場合にのみ機能し(brctl(8)を参照)、設定した場合、「WORKSTATION」はデフォルトルートで「GATEWAY」を使用する必要があります。

ブロードキャストドメインごとにサブネットを使用するようにしてください。ブロードキャストパケットはルーティングされないため、「LINUX」の3つのインターフェイスすべてに異なるサブネットが必要です(/ 30を使用できますが、拡張には/ 24を使用することをお勧めします)。またはそれを橋渡しさせます。 VPN自体にも別のサブネットを構成する必要があります。

次に、VPNサブネットをVPNテーブルに追加します。例:

ip route add 192.168.150.0/24 dev tun0 scope link table VPN proto static

このテーブルを使用するには、次のようなルーティングルールを追加します。

ip rule add fwmark 1 lookup VPN priority 500

また、万が一の場合に備えて、fwmarkルールを追加する前に、「VPN」と「GATEWAY」の両方を介してパケットをルーティングできるかどうかを確認してください。

また、リバースパスフィルターを無効にすることは有益ではないと思います。

2
Henk

この質問はかなり古いと思いますが、同じ問題を抱えている人に役立つ場合に備えて、簡単なメモを追加したいと思いました。 Henkが推奨するように、デバイスを異なるネットワークセグメントに分離するのがおそらく最善ですが、それが不可能な場合は回避策があります。

Linux(192.168.0.6)がワークステーション(192.168.0.4)にゲートウェイ(192.168.0.1)を使用するように指示する場合に発生するリダイレクトは、Linuxサーバー上の/etc/sysctl.confファイルに次の変更を加えることで無効にできます。 :

net.ipv4.conf.all.send_redirects = 1
0
Mike H.