VPN 트래픽을 인터넷으로 라우팅하기 위해 Debian에서 OpenVPN 서버를 설정하는 방법

VPN 트래픽을 인터넷으로 라우팅하기 위해 Debian에서 OpenVPN 서버를 설정하는 방법

Debian에서 OpenVPN 서버를 설정하고 있습니다.

서버를 구성했고 클라이언트가 연결할 수 있습니다. 클라이언트에는 10.11.22.0/24 범위의 IP 주소가 할당되어 있습니다.

내 server.conf 파일에 다음이 있습니다.

client-to-client
status /var/log/openvpn-status.log
verb 3

server 10.11.22.0 255.255.255.0

# This ensures Internet-bound traffic to-from clients can pass through the VPN
push "redirect-gateway def1"
push "dhcp-option DNS (my DNS address)"

IP 전달이 켜져 있습니다( 에서 설정됨 /etc/sysctl.conf).

iptables에 NAT 규칙을 추가해야 할 것 같습니다. 아마도 다음과 같은 형식일 것입니다.

iptables -t nat -A POSTROUTING -s 10.11.22.0/24 -o eth0 -j MASQUERADE

(수정 환영합니다!)

제 질문은 이 규칙을 지속성으로 만들기 위해(재부팅 후에도 살아남으려면) 어디로 가야 합니까?입니다.

이상적인 세계에서는 VPN 서버가 시작될 때 규칙이 추가되고 다운될 때 제거되지만 서버는 어쨌든 systemctl에서 자동 시작으로 설정되어 있으므로 아마도 중요하지 않을 것입니다.

다른 시스템 관리자가 놀라지 않고 찾을 수 있도록 올바른 위치에서 수행하고 싶을 뿐입니다.

답변1

일반적으로 방화벽은 VPN과 독립적이어야 합니다. 데비안에서는 netfilter-persistent및 패키지를 사용하여 관리(저장 및 복원)할 수 있습니다 iptables-persistent(둘 다 필요함).

그러나 OpenVPN 서버가 시작되거나 종료될 때 스크립트 인터페이스가 있는 모든 명령을 실행할 수 있습니다. 이 경우에는 사용하지 마십시오 netfilter-persistent. iptables-persistent그렇지 않으면 방화벽이 팽창할 수 있습니다(다음 시나리오를 고려하십시오: 스크립트가 규칙을 추가한 다음 방화벽이 저장된 다음 스크립트가 규칙을 제거하고 재부팅 - 방화벽이 로드됨).저장됨규칙으로 상태를 지정한 다음 스크립트가 실행되고 추가됩니다.또 다른규칙; 몇 번 반복하면 방화벽에 동일한 규칙이 여러 개 표시됩니다.

먼저 OpenVPN 구성에 추가합니다.

script-security 2
up /etc/openvpn/add-rule.sh
down sudo /etc/openvpn/remove-rule.sh

script-security스크립트를 실행하려면 필요합니다.

루트가 아니 user거나 group서버 구성에 있을 가능성이 매우 높으므로(좋습니다!) down스크립트가 해당 사용자/그룹 권한으로 실행됩니다. 따라서 규칙을 제거하려면 권한을 다시 얻어야 합니다. /etc/sudoers.d/openvpn-remove-rule이 사용자가 해당 명령을 실행할 수 있도록 다음 줄을 포함하는 파일을 만듭니다 .

<user> ALL=(ALL) NOPASSWD: /etc/openvpn/remove-rule.sh

( <user>아마도 OpenVPN 구성에 설정된 사용자로 바꾸십시오 nobody). 그렇지 chmod 0400 /etc/sudoers.d/openvpn-remove-rule않으면 sudo가 로드를 거부합니다.

설명스크립트가 필요한 이유sudo를 통해 iptables 명령 호출을 OpenVPN 구성에 직접 넣는 것이 아닙니다. 한마디로 보안입니다.

반대로 up명령은 루트 권한을 삭제하기 전에 실행되지만 일관성을 위해 스크립트도 사용하는 것이 좋습니다.

해당 스크립트의 내용은 분명합니다. 서버 시작 및 종료 시 실행해야 하는 iptables 명령을 입력하기만 하면 됩니다. (원칙적으로 iptables뿐만 아니라 어떤 명령이라도 사용할 수 있습니다.) 두 스크립트를 모두 실행 가능하게 만듭니다.

man openvpn스크립팅 인터페이스에 대한 참조를 읽으십시오 .

관련 정보