OpenVPN을 통해 두 네트워크(AWS 및 Azure)를 함께 연결하려고 합니다. 다른 구현(OpenSwan+Azure GW 등)에 대해 알고 있지만 이를 다른 클라우드 VPN 공급자에게도 확장할 예정이므로 최대한의 이식성이 필요합니다.
OpenVPN 게이트웨이는 서로 ping할 수 있으며, 각 게이트웨이는 반대 네트워크의 모든 IP에 ping을 보낼 수 있지만, 한 네트워크의 컴퓨터는 다른 네트워크에 있는 컴퓨터를 ping할 수 없습니다(상대 게이트웨이에도 ping할 수 없음).
내가 여기서 무엇을 놓치고 있는 걸까요? 많은 사람들이 여러 가지 이유로 이 문제를 겪고 있는 것 같지만 50번 이상 시도한 후에 포기하고 물어보기로 결정했습니다. :)
네트워크 1:
dev tun 포트 1194 ifconfig 10.8.223.40 10.8.223.41 경로 10.22.1.0 255.255.255.0 vpn_gateway comp-lzo keepalive 10 60 지속 키 지속-tun 사용자 아무도 그룹 아무도 비밀 /etc/openvpn/static.key
ip route
default via 10.0.1.1 dev eth0
10.0.1.0/27 dev eth0 proto kernel scope link src 10.0.1.9
10.22.1.0/24 via 10.8.223.41 dev tun0
10.33.0.0/24 via 10.33.0.2 dev tun2
10.33.0.2 dev tun2 proto kernel scope link src 10.33.0.1
10.8.223.41 dev tun0 proto kernel scope link src 10.8.223.40
네트워크 2
dev tun 포트 1194 원격 my_ext_ip 1194 ifconfig 10.8.223.41 10.8.223.40 경로 10.0.0.0 255.254.0.0 vpn_gateway comp-lzo keepalive 10 60 지속 키 지속-tun 사용자 아무도 그룹 아무도 비밀 /etc/openvpn/static.key
ip route
default via 10.22.1.1 dev eth0
10.0.0.0/15 via 10.8.223.40 dev tun0
10.22.1.0/24 dev eth0 proto kernel scope link src 10.22.1.9
10.8.223.40 dev tun0 proto kernel scope link src 10.8.223.41
iptables에 관한 내용은 다음과 같습니다.
두 네트워크 모두:iptables -I FORWARD -i eth0 -o tun0 -m conntrack --ctstate NEW -j 승인 iptables -I FORWARD -i tun0 -o eth0 -m conntrack --ctstate NEW -j 승인
네트워크 1:iptables -t nat -A POSTROUTING -s "10.0.0.0/15" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.0.0.0/15 -d 0.0.0.0/0 -j 수락
iptables -t nat -A POSTROUTING -s "10.8.223.40/32" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.8.223.40/32 -d 0.0.0.0/0 -j 수락
네트워크 2:iptables -t nat -A POSTROUTING -s "10.22.1.0/24" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.22.1.0/24 -d 0.0.0.0/0 -j 수락
iptables -t nat -A POSTROUTING -s "10.8.223.41/32" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.8.223.41/32 -d 0.0.0.0/0 -j 수락
내 가정은 (인터넷 액세스를 위한 별도의 게이트웨이가 있기 때문에) 이제 로컬 OpenVPN 게이트웨이를 통해 반대 네트워크로 향하는 패킷을 라우팅할 두 네트워크의 게이트웨이가 아닌 각 컴퓨터에 경로를 추가해야 한다고 가정했습니다.
나는 머신 10.0.1.7에 대해 그렇게 했습니다:
IP 경로는 10.0.1.9를 통해 10.22.1.0/24를 추가합니다.
이제 나는 다음을 가지고 있습니다:
10.0.1.1 dev eth0을 통한 기본값 10.0.1.0/27 dev eth0 proto 커널 범위 링크 src 10.0.1.7 10.0.1.9 dev eth0을 통한 10.22.1.0/24 172.17.0.0/16 dev docker0 proto 커널 범위 링크 src 172.17.42.1
하지만 10.22.1.9(상대 게이트웨이)에 대한 추적 경로는 여전히 아무데도 가지 않습니다...
PS 대부분의 컴퓨터는 Docker에 있지만 호스트 컴퓨터에서도 동일한 결과를 얻습니다.
어떤 도움이라도 주시면 감사하겠습니다!