GNU/Linux >> Linux の 問題 >  >> Linux

ソースベースのポリシー ルーティングと NAT (DNAT/SNAT)、別名 CentOS 5 のマルチ WAN

さて...

何千時間ものデバッグ、さまざまなセットアップの試行、本番環境での 72 時間の厳しいテストの後、正しい解決策/セットアップを見つけることができました。問題は iptables ルール (mangle セクション) にありました。しかし、彼らが出てきたとき、dnat'ted パケットには何もありませんでした。とにかく、これが私の問題に対する最終的な解決策です:

/etc/sysconfig/iptables :

*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# Basic Rules
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT

# SSH
-A INPUT -i eth0 -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -i eth2 -m tcp -p tcp --dport 22 -j ACCEPT

# OpenVPN
-A INPUT -i eth0 -m udp -p udp --dport 1194 -j ACCEPT
-A INPUT -i eth2 -m udp -p udp --dport 1194 -j ACCEPT

# Allow everything from LAN
-A INPUT -i eth1 -j ACCEPT

# Allow everything from the VPN
-A INPUT -i tun0 -j ACCEPT

# Default Drop on everything else
-A INPUT -j DROP

# Allow forwarding from LAN and VPN
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -i tun0 -j ACCEPT

# Allow all outbound traffic
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth1 -j ACCEPT
COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# DNAT to Developer Box (SSH Server)
-A PREROUTING -i eth0 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 10.0.0.200:2222
-A PREROUTING -i eth2 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 10.0.0.200:2222

# SNAT
-A POSTROUTING -o eth0 -j SNAT --to-source 10.0.1.1
-A POSTROUTING -o eth2 -j SNAT --to-source 10.0.2.1
COMMIT

*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# CONNMARK Source Based Routing
-A PREROUTING -i eth0 -m state --state NEW,RELATED,ESTABLISHED -d 10.0.1.1 -j CONNMARK --set-mark 0x2
-A PREROUTING -i eth2 -m state --state NEW,RELATED,ESTABLISHED -d 10.0.2.1 -j CONNMARK --set-mark 0x3
-A PREROUTING -i eth1 -m connmark --mark 0x2 -j CONNMARK --restore-mark
-A PREROUTING -i eth1 -m connmark --mark 0x3 -j CONNMARK --restore-mark
-A OUTPUT -m state --state ESTABLISHED,RELATED -j CONNMARK --restore-mark
COMMIT

明らかに、iproute と gwping (リンクのロード バランシングとフェイルオーバー用) に関連する以前のすべてのセットアップに加えて、ソース [1] と [2] のおかげで解決策が可能になりました。解決策の PREROUTING 部分と OUTPUT 部分の Karl Bowden) に加えて、他の Web サイトのソースもここにあり、正しい方向性を示してくれました。これが将来別のシステム管理者に役立つことを願っています。

よろしくお願いします

ソース:

[1]www.nervous.it/2010/09/dnat-and-ip-source-routing-woes/
[2]blog.khax.net/2009/12/01/multi-gateway-balancing-with-iptables/
[3]home.regit.org/netfilter-en/links-load-balancing/
[4]mailman.ds9a.nl/pipermail/lartc/2006q2/018964.html
[5]web.archive.org/web/20120320115329/http://versa.net.au/index.php?option=com_content&task=view&id=21&Itemid=34

2013 年 10 月 10 日更新

OpenVPN では、複数の WAN セットアップ (前のものと同様) で動作するために追加の構成ディレクティブが必要です。特定の ip) で、準備完了です。


Linux
  1. Linuxソースルーティング、ストロングエンドシステムモデル/ストロングホストモデル?

  2. 2つのWanからのメールを受け入れるようにPostfixを設定しますか?

  3. IPTables Flush:RedHat および CentOS Linux でのすべてのルールの削除/削除

  1. CentOS / RedHat でソースから RPM パッケージをビルドする 7 つの手順

  2. CentOS / RHEL :新しい LVM ベースのスワップ パーティションを作成する方法

  3. Linux:ドメイン名に基づくルーティング

  1. CentOS7でソースからBrotliをコンパイルする方法

  2. SSL を使用して CentOS 6.2 にソースから Apache 2.4.2 をインストールする方法

  3. CentOS 6 に Apache CouchDB をインストールする方法 (ソースおよび EPEL から)