내 openvpn 연결이 작동하지 않는 이유를 알 수 없습니다. 연결하면 잘 되는 것 같습니다. 서버에 연결할 수 있지만 일단 연결되면 VPN을 통해 인터넷을 사용할 수 없습니다.
Debian에서 실행되는 VPS 서버입니다.
여기 내 openvpn server.conf 파일이 있습니다.
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
verb 6
mute 20
그리고 여기 내 client.conf 파일이 있습니다.
client
dev tun
proto udp
remote server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3
remote-cert-tls server
연결과 경로를 허용하기 위해 방화벽 규칙도 추가했지만 이상한 점은 일부 규칙이 여러 번 나타난다는 것입니다. 여기 내 iptables 저장 파일이 있습니다.
# Generated by iptables-save v1.4.8 on Sun Dec 22 04:36:18 2013
*nat
:PREROUTING ACCEPT [53:9749]
:POSTROUTING ACCEPT [9:675]
:OUTPUT ACCEPT [9:675]
-A PREROUTING -d server_ip/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports 1194
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source server_ip
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Sun Dec 22 04:36:18 2013
# Generated by iptables-save v1.4.8 on Sun Dec 22 04:36:18 2013
*filter
:INPUT ACCEPT [946:112417]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [824:172939]
-A INPUT -i tun0 -p tcp -m tcp --dport 1194 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT
COMMIT
# Completed on Sun Dec 22 04:36:18 2013
또한 /etc/sysctl.conf를 확인하여
net.ipv4.ip_forward=1
나 또한
net.ipv6.conf.all.forwarding=1
그래서 저는 Linux PC와 Virtualbox XP에서 OpenVPN 연결을 시도했는데 둘 다 연결되어 있지만 연결되면 어느 것도 인터넷에 액세스할 수 없습니다.
가장 이상한 점은 Traceroute를 수행할 때 VPN을 통한 연결이 표시된다는 것입니다.
예를 들어 나는 google.com을 추적합니다.
1 my ip from vpn connection
2 openvpn server ip
3 ...
4 ...
5 ... few hops between server to google
6 and finally google server ip
그래서 Traceroute는 연결이 VPN을 통해 이루어짐을 보여주고, 또한 Ping을 할 때 Ping이 20ms 정도일 때 VPN에 연결되어 있지 않을 때 Ping이 100ms 차이로 증가합니다.
하지만 어떤 프로그램(firefox, chrome, iexplorer)으로 인터넷을 탐색하려고 하면 아무것도 얻지 못합니다. 아무것도 로드되지 않으며 연결 시간이 초과됩니다.
내 서버가 느려서 페이지가 로드되지 않는 것은 아닙니다. 속도 테스트에서는 서버에서 약 70mbit 연결이 표시되고 6mbit 연결이 있습니다.
그리고 cloudnymous와 같은 다른 VPN에 연결하려고 하면 모든 것이 잘 작동합니다. OpenVPN 설정에 문제가 있는 것 같습니다.
편집: 마침내 작동하게 되었다고 생각했는데, 많은 설정을 조작한 후에 마침내 VPN에 연결하고 그곳에서 인터넷에 접속할 수 있었습니다.
이제 마지막 문제가 하나 남았습니다. 저는 Linux를 사용하고 있기 때문에 여기에서는 몇 가지 프로그램이 작동하지 않으며 Windows XP 설치와 함께 virtualbox를 사용하지만 virtualbox에서 VPN에 연결하면 인터넷 서핑을 할 수 있습니다. 하지만 어떤 프로그램도 인터넷에 연결할 수 없습니다. 또한 내 VPN 연결이 때때로 인터넷을 잃고 있는데, 내 인터넷이나 서버 연결이 아닙니다. 왜냐하면 VPN을 통해 인터넷이 끊어진 동안에도 SSH를 통해 Putty를 사용하여 서버에 연결하고 다양한 작업을 수행할 수 있기 때문입니다.
답변1
매스커레이딩은 VPS에서 작동하지 않습니다. iptables
Source NAT
대신 다음을 사용해야 합니다.
iptables -t nat -A POSTROUTING -s 10.x.x.x/xx -j SNAT --to-source y.y.y.y
x.x.x.x/x
VPN 서브넷 - y.y.y.y
서버 출력 인터페이스의 IP 주소입니다.
답변2
/etc/default/ufw
서버에 방화벽이 있는지 확인한 DEFAULT_FORWARD_POLICY="ACCEPT"
다음 다시 시작하세요."DROP"
sudo ufw disable
sudo ufw enable
답변3
라우터를 변경할 때까지 OpenVPN이 정상적으로 작동하는 비슷한 문제가 있었습니다. 필요한 포트를 열었지만 라우터 방화벽을 의심했습니다. 그러나 rc.local을 살펴보니 처음 구성했을 때 iptables 줄이 내가 예상했던 $MY_IP 변수가 아닌 실제 IP 주소로 설정되어 있었습니다.
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to 192.168.0.15
대신:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to $MY_IP
문제는 라우터가 서버에 다른 IP를 할당하도록 변경하는 것이었고 방금 새 IP를 예약했고 모두 작동할 것으로 예상했습니다.
서버에 이전과 동일한 IP를 예약했다면 머리를 긁는 일을 많이 줄일 수 있었을 것입니다.