Tôi gặp vấn đề với đường hầm OpenVPN không đạt tốc độ đường truyền. Cổng là một máy chủ ảo Debian Jessy được lưu trữ tại OVH. Máy khách là máy chủ gia đình miễn phí 10.2 của tôi (Intel I3 Ivy Bridge) hoặc RaspberryPI2 của tôi. Tôi đã hủy kích hoạt mã hóa và xác thực. Tôi có kết nối FTTH đối xứng 100mbit / s nhưng đường hầm chỉ đạt tốc độ 20-40mbit / s. Kết nối trực tiếp (không có đường hầm) luôn mang lại tốc độ 100mbit / s mà tôi mong đợi. Tôi đã thử nghiệm hiệu suất với iperf3. Lần đầu tiên tôi thử với máy chủ gia đình freebsd của tôi. Tôi đã thử tất cả các cài đặt được đề xuất về mssfix, đoạn, v.v. Không có gì giúp được.
Sau đó tôi nghĩ có lẽ đó là máy freebsd của tôi. Vì vậy, tôi đã cài đặt một Jessy raspbian mới trên RPI2 của mình và thực hiện thêm một số thử nghiệm chuyên sâu:
Trước hết tôi đã xóa tất cả các cài đặt MTU khỏi cấu hình OpenVPN và để đường dẫn MTU xử lý mọi việc (hy vọng). Vì tôi không có tường lửa hoạt động trên cả hai máy nên nó hoạt động. Đây là những cấu hình vpn của tôi:
server 10.8.0.0 255.255.255.0
port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
user nobody
group nogroup
persist-key
persist-tun
ifconfig-pool-persist ipp.txt
keepalive 10 120
push "redirect-gateway def1"
status openvpn-status.log
verb 3
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/vpn.theissen.io.crt
key /etc/openvpn/easy-rsa/keys/vpn.theissen.io.key
dh /etc/openvpn/easy-rsa/keys/dh4096.pem
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
cipher none
auth none
comp-lzo no
client
proto udp
dev tun12
remote xxx.io 1194
resolv-retry infinite
sndbuf 0
rcvbuf 0
nobind
user nobody
group nogroup
persist-key
persist-tun
verb 3
pkcs12 /etc/openvpn/vpn.theissen.io/alex.p12
tls-auth /etc/openvpn/vpn.theissen.io/ta.key 1
ns-cert-type server
cipher none
auth none
comp-lzo no
Trước hết, thử nghiệm không có đường hầm để chỉ ra rằng kết nối đến máy chủ thực sự là gần 100mbit / s:
iperf3 -c vpn.theissen.io
Connecting to host vpn.theissen.io, port 5201
[ 4] local 192.168.1.253 port 34512 connected to 149.202.58.183 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 10.8 MBytes 90.5 Mbits/sec 0 335 KBytes
[ 4] 1.00-2.00 sec 11.4 MBytes 95.7 Mbits/sec 0 335 KBytes
[ 4] 2.00-3.00 sec 11.1 MBytes 93.0 Mbits/sec 0 352 KBytes
[ 4] 3.00-4.00 sec 11.2 MBytes 94.0 Mbits/sec 0 369 KBytes
[ 4] 4.00-5.00 sec 11.5 MBytes 95.9 Mbits/sec 0 390 KBytes
[ 4] 5.00-6.00 sec 11.0 MBytes 92.5 Mbits/sec 0 390 KBytes
[ 4] 6.00-7.00 sec 11.4 MBytes 95.2 Mbits/sec 0 390 KBytes
[ 4] 7.00-8.00 sec 11.2 MBytes 94.3 Mbits/sec 0 390 KBytes
[ 4] 8.00-9.00 sec 11.1 MBytes 93.3 Mbits/sec 0 390 KBytes
[ 4] 9.00-10.00 sec 11.3 MBytes 95.1 Mbits/sec 0 390 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 112 MBytes 93.9 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 112 MBytes 93.5 Mbits/sec receiver
iperf Done.
Các gói của kết nối này tôi đã kết xuất với tcpdump trên máy chủ. Bạn có thể tải chúng xuống đây (bạn phải giải nén để mở chúng bằng wireshark): dumpraw.cap.xz
Vì vậy, đây là cách một bãi chứa "OK" trông như thế nào. Kích thước khung hình tối đa tôi phát hiện là 1514.
Bây giờ tôi đã chạy thử qua đường hầm:
iperf3 -c 10.8.0.1
Connecting to host 10.8.0.1, port 5201
[ 4] local 10.8.0.14 port 36388 connected to 10.8.0.1 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 5.96 MBytes 50.0 Mbits/sec 127 133 KBytes
[ 4] 1.00-2.00 sec 5.19 MBytes 43.5 Mbits/sec 6 120 KBytes
[ 4] 2.00-3.00 sec 5.80 MBytes 48.7 Mbits/sec 0 151 KBytes
[ 4] 3.00-4.00 sec 4.27 MBytes 35.9 Mbits/sec 23 96.5 KBytes
[ 4] 4.00-5.00 sec 4.89 MBytes 41.0 Mbits/sec 0 129 KBytes
[ 4] 5.00-6.00 sec 6.11 MBytes 51.2 Mbits/sec 26 111 KBytes
[ 4] 6.00-7.00 sec 5.50 MBytes 46.1 Mbits/sec 0 143 KBytes
[ 4] 7.00-8.00 sec 5.25 MBytes 44.1 Mbits/sec 15 126 KBytes
[ 4] 8.00-9.00 sec 5.80 MBytes 48.7 Mbits/sec 0 158 KBytes
[ 4] 9.00-10.00 sec 3.97 MBytes 33.3 Mbits/sec 22 105 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 52.7 MBytes 44.2 Mbits/sec 219 sender
[ 4] 0.00-10.00 sec 52.3 MBytes 43.8 Mbits/sec receiver
iperf Done.
Rất tiếc. Không còn đẹp nữa. Đặc biệt là cột "Retr" này trông không được tốt lắm. Tôi giả sử đây là truyền lại tcp và sau đó sẽ có một cái gì đó trong bãi chứa. Chúng ta sẽ thấy rằng đó không phải là trường hợp: /. CPU không phải là nút cổ chai ở đây vì tôi đã hủy kích hoạt và xác thực. CPU ở mức 20% tại máy chủ và 50% trên PI trong quá trình thử nghiệm.
Đây là cách lưu lượng OpenVPN của thử nghiệm trông như thế nào:
Đối với tôi điều này có vẻ ổn. Nhưng tôi không biết phải tìm gì. Xin hãy xem bãi rác với wireshark: dump_physical.cap.xz
Giao thông trên giao diện đường hầm cũng tốt đối với tôi. Có vẻ như anh ta đã hạ chính xác kích thước khung hình (xuống 1444 như có vẻ):
Đây là bãi chứa: dump_tunnel.cap.xz
Đối với tôi điều này có vẻ ổn nhưng tôi thực sự không biết phải tìm gì chính xác. Tôi thực sự đã thử nghiệm mọi thứ với cài đặt OpenVPN. Có lẽ ai đó có thể cho tôi biết nếu giao thông có vẻ ổn.
Những gì tôi mong đợi như một câu trả lời
Ít nhất là một lời giải thích những gì đang xảy ra ở đây và tại sao nó dường như độc lập với phần mềm VPN mà tôi sử dụng. Tất cả những gì tôi tìm thấy trên internet là về các vấn đề MTU nhưng điều đó nên được khắc phục dễ dàng bằng cách giảm MTU đường hầm hoặc các tham số khác của OpenVPN. Đối với tôi điều này thay đổi ít. Khi bạn nhìn vào bãi chứa, bạn thấy rằng nó làm giảm kích thước phân đoạn tcp và các gói không bị phân mảnh. Phải có một cái gì đó khác. Tôi thực sự muốn biết những gì .
Cập nhật
Tôi đã thử nghiệm điều này với Strongswan và thậm chí với softether. Đây thực sự là một vấn đề tương tự (tốc độ tương đương, không có nút cổ chai cpu). Tôi thực sự bối rối vấn đề ở đây là gì. Tôi cũng đã thử một cổng khác (RaspberryPi2 trên kết nối nhà 100/100 của bạn bè).
Cập nhật 2
Tôi nhận thấy rằng iperf3 báo cáo tcp truyền lại (lấy) nhưng không có truyền lại trong kết xuất (Wireshark nên làm nổi bật chúng). Chuyện gì đang xảy ra vậy?
Tôi thậm chí đã thử OpenVPN trên Mạng cục bộ của mình (RaspberryPi2 đến FreebsdServer). Ngay cả ở đó tôi cũng có rất nhiều truyền lại (trên mạng LAN?!):
Connecting to host 192.168.222.11, port 5201
[ 4] local 192.168.222.10 port 46196 connected to 192.168.222.11 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 9.19 MBytes 77.0 Mbits/sec 8 141 KBytes
[ 4] 1.00-2.00 sec 8.71 MBytes 73.1 Mbits/sec 3 130 KBytes
[ 4] 2.00-3.00 sec 8.59 MBytes 72.0 Mbits/sec 3 120 KBytes
[ 4] 3.00-4.00 sec 8.65 MBytes 72.5 Mbits/sec 4 108 KBytes
[ 4] 4.00-5.00 sec 8.65 MBytes 72.5 Mbits/sec 4 95.6 KBytes
[ 4] 5.00-6.00 sec 8.52 MBytes 71.5 Mbits/sec 2 80.5 KBytes
[ 4] 6.00-7.00 sec 8.83 MBytes 74.1 Mbits/sec 0 141 KBytes
[ 4] 7.00-8.00 sec 8.59 MBytes 72.0 Mbits/sec 7 106 KBytes
[ 4] 8.00-9.00 sec 8.71 MBytes 73.1 Mbits/sec 3 94.2 KBytes
[ 4] 9.00-10.00 sec 8.59 MBytes 72.0 Mbits/sec 3 79.2 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 87.0 MBytes 73.0 Mbits/sec 37 sender
[ 4] 0.00-10.00 sec 86.8 MBytes 72.8 Mbits/sec receiver
Ở chế độ đảo ngược, tôi có một cửa sổ tắc nghẽn thực sự kỳ lạ (wtf?):
Accepted connection from 192.168.222.10, port 46197
[ 5] local 192.168.222.11 port 5201 connected to 192.168.222.10 port 46198
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 5] 0.00-1.00 sec 8.90 MBytes 74.7 Mbits/sec 3 1.48 GBytes
[ 5] 1.00-2.00 sec 8.45 MBytes 70.9 Mbits/sec 2 1.59 GBytes
[ 5] 2.00-3.00 sec 8.66 MBytes 72.7 Mbits/sec 518 214 MBytes
[ 5] 3.00-4.00 sec 7.96 MBytes 66.8 Mbits/sec 37 703 MBytes
[ 5] 4.00-5.00 sec 8.09 MBytes 67.9 Mbits/sec 0 719 MBytes
[ 5] 5.00-6.00 sec 8.04 MBytes 67.5 Mbits/sec 0 734 MBytes
[ 5] 6.00-7.00 sec 8.07 MBytes 67.7 Mbits/sec 1 703 MBytes
[ 5] 7.00-8.00 sec 8.07 MBytes 67.7 Mbits/sec 1 703 MBytes
[ 5] 8.00-9.00 sec 7.99 MBytes 67.1 Mbits/sec 2 693 MBytes
[ 5] 9.00-10.00 sec 8.06 MBytes 67.6 Mbits/sec 1 693 MBytes
[ 5] 10.00-10.09 sec 684 KBytes 64.5 Mbits/sec 0 695 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 5] 0.00-10.09 sec 83.0 MBytes 69.0 Mbits/sec 565 sender
[ 5] 0.00-10.09 sec 0.00 Bytes 0.00 bits/sec receiver
Cập nhật 3
Sử dụng iperf với kết quả udp trong việc chặn tạm thời cổng đó (họ gửi cho tôi một email thông báo cho tôi về một cuộc tấn công) và mất gói lớn:
-----------------------------------------------------------
Server listening on 1194
-----------------------------------------------------------
Accepted connection from 185.22.143.160, port 15906
[ 5] local 149.202.58.183 port 1194 connected to 185.22.143.160 port 4355
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 5] 0.00-1.00 sec 2.89 MBytes 24.2 Mbits/sec 0.727 ms 1017/1387 (73%)
iperf3: OUT OF ORDER - incoming packet = 1409 and received packet = 1470 AND SP = 5
iperf3: OUT OF ORDER - incoming packet = 1410 and received packet = 1471 AND SP = 5
iperf3: OUT OF ORDER - incoming packet = 1411 and received packet = 1472 AND SP = 5
iperf3: OUT OF ORDER - incoming packet = 1445 and received packet = 1473 AND SP = 5
iperf3: OUT OF ORDER - incoming packet = 1463 and received packet = 1473 AND SP = 5
[ 5] 1.00-2.00 sec 3.29 MBytes 27.6 Mbits/sec 0.716 ms 1110/1526 (73%)
[ 5] 2.00-3.00 sec 3.30 MBytes 27.7 Mbits/sec 0.732 ms 1103/1526 (72%)
[ 5] 3.00-4.00 sec 3.27 MBytes 27.4 Mbits/sec 0.717 ms 1108/1526 (73%)
[ 5] 4.00-5.00 sec 1.56 MBytes 13.1 Mbits/sec 0.837 ms 546/746 (73%)
[ 5] 5.00-6.00 sec 0.00 Bytes 0.00 bits/sec 0.837 ms 0/0 (-nan%)
[ 5] 6.00-7.00 sec 0.00 Bytes 0.00 bits/sec 0.837 ms 0/0 (-nan%)
[ 5] 7.00-8.00 sec 0.00 Bytes 0.00 bits/sec 0.837 ms 0/0 (-nan%)
[ 5] 8.00-9.00 sec 0.00 Bytes 0.00 bits/sec 0.837 ms 0/0 (-nan%)
[ 5] 9.00-10.00 sec 0.00 Bytes 0.00 bits/sec 0.837 ms 0/0 (-nan%)
[ 5] 10.00-10.06 sec 0.00 Bytes 0.00 bits/sec 0.837 ms 0/0 (-nan%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 5] 0.00-10.06 sec 118 MBytes 98.5 Mbits/sec 0.837 ms 4884/6711 (73%)
[SUM] 0.0-10.1 sec 4884 datagrams received out-of-order
tun-mtu 9000
fragment 0
mssfix 0
(các tùy chọn cần được thêm vào trong ba dòng khác nhau)