
주어진: 3개의 네트워크 어댑터가 있는 CentOS 8 기반 컴퓨터.
eth0, eth2: 외부, 두 개의 서로 다른 ISP에 연결
eth1: 홈 네트워크(인트라넷)에 연결
작업: ISP 중 하나에서 특정 내부 서비스에 액세스하도록 허용합니다. 여러 서비스가 있는데 아래에서는 SSH만 언급하겠습니다.
아래 구성에서:
IP1: 첫 번째 ISP(ISP1)의 외부 IP, eth0에 할당
Gateway1: ISP1에서 제공하는 게이트웨이의 IP
Network1,Netmask1: IP1과 관련
IP2: 두 번째 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/network-scripts/route-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/network-scripts/rule-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 경로
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
SNAT는 eth1에서 발생하는 트래픽에 적용됩니다.
iptables -t nat -A POSTROUTING -i eth1 -o eth0 -j SNAT --to-source IP1
현재 상황:
- eth0에서 전달된 모든 서비스가 정상적으로 작동합니다.
- 인트라넷에서 발생하는 모든 트래픽은 정상적으로 전달되고 돌아옵니다.
- eth2에서 서비스에 액세스하려는 모든 시도가 시간 초과되었습니다.
/var/log/messages에는 명확한 힌트(예: "화성 IP"에 대한 불만 사항)가 없습니다.
나는 여기서 다소 당황스럽습니다. 모든 조언은 매우 환영받을 것입니다.