OpenVPN 성능 향상


10

OpenVPN 성능을 향상 시키려고 노력했으며 이것이 현재 설정입니다.

 cat /etc/openvpn/server.conf
port 443 #- port
proto tcp #- protocol
dev tun
#tun-mtu 1500
tun-mtu-extra 32 
#mssfix 1450
tun-mtu 64800
mssfix 1440
reneg-sec 0
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
plugin /etc/openvpn/openvpn-auth-pam.so /etc/pam.d/login
#plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so /etc/pam.d/login #- Comment this line if you are using FreeRADIUS
#plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf #- Uncomment this line if you are using FreeRADIUS
client-to-client
client-cert-not-required
username-as-common-name
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 5 30
comp-lzo
persist-key
persist-tun
status 1194.log
verb 3

고객:

client
dev tun
proto tcp
remote 18.4.26.8 443
resolv-retry infinite
nobind
tun-mtu 64800
tun-mtu-extra 32
mssfix 1440
persist-key
persist-tun
auth-user-pass
comp-lzo
verb 3

웹에서 찾은 내용으로 MTU 및 MSSFIX를 약간 변경했습니다.

커널을 변경할 수 있습니까? 이것은 CentOS 6.x 상자입니다. BSD 기반의 물건을 찾았지만 Linux에서는 효과가 없었습니다.

TCP가 UDP보다 느리다는 것을 알고 있지만 네트워크의 방화벽을 통과하려면 SSL 트래픽처럼 보일 수 있어야합니다.

다른 아이디어?

내가 RDP에 접속 한 네트워크의 다른 클라이언트에 PING.

Pinging 10.8.0.6 with 32 bytes of data:
Reply from 10.8.0.6: bytes=32 time=152ms TTL=128
Reply from 10.8.0.6: bytes=32 time=565ms TTL=128
Reply from 10.8.0.6: bytes=32 time=152ms TTL=128
Reply from 10.8.0.6: bytes=32 time=782ms TTL=128

Ping statistics for 10.8.0.6:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 152ms, Maximum = 782ms, Average = 412ms

성능을 향상 시키거나 핑을 떨어 뜨리는 방법이 있습니까?

편집 : 조각화 설정을하면 도움이됩니까?


I know TCP is slower then UDP but I need to be able to look like SSL traffic to get thru a firewall on the network.직장에서 네트워크 관리자에게 openvpn 포트를 열도록 요청하지 않으시겠습니까? 관련 메모 에서이 질문 Licensing, legal advice, and *circumvention of security or policy*은 명확히 할 FAQ의 용어를 위반 할 수 있습니다 .
prateek61

1
그것에 대해 불법이 없습니다. 내 시스템에 원격으로 액세스 할 수있는 유일한 방법입니다. :)

2
나는 당신이 어디에 있든 방화벽 정책을 우회하는 것에 대해 더 이야기하고있었습니다. 네트워크 관리자에게 포트를 열도록 요청할 수없는 이유는 무엇입니까? 보안 정책을 우회하는 것에 대한 합법성에 대해 말하는 것이 아닙니다.
prateek61

아마 sshuttle 이 tcp-over-tcp vpn에 대해 더 효과적 일 것입니다
ptman

답변:


13

짧은 대답 : disable comp-lzo.

나는 이것이 오래된 게시물이라는 것을 알고 있지만 OpenVPN 성능이 좋지 않습니다. MTU 조정, snd 및 rcv 버퍼 변경, mss 클램핑 등 모든 것을 시도했습니다. CPU로드는 무시할 만했다.

변덕스럽게도 압축을 비활성화 comp-lzo하고 (클라이언트와 서버에서 제거 ) 성능이 2-4 배 증가했습니다.

따라서 comp-lzo최대 성능 을 사용하도록 설정하면 약 25-30 Mbit / s이며, 120 Mbit / s (인터넷 연결 속도)에 도달하지 못했습니다.

서버는 Xeon E5-2650이며 클라이언트는 Core i5-3320M입니다. OpenVPN 2.3.10, AES-256-CBC, SHA512를 모두 실행합니다. 인텔 크롬 북도 인터넷 속도를 최대로 끌어 올렸습니다. IKEv2 터널 속도와 일치하는 Android 클라이언트 (14Mbit / s-> 30Mbit / s)에서 성능이 두 배로 향상되었습니다.


6

TCP는 TCP-over-TCP 문제로 인해 UDP보다 / much / 느리게 됩니다. 기본적으로 TCP는 패킷 삭제 / 혼잡을 사용하여 연결 매개 변수를 식별하며 TCP-over-OpenVPN 연결은이 중 하나를 경험하지 않습니다. 그러나 당신은 그것이 옵션이 아니라고 말했습니다.

mtu-disc연결에 가장 적합한 MTU 설정을 자동으로 검색 하는 옵션을 시도 할 수도 있습니다. 이더넷 헤더의 크기를 포함하여 OpenVPN의 MTU 설정과 같은 다른 위치에는 약간의 불일치가 있습니다. [ 1 ]

귀하의 tun-mtu설정은 65킬로바이트 패킷이 인터넷을 통해 진행 지연 문제를 많이해야 할 것입니다으로 (IPv4의 점보 패킷은 약 9000 크기 바이트, 로컬 네트워크에서 주로 작업입니다), 대규모이다. 대신 1300과 같이 1460 미만으로 MTU가 문제인지 확인하십시오.


2
고마워, OpenVPN에서 postgresql-query를 작동시키는 문제를 해결했습니다. 단일 열을 쿼리 할 때 작동했지만 전체 열에 대해서는 작동하지 않았습니다. 기본 MTU- 크기 1500이 원인 인 것 같습니다. 1300으로 설정하면 도움이됩니다!
Christian Benke

2

조금 늦었더라도 내가 한 일을 시도해 볼 수 있습니다.

모든 mss, mtu 등 관련 옵션 제거

기관에서 포트 스캔을 수행하고 UDP 포트를 선택하십시오. 일반적으로 53 GRE / 123 NDP 포트가 열려 있어야합니다.

이 줄을 서버 설정에 추가 하십시오 ( 여기 참조 )

#possible bandwidth increase
sndbuf 393216
rcvbuf 393216
push "sndbuf 393216"
push "rcvbuf 393216"

이 설정을 완전히 이해하지 못했지만 확실히 도움이되었습니다. 일부 경험에 따르면 처리량이 +/- 30 % 증가했습니다.

해당 포트 중 하나에서 서버를 시작하면 잘 가야합니다. : P

도움이 되었기를 바랍니다!


9
너무 많은 부두에 대해 -1하고 실제로 작업을 이해하지 못합니다. 그때 정직하게 무언가를 추천하는 것은 무책임하다는 것을 알았습니다.
Preexo April

0

sndbuf 및 rcvbuf는 OS가 더 빠른 설정에 최적화되어 있어도 전화 접속일부터 linux / unix / openvpn의 ANCIENT 설정을 수정하여 더 느린 설정을 옵트 미징합니다.

sndbuf / rcvbuf를 0으로 설정하면 OS 설정 만 사용됩니다.

push는 클라이언트가 올바르게 설정되었는지 확인하는 데 사용되지만 값이 필요합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.