Openswan(버전 2.6.37)을 사용하여 로컬 네트워크에서 원격 사이트로 IPsec VPN을 연결하려고 합니다. 원격 사이트의 단일 서브넷에만 연결하려고 하면 모든 것이 잘 작동합니다. 그런데 원격 사이트에 액세스하려는 추가 서브넷이 있습니다.
내 구성은 다음과 같습니다.
conn myConn
type=tunnel
left=192.168.139.14
leftsubnet=192.168.139.0/24
leftxauthclient=yes
right=X.X.X.X
rightsubnet=172.16.1.0/24
keyexchange=ike
auth=esp
authby=secret
phase2alg=3des-sha1
pfs=yes
rightsubnet
으로 바꾸면 rightsubnets
다음과 같습니다.
rightsubnets={172.16.1.0/24 192.168.3.0/24}
...그러면 연결이 성공적으로 생성되지만 목록의 마지막 서브넷만 사용할 수 있습니다. 172.16.1.0
서브넷에서 ping을 시도하면 실패합니다. 서브넷 순서를 바꾸면 ping을 할 수 있지만 172.16.1.X
다른 서브넷에서는 아무 것도 ping할 수 없습니다. 이는 Openswan이 목록의 마지막 서브넷만 사용하여 연결을 생성하는 것과 같습니다.
내가 여기서 뭔가 잘못하고 있는 걸까요?
언급하지 않은 몇 가지 추가 정보(관련성이 있는지는 확실하지 않지만): 내 Openswan 클라이언트는 NAT를 사용하는 라우터 뒤에 있으며 nat_traversal=yes
해당 정보가 내 파일에 있습니다.ipsec.conf
답변1
평소와 똑같아 보여여러 서브넷의 구분 기호는 쉼표입니다., 그러나 최소한 openswan-2.6.32도 공백을 사용할 수 있습니다.
/var/log/secure
작동하지 않는 이유에 대한 단서를 포함할 수 있는 흥미로운 정보를 기록해야 합니다 . 또한 ip x s sh
및 의 출력을 게시합니다 ip x p sh
.
답변2
conn
터널의 양쪽 끝점에서 각 서브넷에 대해 부분 구성을 수행합니다. 그 중 하나만(첫 번째 시작) SA 협상을 시작하고, 두 번째(또는 그 이상)는 다른 서브넷에 대한 새 SPD만 생성합니다.
답변3
제대로 작동하려면 서브넷 목록 끝에 추가 쉼표가 필요한 OpenSwan에 버그가 있는 것 같습니다. 노력하다:
rightsubnets={172.16.1.0/24,192.168.3.0/24,}
끝에 추가 쉼표를 기록해 두십시오.
답변4
이렇게되어야합니다
rightsubnets={172.16.1.0/24,192.168.3.0/24}
,
항목을 구분하려면 공백 대신 쉼표( )를 사용하세요 .