![openWRT의 OpenVPN - VPN 연결 성공, LAN 핑 가능, 외부 핑 불가능(대상 포트 도달 불가)](https://rvso.com/image/1558688/openWRT%EC%9D%98%20OpenVPN%20-%20VPN%20%EC%97%B0%EA%B2%B0%20%EC%84%B1%EA%B3%B5%2C%20LAN%20%ED%95%91%20%EA%B0%80%EB%8A%A5%2C%20%EC%99%B8%EB%B6%80%20%ED%95%91%20%EB%B6%88%EA%B0%80%EB%8A%A5(%EB%8C%80%EC%83%81%20%ED%8F%AC%ED%8A%B8%20%EB%8F%84%EB%8B%AC%20%EB%B6%88%EA%B0%80).png)
문제:
네트워크 외부에서 OpenVPN을 통해 라우터에 연결하고 VPN을 통해 모든 트래픽을 설정하면 다음에 대한 액세스가 허용됩니다.
라우터 자체
라우터 뒤의 LAN 호스트
작동하지 않는 것:
LAN 외부의 네트워크 액세스
DNS 확인(DNS는 VPN을 통해 푸시되지만)
외부 IP를 핑하면 "대상 포트에 연결할 수 없음"이 보고됩니다.
모든 요청에 대해 tcpdump는 다음으로 채워집니다.
12:03:22.070072 IP 10.8.4.2 > 10.8.4.1: ICMP 10.8.4.2 udp port 49763 unreachable, length 93
여기서 10.8.4.2는 클라이언트 IP이고 10.8.4.1은 서버입니다(포트 변경).
설정:
- 내부 네트워크 192.168.10.0/24가 있는 OpenWRT 라우터(Turris Omnia)
- 포트 1196에서 수신 대기 중인 OpenVPN(개방형 및 액세스 가능)
- 포트 443이 라우터에서 1196으로 리디렉션됨(1196을 차단하는 네트워크의 경우)
- 방화벽에 정의된 세 개의 영역:
vpn
,lan
,wan
. - 클라이언트: Android용 OpenVPN을 사용하는 Android 8 클라이언트(Nexus 5X)
openvpn 구성:
port 1196
proto tcp
dev tun2
ca /etc/openvpn/ca.crt
cert /etc/openvpn/mycrt.crt
key /etc/openvpn/mycrt.key # This file should be kept secret
dh /etc/openvpn/dh2048.pem
server 10.8.4.0 255.255.255.0
ifconfig-pool-persist /tmp/openvpn/clients/ipp-local.txt
client-config-dir ccd
client-to-client
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0
comp-lzo no
persist-key
persist-tun
status /tmp/log/openvpn-status.log
verb 3
mute 20
push "route 192.168.10.0 255.255.255.0"
push "route 192.168.20.0 255.255.255.0"
mssfix
cipher AES-256-CBC
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
status /var/log/openvpn-server-status.log
topology subnet
리디렉션은 다음에서 수행됩니다 ccd/myclient
.
push "redirect-gateway local def1"
push "dhcp-option DNS 192.168.10.1"
이제 openWRT 측의 구성은 다음과 같습니다.
/etc/config/openvpn
config openvpn 'local_service'
option config '/etc/openvpn/server-local.conf'
option enabled '1'
/etc/config/네트워크
config interface 'vpn2'
option ifname 'tun2'
option proto 'none'
option auto '1'
/etc/config/방화벽
config zone
option input 'ACCEPT'
option output 'ACCEPT'
option name 'vpn'
option masq '1'
option forward 'ACCEPT'
option mtu_fix '1'
option network 'vpn2'
config forwarding
option dest 'vpn'
option src 'lan'
config forwarding
option dest 'lan'
option src 'vpn'
config forwarding
option dest 'wan'
option src 'vpn'
config redirect
option target 'DNAT'
option src 'wan'
option dest 'lan'
option proto 'tcp'
option src_dport '443'
option dest_ip '192.168.10.1'
option dest_port '1196'
option name 'openvpn https'
클라이언트 구성:
# Enables connection to GUI
management /data/user/0/de.blinkt.openvpn/cache/mgmtsocket unix
management-client
management-query-passwords
management-hold
setenv IV_GUI_VER "de.blinkt.openvpn 0.6.73"
setenv IV_PLAT_VER "27 8.1.0 arm64-v8a google bullhead Nexus 5X"
machine-readable-output
allow-recursive-routing
ifconfig-nowarn
client
verb 4
connect-retry 2 300
resolv-retry 60
dev tun
remote my-remote-gateway.example.com 443 tcp-client
<ca>
REDACTED
</ca>
<key>
REDACTED
</key>
<cert>
REDACTED
</cert>
comp-lzo
<tls-auth>
REDACTED
</tls-auth>
key-direction 1
route 0.0.0.0 0.0.0.0 vpn_gateway
verify-x509-name seldon name
remote-cert-tls server
cipher AES-256-CBC
auth SHA512
# Use system proxy setting
management-query-proxy
답변1
문제 해결됨. 실제로 있었다둘문제:
- VPN에서 서버 외부로의 전달은 방화벽에서 허용되지 않습니다.
- 지정된 DNS IP에 VPN을 통해 할당된 IP와 다른 서브넷이 있어 작동하지 않았습니다.
openWRT에서 wan
과(와) 사이의 전달을 활성화 vpn
하고 DNS에 대한 올바른 주소를 설정하면 문제가 해결되었습니다.