Bagaimana cara melihat pengguna yang terhubung untuk membuka server vpn?

59

Saya mengembangkan situs web untuk mengelola pengguna OpenVPN dengan kerangka kerja Django. Tapi saya perlu tahu apakah ada cara untuk mengekstrak pengguna aktif dari OpenVPN? Server saya menjalankan Ubuntu 12.04.

Hamid FzM
sumber

Jawaban:

84

Seharusnya ada log status yang dapat Anda lihat untuk menunjukkan kepada Anda, milik saya, untuk diperiksa:

cat /etc/openvpn/openvpn-status.log

SUNTING:

Sebagai alternatif, menambahkan bendera --management IP port [pw-file]atau menambahkan arahan yang sama ke Anda server.conf, misalnya:

management localhost 7505

Ini akan memungkinkan Anda untuk melakukan telnet ke port itu dan menawarkan kepada Anda daftar perintah untuk dijalankan:

telnet localhost 7505

help

kita sendiri
sumber
1
Terima kasih tetapi apakah ada cara lain untuk tidak melihat perubahan file? Misalnya perpustakaan yang mencantumkan pengguna yang terhubung?
Hamid FzM
1
@ HamidFzM tidak yakin tentang perpustakaan, Anda dapat menggunakan antarmuka manajemen yang saya tambahkan sebagai edit; tolong jangan gunakan IP selain localhost karena pasti akan merugikan keamanan Anda
c4urself
@ c4urself, output saya untuk .log adalah: bit.ly/1ORnsYp Di mana saya bisa melihat pengguna yang terhubung? Apakah mungkin untuk melihat ips yang diberikan kepada mereka melalui .log ini?
Maxim V. Pavlov
@ MaximV.Pavlov sepertinya tidak ada yang terhubung dalam kasus Anda. Ya, alamat IP ditampilkan.
c4urself
2
/etc/openvpn/openvpn-status.logtidak bekerja untuk saya di Debian, itu tidak pernah berubah, malah /var/run/openvpn/server.statusberhasil dengan sempurna.
Nelson
20

Untuk menyelesaikan jawaban @sekrett :

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

Ini akan terus berjalan, ini bukan pembunuhan "biasa", hanya permintaan untuk mencetak beberapa statistik.

Statistik yang ditampilkan sangat mudah dibaca. Output sampel:

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
MichaelC
sumber
Terima kasih atas perbaikannya. Jawaban saya benar tetapi tidak memiliki contoh dan penjelasan. :)
sekrett
7

Saya mendapatkan kebutuhan yang sama dan solusi termudah yang saya temukan adalah menggunakan telnet yang disebutkan untuk terhubung ke antarmuka manajemen (Anda harus menambahkan: manajemen localhost 6666 , dalam file konfigurasi server).

Untuk mendapatkan jumlah persis klien yang dapat Anda lakukan:

  • telnet localhost 6666
  • status

Maka Anda akan mendapatkan banyak log:

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
  • cari =>> KLIEN: ENV, n_clients = 19361

Dalam kasus saya karena saya memiliki jumlah klien yang sangat besar, menggunakan file log jelas tidak terlalu praktis.

Florent
sumber
perintah status Anda membantu saya, thx
Mohammed Noureldin
4

Anda juga dapat mengirim sinyal usr2 ke proses openvpn untuk membuatnya menulis informasi statistik ke syslog. Ini aman, Anda tidak perlu melakukan reboot jika Anda tidak mengaktifkan antarmuka manajemen sebelumnya.

sekrett
sumber
dapatkah kamu menulis perintah untuk ini?
Shayan_Aryan
1
@MichaelC menulisnya: killall -USR2 openvpn. Kemudian perhatikan log. Mungkin /var/log/syslogatau /var/log/messagestergantung pada distro.
sekrett
tetapi itu tidak membunuh openvpn?
Shayan_Aryan
killperintah dapat mengirim sinyal berbeda, USR2 tidak akan membunuh, itu hanya sinyal. Anda dapat melihat daftar di sini: linux.org/threads/kill-signals-and-commands-revised.11625 atau dengan menjalankan kill -l.
sekrett
Saya baru saja mencobanya. Itu tidak memberikan info tentang jumlah klien yang terhubung
Shayan_Aryan
4

Saya mengelola server OpenVPN perusahaan kami dan cara saya melihat koneksi aktif adalah seperti ini,

tambahkan ke /etc/openvpn/server.conf

management 127.0.0.1 5555

restart server openvpn

systemctl restart [email protected]

tambahkan paket OpenVPN Monitor Python - ini akan berjalan melalui server web Gunicorn dan menunjukkan koneksi aktif,

mkdir /opt/openvpn-monitor

buat virtual env (tidak diperlukan tetapi praktik yang baik dengan paket py)

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

instal paket yang diperlukan

pip install openvpn-monitor gunicorn

tambahkan file konfigurasi Monitor

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

mulai server web yang akan menunjukkan koneksi aktif,

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

Untuk menghentikan monitor

pkill gunicorn 

untuk melihat koneksi aktif, buka IP publik dari server VPN Anda

http://<ip of openvpn server>

pastikan untuk mengkonfigurasi firewall yang tepat untuk port 80, daftar putih hanya IP masuk yang tepercaya

masukkan deskripsi gambar di sini

perfecto25
sumber
1

Cukup gunakan sacli dengan perintah berikut. Ini akan mencantumkan klien VPN yang terhubung.

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

Untuk melihat semua IP gunakan opsi ini. ./sacli VPNStatus

BouncingSol
sumber