วิธีดูผู้ใช้ที่เชื่อมต่อเพื่อเปิดเซิร์ฟเวอร์ VPN?


59

ฉันกำลังพัฒนาเว็บไซต์สำหรับการจัดการผู้ใช้ OpenVPN ด้วยกรอบงาน Django แต่ฉันต้องรู้ว่ามีวิธีใดที่จะดึงผู้ใช้ที่ใช้งานอยู่จาก OpenVPN? เซิร์ฟเวอร์ของฉันใช้งาน Ubuntu 12.04

คำตอบ:


84

ควรมีบันทึกสถานะที่คุณสามารถดูเพื่อแสดงให้คุณเห็นว่าเป็นของฉันสำหรับการตรวจ:

cat /etc/openvpn/openvpn-status.log

แก้ไข:

เป็นทางเลือกให้เพิ่มการตั้งค่าสถานะ--management IP port [pw-file]หรือเพิ่มคำสั่งเดียวกันนั้นให้กับคุณserver.confตัวอย่างเช่น:

management localhost 7505

สิ่งนี้จะช่วยให้คุณสามารถ telnet ไปยังพอร์ตนั้นและเสนอรายการคำสั่งให้คุณเรียกใช้:

telnet localhost 7505

help


1
ขอบคุณ แต่มีวิธีอื่นที่จะไม่คอยดูการเปลี่ยนแปลงของไฟล์หรือไม่? ตัวอย่างเช่นห้องสมุดที่แสดงรายการผู้ใช้ที่เชื่อมต่อ?
ฮามิด FzM

1
@HamidFzM ไม่แน่ใจเกี่ยวกับไลบรารีคุณสามารถใช้อินเทอร์เฟซการจัดการที่ฉันเพิ่มเป็นการแก้ไข โปรดอย่าใช้ IP อื่นที่ไม่ใช่ localhost เพราะมันจะเป็นอันตรายต่อความปลอดภัยของคุณ
c4urself

@ c4urself ผลลัพธ์ของฉันสำหรับ. log คือ: bit.ly/1ORnsYpฉันจะดูผู้ใช้ที่เชื่อมต่อได้ที่ไหน เป็นไปได้ไหมที่จะเห็น ips ที่กำหนดให้กับพวกเขาผ่าน. log นี้
Maxim V. Pavlov

@ MaximV.Pavlov ดูเหมือนว่าไม่มีใครเชื่อมต่อในกรณีของคุณ ใช่แสดงที่อยู่ IP
c4urself

2
/etc/openvpn/openvpn-status.logไม่ทำงานสำหรับฉันใน Debian มันไม่เคยเปลี่ยนเลย/var/run/openvpn/server.statusทำงานได้อย่างสมบูรณ์แบบแทน
เนลสัน

20

หากต้องการตอบ@sekrettให้สมบูรณ์:

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

มันจะวิ่งต่อไปไม่ใช่การฆ่า "ปกติ" เพียงแค่ขอพิมพ์สถิติบางอย่าง

สถิติที่แสดงนั้นอ่านง่ายมาก ตัวอย่างผลลัพธ์:

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

ขอบคุณสำหรับการปรับปรุง คำตอบของฉันถูกต้อง แต่ไม่มีตัวอย่างและคำอธิบาย :)
sekrett

7

ฉันต้องการตัวเองเหมือนกันและวิธีที่ง่ายที่สุดที่ฉันพบคือใช้ telnet ที่กล่าวถึงเพื่อเชื่อมต่อกับส่วนต่อประสานการจัดการ (คุณต้องเพิ่ม: management localhost 6666ในไฟล์ config ของเซิร์ฟเวอร์)

ในการรับจำนวนลูกค้าที่แน่นอนคุณสามารถทำได้:

  • telnet localhost 6666
  • สถานะ

จากนั้นคุณจะได้รับบันทึกจำนวนมาก:

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
  • ค้นหา =>> ลูกค้า: ENV, n_clients = 19361

ในกรณีของฉันเนื่องจากฉันมีลูกค้าจำนวนมากการใช้แฟ้มบันทึกนั้นไม่ได้ใช้งานได้อย่างแน่นอน


คำสั่งสถานะของคุณช่วยฉันขอบคุณ
Mohammed Noureldin

4

คุณยังสามารถส่งสัญญาณ usr2 ไปยังกระบวนการ openvpn เพื่อให้มันเขียนข้อมูลสถิติไปยัง syslog สิ่งนี้ปลอดภัยคุณไม่จำเป็นต้องรีบูตในกรณีที่คุณไม่ได้เปิดใช้งานส่วนต่อประสานการจัดการมาก่อน


คุณสามารถเขียนคำสั่งสำหรับสิ่งนี้ได้ไหม?
Shayan_Aryan

1
@MichaelC killall -USR2 openvpnเขียน: จากนั้นดูบันทึก มันอาจจะเป็น/var/log/syslogหรือ/var/log/messagesขึ้นอยู่กับ distro
sekrett

แต่มันไม่ฆ่า openvpn?
Shayan_Aryan

killคำสั่งสามารถส่งสัญญาณที่แตกต่างกัน USR2 จะไม่ฆ่ามันเป็นเพียงสัญญาณ คุณสามารถดูรายการที่นี่: linux.org/threads/kill-signals-and-commands-revised.11625kill -lหรือโดยการเรียกใช้
sekrett

ฉันแค่ลองมัน มันไม่ได้ให้ข้อมูลเกี่ยวกับลูกค้าที่เชื่อมต่อนับ
Shayan_Aryan

4

ฉันจัดการเซิร์ฟเวอร์ OpenVPN ของ บริษัท ของเราและวิธีที่ฉันเห็นการเชื่อมต่อที่ใช้งานอยู่เป็นเช่นนี้

เพิ่ม /etc/openvpn/server.conf

management 127.0.0.1 5555

รีสตาร์ทเซิร์ฟเวอร์ openvpn

systemctl restart openvpn@server.service

เพิ่มแพ็คเกจ OpenVPN Monitor Python ซึ่งจะทำงานผ่านเว็บเซิร์ฟเวอร์ของ Gunicorn และแสดงการเชื่อมต่อที่ใช้งานอยู่

mkdir /opt/openvpn-monitor

สร้าง env เสมือน (ไม่จำเป็น แต่ต้องมีการปฏิบัติที่ดีกับแพคเกจ py)

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

ติดตั้งแพ็คเกจที่ต้องการ

pip install openvpn-monitor gunicorn

เพิ่มไฟล์ตรวจสอบการกำหนดค่า

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

เริ่มเว็บเซิร์ฟเวอร์ที่จะแสดงการเชื่อมต่อที่ใช้งานอยู่

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

เพื่อหยุดการตรวจสอบ

pkill gunicorn 

หากต้องการดูการเชื่อมต่อที่ใช้งานอยู่ให้ไปที่ IP สาธารณะของเซิร์ฟเวอร์ VPN ของคุณ

http://<ip of openvpn server>

ตรวจสอบให้แน่ใจว่าได้กำหนดค่าไฟร์วอลล์ที่เหมาะสมสำหรับพอร์ต 80 รายการที่อนุญาตเท่านั้นที่เชื่อถือได้ IP ขาเข้า

ป้อนคำอธิบายรูปภาพที่นี่


1

เพียงใช้ sacli ด้วยคำสั่งต่อไปนี้ นี่จะแสดงรายการไคลเอนต์ VPN ที่เชื่อมต่อ

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

หากต้องการดู IP ทั้งหมดให้ใช้ตัวเลือกนี้ ./sacli VPNStatus

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.