Làm thế nào để xem người dùng được kết nối để mở máy chủ vpn?


59

Tôi đang phát triển một trang web để quản lý người dùng OpenVPN với khung Django. Nhưng tôi cần biết có cách nào để trích xuất người dùng hoạt động từ OpenVPN không? Máy chủ của tôi đang chạy Ubuntu 12.04.

Câu trả lời:


84

Cần có một nhật ký trạng thái mà bạn có thể xem để hiển thị cho bạn, của tôi là, để kiểm tra:

cat /etc/openvpn/openvpn-status.log

BIÊN TẬP:

Cách khác, thêm cờ --management IP port [pw-file]hoặc thêm lệnh tương tự vào server.confví dụ của bạn :

management localhost 7505

Điều này sẽ cho phép bạn telnet đến cổng đó và cung cấp cho bạn một danh sách các lệnh để chạy:

telnet localhost 7505

help


1
Cảm ơn nhưng có cách nào khác để không xem thay đổi tập tin không? Ví dụ một thư viện liệt kê những người dùng được kết nối?
Hamid FzM

1
@ HamidFzM không chắc chắn về thư viện, bạn có thể sử dụng giao diện quản lý mà tôi đã thêm dưới dạng chỉnh sửa; vui lòng không sử dụng IP khác ngoài localhost vì nó chắc chắn sẽ gây bất lợi cho bảo mật của bạn
c4urself

@ c4urself, đầu ra của tôi cho .log là: bit.ly/1ORnsYp Tôi có thể thấy người dùng được kết nối ở đâu? Có thể thấy các ips được gán cho chúng thông qua .log này không?
Maxim V. Pavlov

@ MaximV.Pavlov có vẻ như không có ai được kết nối trong trường hợp của bạn. Có, địa chỉ IP được hiển thị.
c4urself

2
/etc/openvpn/openvpn-status.logTôi không làm việc với Debian, nó không bao giờ thay đổi, thay vào đó /var/run/openvpn/server.statusnó hoạt động hoàn hảo.
Nelson

20

Để hoàn thành câu trả lời @sekrett :

killall -USR2 openvpn ; tail -f /var/log/syslog

Nó sẽ tiếp tục chạy, nó không phải là "giết" thông thường, chỉ là một yêu cầu in một số thống kê.

Thống kê hiển thị là rất dễ đọc. Đầu ra mẫu:

Oct 14 07:34:14 vpn2 openvpn[20959]: Updated,Fri Oct 14 07:34:14 2016
Oct 14 07:34:14 vpn2 openvpn[20959]: Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
Oct 14 07:26:26 vpn2 openvpn[20959]:
10.8.0.132,hostname1,213.219.XXX.XXX:63765,Fri Oct 14 07:25:01 2016
Oct 14 07:26:26 vpn2 openvpn[20959]:
10.8.0.242,hostname2,213.219.XXX.XXX:62416,Sun Sep 25 03:49:19 2016

Cảm ơn đã cải thiện. Câu trả lời của tôi là đúng nhưng nó thiếu một ví dụ và giải thích. :)
sekrett

7

Tôi cũng có nhu cầu tương tự và giải pháp đơn giản nhất mà tôi đã tìm ra là sử dụng như telnet đã đề cập để kết nối với giao diện quản lý (bạn sẽ phải thêm: quản lý localhost 6666 , trong tệp cấu hình máy chủ).

Để có được số lượng khách hàng chính xác, bạn có thể làm:

  • telnet localhost 6666
  • trạng thái

Sau đó, bạn sẽ nhận được rất nhiều nhật ký:

10.9.10.11,test-docker,52.58.48.98:56859,Wed May  4 09:37:34 2016
10.9.7.45,test-docker,52.58.156.80:38774,Wed May  4 09:36:59 2016
10.9.1.103,test-docker,52.58.161.230:52201,Wed May  4 09:35:47 2016
GLOBAL STATS
Max bcast/mcast queue length,0
END
>CLIENT:ESTABLISHED,19845
>CLIENT:ENV,n_clients=19361
>CLIENT:ENV,time_unix=1462357164
  • tìm kiếm = >> KHÁCH HÀNG: ENV, n_clents = 19361

Trong trường hợp của tôi vì tôi có số lượng khách hàng rất lớn, sử dụng tệp nhật ký chắc chắn không thực tế lắm.


lệnh trạng thái của bạn đã giúp tôi, thx
Mohammed Noureldin

4

Bạn cũng có thể gửi tín hiệu usr2 đến tiến trình openvpn để làm cho nó ghi thông tin thống kê vào syslog. Điều này là an toàn, bạn không cần phải khởi động lại trong trường hợp bạn không kích hoạt giao diện quản lý trước đó.


bạn có thể viết một lệnh cho điều này?
Shayan_Aryan

1
@MichaelC đã viết nó : killall -USR2 openvpn. Sau đó xem nhật ký. Nó có thể /var/log/sysloghoặc /var/log/messagestùy thuộc vào distro.
sekrett

Nhưng nó không giết openvpn?
Shayan_Aryan

killlệnh có thể gửi các tín hiệu khác nhau, USR2 sẽ không giết, nó chỉ là một tín hiệu. Bạn có thể xem danh sách tại đây: linux.org/threads/kill-signals-and-commands-revised.11625 hoặc bằng cách chạy kill -l.
sekrett

Tôi chỉ thử nó. Nó không cung cấp thông tin về số lượng khách hàng được kết nối
Shayan_Aryan 16/07/18

4

Tôi quản lý các máy chủ OpenVPN của công ty chúng tôi và cách tôi thấy các kết nối hoạt động là như thế này,

thêm vào /etc/openvpn/server.conf

management 127.0.0.1 5555

khởi động lại máy chủ openvpn

systemctl restart openvpn@server.service

thêm gói Python OpenVPN Monitor - gói này sẽ chạy qua máy chủ web Gunicorn và hiển thị các kết nối hoạt động,

mkdir /opt/openvpn-monitor

tạo một env ảo (không bắt buộc nhưng thực hành tốt với các gói py)

cd /opt/openvpn-monitor
virtualenv venv
source venv/bin/activate

cài đặt các gói yêu cầu

pip install openvpn-monitor gunicorn

thêm một tập tin cấu hình màn hình

vi /opt/openvpn-monitor/openvpn-monitor.conf

[openvpn-monitor]
site=your-openvpn-site
#logo=logo.jpg
#latitude=40.72
#longitude=-74
maps=True
geoip_data=/var/lib/GeoIP/GeoLite2-City.mmdb
datetime_format=%d/%m/%Y %H:%M:%S

[VPN1]
host=localhost
port=
name=Your VPN Server Name
show_disconnect=False

khởi động máy chủ web sẽ hiển thị các kết nối hoạt động,

gunicorn openvpn-monitor -b 0.0.0.0:80 --name openvpn-monitor --daemon

Dừng màn hình

pkill gunicorn 

để xem các kết nối hoạt động, hãy truy cập IP công cộng của máy chủ VPN của bạn

http://<ip of openvpn server>

đảm bảo định cấu hình tường lửa phù hợp cho cổng 80, danh sách trắng chỉ các IP trong nước đáng tin cậy

nhập mô tả hình ảnh ở đây


1

Chỉ cần sử dụng sacli với lệnh sau. Điều này sẽ liệt kê các máy khách VPN được kết nối.

/usr/local/openvpn_as/scripts/sacli VPNSummary
{
"n_clients": 15
}

Để xem tất cả các IP sử dụng tùy chọn này. ./sacli VPNStatus

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.