OpenVPN 및 DD-WRT

OpenVPN 및 DD-WRT

OpenVpn과 작동하도록 새로운 dd-wrt 라우터를 설정하려고 합니다. 그러나 내가 사용해야 하는 OpenVpn에는 자동으로 생성된 구성 파일이 있습니다. 그것은 다음과 같습니다:

# Automatically generated OpenVPN client config file
# Generated on Wed Sep 11 17:15:39 2013 by ip-10-164-12-159
# Note: this config file contains inline private keys
#       and therefore should be kept confidential!
# Note: this configuration is user-locked to the username below
# OVPN_ACCESS_SERVER_USERNAME=openvpn
# Define the profile name of this particular configuration file
# OVPN_ACCESS_SERVER_PROFILE=-redacted-
# OVPN_ACCESS_SERVER_CLI_PREF_ALLOW_WEB_IMPORT=True
# OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_CONNECT=True
# OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_XD_PROXY=True
# OVPN_ACCESS_SERVER_WSHOST=-redacted-
# OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_START
# -----BEGIN CERTIFICATE-----
# -redacted-
# -----END CERTIFICATE-----
# OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_STOP
# OVPN_ACCESS_SERVER_IS_OPENVPN_WEB_CA=0
# OVPN_ACCESS_SERVER_ORGANIZATION=OpenVPN Technologies, Inc.
setenv FORWARD_COMPATIBLE 1
client
proto udp
nobind
remote -redacted-
port 443
dev tun
dev-type tun
ns-cert-type server
reneg-sec 604800
sndbuf 100000
rcvbuf 100000
auth-user-pass
# NOTE: LZO commands are pushed by the Access Server at connect time.
# NOTE: The below line doesn't disable LZO.
comp-lzo no
verb 3
setenv PUSH_PEER_INFO

<ca>
-----BEGIN CERTIFICATE-----
-redacted-
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
-redacted-
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
-redacted-
-----END PRIVATE KEY-----
</key>

key-direction 1
<tls-auth>
#
# 2048 bit OpenVPN static key (Server Agent)
#
-----BEGIN OpenVPN Static key V1-----
-redacted-
-----END OpenVPN Static key V1-----
</tls-auth>

내 라우터에 SSH가 연결되어 있는 경우(sshd를 켰음을 의미) 이 구성을 사용하여 OpenVpn 서버에 연결할 수 있습니다. VPN 서버 액세스 제어 페이지를 보면 성공적으로 연결되었다는 메시지가 표시됩니다. 그러나 dd-wrt의 라우팅 테이블이 Wi-Fi 장치에서 VPN으로 트래픽을 전송하지 않는다고 생각합니다.

저는 라우팅을 처음 접했고 dd-wrt 튜토리얼을 수행할 수 없었습니다(모두 제가 사용할 수 없는 다른 유형의 구성을 사용한다고 가정합니다). 따라서 내 질문은 두 부분으로 구성됩니다.

  1. iptables 스크립트를 실행한 다음 라우터에서 OpenVPN을 시작할 수 있도록 스크립트 가능한 방식으로 iptables(또는 Wi-Fi 네트워킹 장치에서 트래픽을 전송하는 모든 항목)를 설정하는 방법을 안내해 줄 수 있는 사람이 있습니까?

  2. VAP(가상 액세스 포인트) 또는 특정 IP 주소에서만 작동하도록 이를 변경하려면 어떻게 해야 합니까(따라서 AP에 연결된 IP가 xxxx인 장치만 VPN을 통과함).

참고: 저는 일반적으로 이러한 스크립트를 내 컴퓨터에 저장하고 주변에 있는 dd-wrt 라우터에 ssh를 보낸 다음 실행하여 VPN 연결을 엽니다.

Google과 이 사이트를 살펴보는 것은 지금까지 나에게 별로 도움이 되지 않았습니다.

답변1

저는 주로 집에 있는 OpenVPN 설정을 OpenWRT로 옮기려는 계획에 대해 이야기하고 있습니다. 현재 Fedora18에 구현되어 있지만 다른 용도로 테스트 머신을 사용하고 싶습니다. DD-WRT도 비슷할 것이라고 생각하지만 구현의 어려움으로 인해 일부 부정확성이 있을 수 있습니다. DD-WRT 경험이 더 많은 사람이 나를 뒷받침하고 모든 충돌을 완화할 수 있기를 바랍니다.

지시어 dev tun는 일반적으로 지시어를 사용하여 설정되는 별도의 서브넷을 사용하고 있음을 의미합니다 server(이 부분은 VPN 관리 페이지에서 처리되는 것으로 추측됩니다). 예를 들어, server 10.0.0.0 255.255.255.0은 클라이언트에 이 범위 내의 클라이언트 가상 어댑터에 대한 주소가 제공된다는 의미입니다.

이 장치가 인터넷 라우터라면 네트워크의 기본 게이트웨이로 사용되고 있는 것입니다. 무선 장치에 지정된 네트워크에 대한 고정 경로가 없으면 기본 게이트웨이에 묻습니다. 제가 의심하는 것은 귀하의 iptables 규칙이 입력 인터페이스를 기반으로 VPN 서브넷의 트래픽을 찾아 수락하도록 설정되어 있지 않다는 것입니다.

를 사용하여 iptables 구성을 볼 수 있습니다 iptables -nvL --line-numbers. 귀하의 장치를 라우터로 사용하려는 사람들은 다음과 같은 문제를 겪게 될 것입니다.

  1. 설정된 연결을 수락합니다.
  2. 현재 설정된 포트 전달 규칙에 따라 인터넷에서 로컬 주소에 대한 연결을 허용합니다.
  3. 로컬 서브넷의 트래픽을 허용합니다.
  4. 규칙 체인을 통과하는 나머지 모든 시도를 삭제/거부합니다.

OpenVPN 서브넷이 3단계에서 언급되지 않은 경우 4단계에 도달하여 삭제됩니다.

이러한 절차는 작업에 따라 규칙 체인으로 깔끔하게 구성됩니다. 제가 계획하고 있는 것은 로컬 연결을 처리하는 규칙 체인인 "zone_lan_forward"의 시작 부분에 OpenVPN 서브넷용 체인을 정의하는 것입니다. 다음과 같이 진행됩니다.

iptables -N zone_lan_vpn

iptables -I zone_lan_forward -i tun+ -j zone_lan_vpn

다음에 수행할 작업은 이러한 클라이언트에 적용하려는 제한 사항의 종류에 따라 다릅니다. 세 가지 OpenVPN 인스턴스(관리 액세스 수준 하나, 게스트 액세스 수준 두 개)가 있으므로 이를 좀 더 자세히 나누었습니다.

관리 VPN 서브넷의 사용자에게는 거의 모든 것에 대한 액세스 권한이 부여되므로 다른 모든 것을 허용하기 전에 메뉴에 없는 특정 주소만 차단하는 DENY->ALLOW 설정을 구현했습니다. 게스트는 특정 리소스에만 액세스할 수 있으므로 ALLOW->DENY 설정으로 되어 있습니다.

DD-WRT에서 확실하지 않은 부분은 부팅 시 자동으로 발생하도록 설정하는 방법입니다. OpenWRT에서 방화벽 규칙은 /lib/firewall. 구성 파일에는 /etc/config/firewall다음 줄이 포함되어 있습니다.

config 'include'

option 'path' '/etc/firewall.user'

위에 정의된 파일 /etc/firewall.user은 사용자별 조정을 허용하기 위해 방화벽 규칙이 다시 로드될 때마다 BASH 스크립트로 읽혀집니다. 저는 특히 DD-WRT에 익숙하지 않아서 동일한 방화벽 설정 방법이 사용되는지 잘 모르겠습니다.

iptables -nvL --line-numbers방화벽 규칙이 DD-WRT 기본값인 경우 공개 주소를 수정하여 페이스트빈 또는 이와 유사한 출력을 게시할 수 있습니까 ? DD-WRT의 특정 레이아웃에 대한 더 나은 아이디어를 얻는 데 도움이 될 것입니다. 원격 클라이언트가 받고 있는 OpenVPN 서브넷의 IP 주소를 확인할 수 있습니까? 의 결과에 표시된 대로 라우터의 라우팅 테이블을 게시할 수도 있습니까 route -n? (이 작업을 수행하는 동안 OpenVPN 서버가 실행 중인지 확인하세요). 여기에서 네트워크 주소를 수정하는 경우 범위의 목적이 무엇인지 식별하십시오(예: 로컬 서브넷, VPN 서브넷, 공용).

물론 웹 인터페이스에서 이 액세스를 정의하는 옵션이 있다면 이 모든 것이 문제가 될 수 있습니다. OpenVPN 서브넷의 사용자를 필터링할 수 있는 옵션이 라우터의 웹 콘솔에 있습니까?

귀하의 질문 중 두 번째 부분을 잘 이해하지 못하는 것 같습니다. OpenVPN을 통해 특정 IP 주소만 장치에 연결할 수 있도록 하시겠습니까? 나중에 이 서비스를 DD-WRT 라우터가 아닌 다른 서버에 설치하시겠습니까?

관련 정보