与えられた: 3 つのネットワーク アダプターを備えた CentOS 8 搭載コンピューター。
eth0、eth2: 外部、2つの異なるISPに接続
eth1: ホームネットワーク(イントラネット)に接続
タスク: いずれかの ISP から特定の内部サービスにアクセスできるようにします。サービスは複数ありますが、以下では SSH についてのみ説明します。
以下の設定では、
IP1: 最初の ISP (ISP1) の外部 IP、eth0 に割り当てられています。
Gateway1: ISP1 によって提供されるゲートウェイの IP、
Network1、Netmask1: IP1 に関連します。 IP2:
2 番目の ISP (ISP2) の外部 IP、eth2 に割り当てられています。
Gateway2: ISP2 によって提供されるゲートウェイの IP、
Network2、Netmask2: IP2 に関連します。
LocalSSHIP: SSH サーバーが稼働しているイントラネット (eth1) の IP
現在の設定は次のとおりです。ルーティング テーブル:
echo "200 isp1" >> /etc/iproute2/rt_tables
echo "201 isp2" >> /etc/iproute2/rt_tables
ルーティングポリシー:
/etc/sysconfig/network-scripts/route-eth0
Network1 dev eth0 src IP1 table isp1
default via Gateway1 dev eth0 table isp1
/etc/sysconfig/ネットワークスクリプト/ルート-eth2
Network2 dev eth2 src IP2 table isp2
default via Gateway2 dev eth2 table isp2
ルーティングルール:
/etc/sysconfig/network-scripts/rule-eth0
from IP1/32 table isp1
/etc/sysconfig/ネットワークスクリプト/ルール-eth2
from IP2/32 table isp2
iptables スニペット。両方のインターフェースからローカル SSH サーバーに転送される外部トラフィック:
iptables -A PREROUTING -t nat -i eth0 -p tcp -d IP1 --dport 22 -j DNAT --to LocalSSHIP:22
iptables -A PREROUTING -t nat -i eth2 -p tcp -d IP2 --dport 22 -j DNAT --to LocalSSHIP:22
iptables -A FORWARD -p tcp -d LocalSSHIP --dport 22 -j ACCEPT
eth0はデフォルトゲートウェイです:
$ ip route
default via Gateway1 dev eth0 proto static metric 100
default via Gateway2 dev eth2 proto static metric 101
...
$ ipルール
0: from all lookup local
32764: from IP2 lookup isp2
32765: from IP1 lookup isp1
32766: from all lookup main
32767: from all lookup default
eth1 から発信されるトラフィックには SNAT が適用されます。
iptables -t nat -A POSTROUTING -i eth1 -o eth0 -j SNAT --to-source IP1
現在の状況:
- eth0 から転送されるすべてのサービスは正常に動作しています。
- イントラネットから発信されるすべてのトラフィックは正常に送受信されます。
- eth2 からサービスにアクセスしようとするすべての試行がタイムアウトになります。
/var/log/messages には明らかなヒントはありません (「martian IP」に関する苦情など)。
私は少し困惑しています。あらゆるアドバイスをいただければ幸いです。