![NetworkManager를 사용하여 OpenVPN에 연결하는 방법](https://rvso.com/image/1267747/NetworkManager%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20OpenVPN%EC%97%90%20%EC%97%B0%EA%B2%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
OpenWrt 10.03 라우터에 OpenVPN 서버를 설치했습니다 [새로 업데이트됨]:
echo "nameserver 8.8.8.8" > /etc/resolv.conf; opkg update; opkg install luci-app-openvpn openvpn openssl-util openssh-sftp-server ntpd
vim /etc/ssl/openssl.cnf # modify a few lines
[ CA_default ]
dir = /etc/openvpn
new_certs_dir = $dir/certs
certificate = $dir/ca.crt
private_key = $dir/ca.key
touch /etc/openvpn/index.txt; touch /etc/openvpn/serial; echo 01 > /etc/openvpn/serial
openssl req -nodes -new -x509 -keyout /etc/openvpn/ca.key -out /etc/openvpn/ca.crt -days 3650 # give a common name, like: vpnserver
openvpn --genkey --secret /etc/openvpn/ta.key
openssl req -nodes -new -keyout /etc/openvpn/server.key -out /etc/openvpn/server.csr # give a common name, like: vpnserver
mkdir -p /etc/openvpn/certs; mkdir -p /etc/openvpn/private
openssl ca -out /etc/openvpn/server.crt -in /etc/openvpn/server.csr
time openssl dhparam -out /etc/openvpn/dh1024.pem 1024 # it could take 10 minutes!
# generate certs for clients [X = client number]
openssl req -nodes -new -keyout /etc/openvpn/clientX.key -out /etc/openvpn/clientX.csr # give a common name! it will be the user name
openssl ca -out /etc/openvpn/clientX.crt -in /etc/openvpn/clientX.csr
# e.g.:
openssl req -nodes -new -keyout /etc/openvpn/client1.key -out /etc/openvpn/client1.csr # give a common name! it will be the user name
openssl ca -out /etc/openvpn/client1.crt -in /etc/openvpn/client1.csr
vim /etc/config/openvpn
config 'openvpn' 'openvpn_server'
option 'enable' '1'
option 'port' '1194'
option 'proto' 'udp'
option 'dev' 'tap'
option 'ca' '/etc/openvpn/ca.crt'
option 'cert' '/etc/openvpn/server.crt'
option 'key' '/etc/openvpn/server.key'
option 'tls_auth' '/etc/openvpn/ta.key 0' # server: 0
option 'dh' '/etc/openvpn/dh1024.pem'
option 'comp_lzo' '1'
option 'server' '10.20.30.0 255.255.255.0'
option 'keepalive' '10 120'
option 'persist_key' '1'
option 'persist_tun' '1'
option 'mute' '20'
option 'verb' '3'
option 'client_to_client' '1'
list 'push' 'dhcp-option DNS 10.20.30.1'
/etc/init.d/openvpn enable
/etc/init.d/openvpn start
ifconfig -a | less
ping 10.20.30.1
# here comes the firewall part
vim /etc/config/firewall # modify it
config 'include'
option 'path' '/etc/firewall.user'
config 'redirect'
option 'src' 'wan'
option 'proto' 'udp'
option 'src_dport' '1194'
option 'dest_port' '1194'
option '_name' 'OpenVPN'
vim /etc/firewall.user # modify it
iptables -t nat -A prerouting_rule -i $WAN -p udp --dport 11194 -j ACCEPT
iptables -A input_rule -i $WAN -p udp --dport 11194 -j ACCEPT
iptables -A forwarding_rule -i tap+ -o br-lan -j ACCEPT
iptables -A forwarding_rule -i br-lan -o tap+ -j ACCEPT
iptables -A input_rule -i tap+ -j ACCEPT
iptables -A output_rule -o tap -j ACCEPT
/etc/init.d/firewall restart
# tar the files that goes to the client1
mkdir -p /root/client1
cp /etc/openvpn/ca.crt /root/client1/; cp /etc/openvpn/client1.crt /root/client1/; cp /etc/openvpn/client1.key /root/client1/; cp /etc/openvpn/ta.key /root/client1/
cd /root/; tar -cf client1.tar client1
"괜찮아"인 것 같습니다.
내 PC를 라우터의 LAN 포트에 연결했는데, 사용해 보고 싶습니다. 저는 GNOME과 함께 Fedora 14를 사용하고 있습니다. NetworkManager 애플릿에서 다음을 설정했습니다.
연결을 시도하지만 실패합니다. 로그는 다음과 같습니다.
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> Starting VPN service 'openvpn'...
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN service 'openvpn' started (org.freedesktop.NetworkManager.openvpn), PID 23552
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN service 'openvpn' appeared; activating connections
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN plugin state changed: 1
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN plugin state changed: 3
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN connection 'elsovpn' (Connect) reply received.
Mar 7 15:42:43 ASDF nm-openvpn[23554]: OpenVPN 2.1.1 i686-redhat-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] built on Jan 5 2010
Mar 7 15:42:43 ASDF nm-openvpn[23554]: WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Mar 7 15:42:43 ASDF nm-openvpn[23554]: NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
Mar 7 15:42:43 ASDF nm-openvpn[23554]: Cannot load certificate file /home/g/Desktop/client1/client1.crt: error:0200100D:system library:fopen:Permission denied: error:20074002:BIO routines:FILE_CTRL:system lib: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
Mar 7 15:42:43 ASDF nm-openvpn[23554]: Exiting
Mar 7 15:42:43 ASDF kernel: [55630.235164] type=1400 audit(1299508963.340:23608): avc: denied { read } for pid=23554 comm="openvpn" name="client1.crt" dev=dm-1 ino=3019385 scontext=system_u:system_r:openvpn_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file
Mar 7 15:42:43 ASDF NetworkManager[1458]: <warn> VPN plugin failed: 1
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN plugin state changed: 6
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN plugin state change reason: 0
Mar 7 15:42:43 ASDF NetworkManager[1458]: <warn> error disconnecting VPN: Could not process the request because no VPN connection was active.
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> Policy set 'Auto Ethernet' (eth0) as default for IPv4 routing and DNS.
Mar 7 15:42:49 ASDF NetworkManager[1458]: <info> VPN service 'openvpn' disappeared
한 가지 중요한 점은 내 라우터(openvpn 서버가 있는 라우터)의 IP 주소가 192.168.1.2이고 아무데도 쓸 필요가 없다는 것입니다. 그러면 네트워크 관리자 애플릿이 내 openvpn 서버의 IP 주소를 어떻게 알 수 있습니까? 이게 문제인 것 같은데 192.168.1.2를 어디에 써야 할지 모르겠어요
Google에서 "서버 인증서 확인 방법이 활성화되지 않았습니다."라고 검색해 보았습니다. 하지만 아무것도 찾지 못했고 지금 몇 시간 동안 노력 중입니다... :\
ps: if i [라우터에서]:
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
그리고 stat tcpdump를 실행하고 내 PC에서 연결을 시도하면 아무 일도 일어나지 않습니다!.. 그러면 버그는 네트워크 관리자 애플릿에 있는 것입니다!?
다시 말씀드리지만 ps: 만약 제가:
$ telnet 192.168.1.2 1197
Trying 192.168.1.2...
telnet: connect to address 192.168.1.2: Connection refused
$connbsp;
이런 종류의 openvpn을 설정하는 방법에 대한 좋은 방법이 있습니까(openwrt 라우터의 Pastebin 링크에서와 같이..)?
다른 openvpn 클라이언트 프로그램을 찾아볼 가치가 있나요? [그 외 네트워크 관리자 애플릿]
답변1
LAN 내부에서 OpenVPN 서버에 연결하려는 이유는 무엇입니까? 라우터에 OpenVPN을 설치하는 시점은 다음 중 하나여야 합니다.
A) 클라이언트로 전체 개인 네트워크를 다른 OpenVPN 서버에 연결하거나
B) 서버로 WAN 측에서 개인 네트워크에 연결
귀하의 질문에 대답하기 위해 여기에 있는 문제는 붙여넣은 디버그 출력에 있습니다.
Cannot load certificate file /home/g/Desktop/client1/client1.crt: error:0200100D:system library:fopen:Permission denied:
해당 파일의 권한을 확인하고 최소한 사용자(및 상위 디렉토리)가 읽을 수 있는지 확인하십시오. client.conf에 따라 누구나 읽을 수 있도록 만들어야 할 수도 있습니다.
답변2
라우터가 LAN 측이 아닌 WAN 측의 OpenVPN 연결만 허용할 수도 있습니다. 네트워크 외부의 컴퓨터에서 라우터의 공용 IP 주소로 연결해 보세요.
이를 위해서는 라우터에 라우팅 가능한 공용 IP 주소가 있는지 확인하십시오. 게시한 스크린샷에서는 그렇지 않음을 시사합니다. (힌트: 공용 IP의 형식이 10.xxx 또는 192.168.xx인 경우 라우팅할 수 없습니다.) ISP가 귀하를 자체 NAT 라우터 뒤에 배치한 경우 이런 일이 발생할 수 있습니다. 이 경우 인터넷에서 라우터에 대한 연결을 시작할 수 없습니다. (게임 끝.)
답변3
자동 연결도 하려면 다음 Python 스크립트를 사용하십시오.https://gist.github.com/1547663
스크립트의 첫 번째 매개변수는 NetworkManager의 VPN 연결 이름이고 두 번째는 무시해야 하는 쉼표로 구분된 네트워크 이름입니다(집에서 VPN 연결을 사용하는 것은 쓸모가 없습니다).
예
$ git clone git://gist.github.com/1547663.git /home/user/autovpn/
$ echo "python /home/user/autovpn/autovpn.py 'myvpn' 'Auto homenetwork,Auto worknetwork' > /var/log/autovpn.log&" > /etc/rc.local
$ /etc/rc.local
이제 Wi-Fi/이더넷에 연결하면 VPN 연결 설정도 시도합니다.