OpenVPN 서버를 설정했고 지금까지 작동 중입니다. 내 네트워크에는 10.200.1.0/24
, 10.200.2.0/24
및 이라는 서브넷이 있습니다 10.200.3.0/24
. VPN에 연결하면 3개의 서브넷 모두에 문제 없이 핑을 보낼 수 있습니다. 서버측에서 서브넷 액세스를 어떻게 제한합니까? ccd
모든 클라이언트를 대상으로 하기 때문에 구성이 필요하지 않습니다 . 연결된 경우 서브넷 10.200.1/24
및 전역적 으로 액세스를 제한하고 싶습니다 .10.200.2/24
10.200.3/24
아래 구성은 서버가 클라이언트에 경로를 푸시하지 않았기 때문에 연결 시 클라이언트가 액세스할 수 없는 경우에 작동합니다 . 그러나 클라이언트가 머신에 경로를 수동으로 추가하면 기술적으로 연결할 수 있습니다.
액세스가 허용되는 서브넷을 서버 측에서 어떻게 적용합니까?
server.conf
local 10.200.0.8
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.200.1.0 255.255.255.0"
push "route 10.200.2.0 255.255.255.0"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
explicit-exit-notify
답변1
VPN 서버는 패킷 전달을 수행하는 IP 라우터이며, 여기에서 패킷이 필터링될 수 있습니다(전달되거나 전달되지 않음). 이는 방화벽을 사용하여 수행됩니다. 예를 들어 서버가 Linux인 경우 다음을 추가합니다.
iptables -I FORWARD 1 -s 10.8.0.0/24 -d 10.200.3.0/24 -j REJECT
-I ... 1
체인의 다른 어떤 것보다 먼저 규칙을 설치하므로 방화벽에 이미 있는 항목에 관계없이 있는 그대로 제대로 작동하도록 이렇게 만들었습니다 . 이는 최적이 아닐 수도 있습니다. 필요에 따라 규칙을 조정하세요. VPN 클라이언트의 패킷과 일치하는 허용 규칙 앞에 나타나는지 확인하세요.
이 필터링은 OpenVPN 플러그인으로도 수행할 수 있지만 달성하기가 훨씬 어렵습니다.