VPN 다중 사이트 라우팅

VPN 다중 사이트 라우팅

현재 다중 사이트(3개 사이트) VPN을 설정하고 있습니다.

다음은 빠른 그림입니다.

여기에 이미지 설명을 입력하세요

지금까지 설정은 양호하며 예상대로 작동합니다. 핑 10.10.20.1 <-> 10.10.10.1 및 10.10.30.1 <-> 10.10.10.1이 정상적으로 작동합니다.

이제 10.10.20.1에서 10.10.30.1로 연결하는 방법을 알아보고 싶습니다.

이 작업을 수행해야 할 것 같습니다 iptables. 맞나요?

누군가 어떤 단계가 필요한지, 왜 나에게 많은 도움이 되는지 설명할 수 있다면!

답변1

NAT를 사용하지 마세요. NAT는 가능한 한 피해야 할 골치 아픈 문제입니다. 이는 TCP/IP의 기초로 사용되는 엔드투엔드 원칙을 깨뜨립니다.

고정 경로를 사용하면 터널을 가리켜야 합니다. 라우터가 라우팅 정보(OSPF 등)를 교환하면 경로가 자동으로 나타나야 합니다. 터널을 작동하려면 정적 경로가 필요할 수 있습니다(동적 라우팅은 터널이 작동된 후에만 업데이트됩니다).

답변2

나는 그것을 알아. 길고 빠른 해결책은 다음과 같습니다.

긴 (완전히는 아님) 솔루션

하단 서버에서:

iptables -A FORWARD -s 10.10.30.0/24 -d 10.10.20.0/24 -i enp2s0 -m policy --dir in --pol ipsec --reqid 2 --proto esp -j ACCEPT
iptables -A FORWARD -s 10.10.20.0/24 -d 10.10.30.0/24 -o enp2s0 -m policy --dir out --pol ipsec --reqid 2 --proto esp -j ACCEPT
iptables -A FORWARD -s 10.10.20.0/24 -d 10.10.30.0/24 -i enp2s0 -m policy --dir in --pol ipsec --reqid 1 --proto esp -j ACCEPT
iptables -A FORWARD -s 10.10.30.0/24 -d 10.10.20.0/24 -o enp2s0 -m policy --dir out --pol ipsec --reqid 1 --proto esp -j ACCEPT

왼쪽 상단 서버에서:

ip route add 10.10.30.0/24 via 138.x.x.1 dev eth0 proto static src 10.10.20.1 table 220
iptables -A FORWARD -s 10.10.30.0/24 -d 10.10.20.0/24 -i eth0 -m . policy --dir in --pol ipsec --reqid 2 --proto esp -j ACCEPT
iptables -A FORWARD -s 10.10.20.0/24 -d 10.10.30.0/24 -o eth0 -m policy --dir out --pol ipsec --reqid 2 --proto esp -j ACCEPT

오른쪽 상단 서버에서:

ip route add 10.10.20.0/24 via 108.x.x.1 dev eth0 proto static src 10.10.30.1 table 220
iptables -A FORWARD -s 10.10.20.0/24 -d 10.10.30.0/24 -i eth0 -m policy --dir in --pol ipsec --reqid 2 --proto esp -j ACCEPT
iptables -A FORWARD -s 10.10.30.0/24 -d 10.10.20.0/24 -o eth0 -m policy --dir out --pol ipsec --reqid 2 --proto esp -j ACCEPT

라우팅이 작동하지만 Strongswan은 tcpdump가 공개된 것처럼 연결을 금지하고 있습니다.

[bottom]$ tcpdump -nni enp2s0 icmp
15:35:22.512437 IP 109.x.x.x > 85.x.x.x: ICMP host 109.x.x.x unreachable - admin prohibited, length 48

빠른 솔루션

Strongswan/ipsec이 모든 iptable 및 고정 경로를 관리하고 지정된 서브넷에 대한 액세스도 허용하므로 이 솔루션은 매우 깔끔합니다.

하단 서버에서:

# /etc/ipsec.conf
conn top-left-to-bottom
    ...
    leftsubnet=10.10.10.0/24,10.10.30.0/24
    ...

conn top-right-to-bottom
    ...
    leftsubnet=10.10.10.0/24,10.10.20.0/24
    ...

왼쪽 상단 서버에서:

# /etc/ipsec.conf
conn top-left-to-bottom
    ...
    rightsubnet=10.10.10.0/24,10.10.30.0/24
    ...

오른쪽 상단 서버에서:

# /etc/ipsec.conf
conn top-right-to-bottom
    ...
    rightsubnet=10.10.10.0/24,10.10.20.0/24
    ...

성공적인 tcpdumped 핑은 다음과 같습니다.

[bottom]$ tcpdump -nni enp2s0 icmp
15:52:37.160859 IP 10.10.20.1 > 10.10.30.1: ICMP echo request, id 1296, seq 1, length 64
15:52:37.164971 IP 10.10.30.1 > 10.10.20.1: ICMP echo reply, id 1296, seq 1, length 64

관련 정보