Bagaimana saya bisa mempertahankan akses LAN lokal saat terhubung ke Cisco VPN?
Saat menghubungkan menggunakan Cisco VPN, server harus mampu menginstruksikan klien untuk mencegah akses LAN lokal.
Dengan asumsi opsi sisi server ini tidak dapat dimatikan, bagaimana bisa memungkinkan akses LAN lokal saat terhubung dengan klien Cisco VPN?
Dulu saya pikir itu hanya masalah rute yang ditambahkan yang menangkap lalu lintas LAN dengan metrik yang lebih tinggi, misalnya:
Network
Destination Netmask Gateway Interface Metric
10.0.0.0 255.255.0.0 10.0.0.3 10.0.0.3 20 <--Local LAN
10.0.0.0 255.255.0.0 192.168.199.1 192.168.199.12 1 <--VPN Link
Dan mencoba untuk menghapus 10.0.x.x -> 192.168.199.12
rute tidak berpengaruh:
>route delete 10.0.0.0
>route delete 10.0.0.0 mask 255.255.0.0
>route delete 10.0.0.0 mask 255.255.0.0 192.168.199.1
>route delete 10.0.0.0 mask 255.255.0.0 192.168.199.1 if 192.168.199.12
>route delete 10.0.0.0 mask 255.255.0.0 192.168.199.1 if 0x3
Dan sementara itu mungkin masih hanya masalah routing, upaya untuk menambah atau menghapus rute gagal.
Pada tingkat apa driver klien Cisco VPN melakukan apa dalam tumpukan jaringan yang mengambil alih kemampuan administrator lokal untuk mengelola mesin mereka?
Klien Cisco VPN tidak dapat menggunakan sihir. Ini masih perangkat lunak yang berjalan di komputer saya. Mekanisme apa yang digunakannya untuk mengganggu jaringan mesin saya? Apa yang terjadi ketika paket IP / ICMP tiba di jaringan? Di mana di tumpukan jaringan adalah paket dimakan?
Lihat juga
- Tidak ada koneksi internet dengan Cisco VPN
- Klien Cisco VPN mengganggu konektivitas ke server LDAP saya
- Cisco VPN menghentikan Penjelajahan Windows 7
- Bagaimana saya bisa melarang pembuatan rute di Windows XP saat terhubung ke Cisco VPN?
- Merutekan ulang lalu lintas lokal dan LAN lokal saat menggunakan VPN
- Klien VPN "Izinkan Akses LAN lokal"
- Izinkan Akses LAN Lokal untuk Klien VPN pada Contoh Konfigurasi Konsentrator VPN 3000
- Akses LAN hilang ketika saya terhubung ke VPN
- Dokumentasi Windows XP: Rute
Sunting: Hal-hal yang belum saya coba:
>route delete 10.0.*
Pembaruan: Karena Cisco telah meninggalkan klien lama mereka, demi AnyConnect (VPN berbasis HTTP SSL), pertanyaan ini, yang tidak terpecahkan, dapat dibiarkan sebagai peninggalan sejarah.
Ke depan, kami dapat mencoba memecahkan masalah yang sama dengan klien baru mereka .
sumber
Jawaban:
Masalah dengan Anyconnect adalah pertama-tama memodifikasi tabel routing, kemudian mengasuh dan memperbaikinya jika Anda memodifikasinya secara manual. Saya menemukan solusi untuk ini. Bekerja dengan versi 3.1.00495, 3.1.05152, 3.1.05170, dan mungkin hal lain dalam keluarga 3.1. Dapat bekerja dengan versi lain, setidaknya ide yang sama seharusnya berfungsi dengan asumsi kode tidak ditulis ulang. Untungnya bagi kami, Cisco telah menempatkan panggilan "pengasuh bayi" pengasuh bayi ke perpustakaan bersama. Jadi idenya adalah kita mencegah tindakan oleh vpnagentd via LD_PRELOAD.
Pertama kita membuat file
hack.c
:Catatan: Kode ini hanya berfungsi dengan Linux. Untuk menerapkan solusi ini ke mesin macOS, lihat versi yang disesuaikan macOS .
Kemudian kompilasi seperti ini:
Instal
libhack.so
ke jalur perpustakaan Cisco:Turunkan agen:
Pastikan itu benar-benar turun
Jika tidak,
kill -9
hanya untuk memastikan saja.Kemudian perbaiki /etc/init.d/vpnagentd dengan menambahkan di
LD_PRELOAD=/opt/cisco/anyconnect/lib/libhack.so
mana vpnagentd dipanggil sehingga terlihat seperti ini:Sekarang mulai agen:
Perbaiki iptables, karena AnyConnect mengacaukannya:
Anda mungkin ingin melakukan sesuatu yang lebih maju di sini untuk memungkinkan akses hanya ke host LAN tertentu.
Sekarang perbaiki rute yang Anda inginkan, misalnya:
Periksa untuk melihat apakah mereka benar-benar ada:
Versi sebelumnya yang lebih sederhana dari peretasan ini memberikan fungsi yang hanya berfungsi "mengembalikan 0;" - poster itu mencatat bahwa "Satu-satunya efek samping yang saya amati sejauh ini adalah vpnagentd menggunakan 100% CPU seperti yang dilaporkan oleh top, tetapi keseluruhan CPU hanya 3% pengguna dan 20% sistem, dan sistem ini responsif sempurna Saya menggantinya, sepertinya melakukan dua pemilihan dalam satu lingkaran ketika idle kembali dari keduanya dengan cepat, tetapi tidak pernah membaca atau menulis - Saya kira panggilan yang saya hentikan dengan LD_PRELOAD seharusnya dibaca. Mungkin ada cara yang lebih bersih untuk melakukannya, tetapi sejauh ini cukup baik untuk saya. Jika seseorang memiliki solusi yang lebih baik, silakan bagikan. "
Masalah dengan hack sepele itu menyebabkan inti cpu tunggal menjadi 100% setiap saat, secara efektif mengurangi jumlah thread cpu perangkat keras Anda satu per satu - apakah koneksi vpn Anda aktif atau tidak. Saya perhatikan bahwa yang dipilih oleh kode berada pada soket netlink, yang mengirimkan data vpnagentd ketika tabel routing berubah. vpnagentd terus memperhatikan ada pesan baru di soket netlink dan memanggil routeCallBackHandler untuk menanganinya, tetapi karena peretasan sepele tidak menghapus pesan baru itu maka ia terus dipanggil lagi dan lagi. kode baru yang disediakan di atas mem-flush data netlink sehingga loop tanpa akhir yang menyebabkan cpu 100% tidak terjadi.
Jika sesuatu tidak berfungsi, lakukan
gdb -p $(pidof vpnagentd)
, setelah dilampirkan:dan lihat di mana Anda berada. Lalu tebak saja yang ingin Anda hentikan, tambahkan ke hack.c dan kompilasi ulang.
sumber
_ZN27CInterfaceRouteMonitorLinux20routeCallbackHandlerEv
?nm /opt/cisco/anyconnect/lib/libvpnagentutilities.dylib | grep routeCallbackHandlerEv
dan kemudian Anda akan menemukan__ZN25CInterfaceRouteMonitorMac20routeCallbackHandlerEv
nm /opt/cisco/anyconnect/lib/libvpnagentutilities.so
kembalinm: /opt/cisco/anyconnect/lib/libvpnagentutilities.so: no symbols
pada AnyConnect saya di Ubuntu, jadi itu dihasilkan tanpa informasi tabel simbol. Bagaimana Anda bisa mendapatkannya?Ini SANGAT berbelit-belit, tetapi jika Anda membuat VM minimal menggunakan VMWare Player atau yang serupa, dan menjalankan klien VPN Cisco AnyConnect di dalamnya, dimungkinkan untuk mengatur perutean seperti yang Anda inginkan menggunakan adapter jaringan virtual VMWare, atau cukup gunakan VM untuk akses ke sumber daya apa pun yang diperlukan melalui Cisco SSL VPN dan file "seret / lepas" ke / dari mesin Anda yang sebenarnya.
sumber
Perangkat lunak Shrew Soft VPN melakukan trik untuk saya, juga, seperti yang disarankan Ian Boyd .
Itu dapat mengimpor profil klien Cisco VPN. Saya telah menggunakan Cisco VPN Client versi 5.0.05.0290, dan setelah menginstal Shrew VPN (versi 2.1.7) dan mengimpor profil Cisco, saya dapat mengakses LAN lokal saat terhubung ke VPN perusahaan tanpa konfigurasi tambahan koneksi VPN Shrew (atau perangkat lunak).
sumber
Terima kasih kepada Sasha Pachev untuk hack yang bagus di atas.
vpnagentd
juga mengacaukan resolver dengan menimpa perubahan yang dibuat/etc/resolv.conf
. Saya menyelesaikannya dengan akhirnya memenangkan perlombaan melawannya:Jangan lupa
chattr -i /etc/resolv.conf
ketika memutuskan koneksi.Saya mencoba menyelesaikannya dengan memotong panggilan balik, seperti untuk metode rute di atas, tetapi belum dapat menemukan panggilan balik atau metode yang sesuai.
Update1 / 2: A
strace
mengungkapkan yangvpnagentd
menggunakaninotify
API untuk memantau perubahan file resolver. Dari sana dan seterusnya menurun. Inilah retas tambahan:Itu sedikit berlebihan, memang, karena menonaktifkan semua file yang mengawasi agen. Tapi sepertinya berhasil OK.
Skrip pembungkus klien vpn di bawah ini mengintegrasikan semua fungsi (diperbarui untuk menyertakan peretasan tambahan ini).
chattr
tidak lagi digunakan / dibutuhkan.Pembaruan 3: Memperbaiki pengaturan nama pengguna / kata sandi dalam skrip. Sekarang menggunakan
vpn.conf
file dengan format yang dijelaskan di bawah ini (dan izin root-only).sumber
Perusahaan saya masih menggunakan vpn itu. Klien vpnc hanya mengubah pengaturan iptables Anda seperti itu:
Filter semua kecuali untuk lalu lintas vpn.
Cukup masukkan filter dalam file dengan iptables-save, tambahkan jalur akses INPUT dan OUTPOUT yang sesuai dengan kebutuhan Anda dan terapkan kembali file dengan iptables-restore.
misalnya untuk mengakses jaringan lokal pada 192.168.0
sumber
Ada berita tentang ini?
Saya sepenuhnya setuju dan bertanya-tanya tentang hal yang sama.
Bagaimanapun, ini adalah aplikasi yang memerlukan hak admin untuk menginstal dan ketika sedang berjalan mungkin sangat baik menyaring apa yang Anda lakukan ...
Upaya saya di Windows juga gagal:
Ha ha. Sepertinya tidak ada metrik di bawah 20 di sini.
sumber
Saya tidak tahu apakah saya memahaminya dengan benar, tetapi saya pertama-tama mengklarifikasi pemahaman saya:
Anda memiliki LAN lokal (misalnya, katakanlah 10.0.0.0/16, dan Cisco VPN Server jarak jauh (misalnya, 64.0.0.0/16). Anda ingin terhubung ke server VPN melalui klien Cisco VPN, namun Anda perlu untuk memiliki akses LAN. Dalam hal ini Anda ingin memisahkan seluruh 10.0.xx / 16 dari koneksi VPN). Rute berikut harus ditambahkan dalam klien Mac:
di mana en1 adalah antarmuka di mana Anda terhubung ke LAN Anda. Saya tahu Anda dapat menambahkan hal yang sama di Windows dan Linux juga.
sumber
Karena saya tidak dapat menambahkan komentar, saya akan memposting di sini. Saya berjalan di Windows.
Solusi menggunakan Virtual Machine dan menjalankan AnyConnect di dalam VM dan kemudian menggunakan VM sebagai mediator antara lingkungan kerja Anda dan jaringan perusahaan tidak akan berfungsi jika departemen TI "tercinta" Anda merutekan 0.0.0.0 melalui VPN sehingga bahkan jaringan lokal Anda (termasuk ini antara PC lokal dan VM Anda) dialihkan melalui VPN (sic!).
Saya mencoba menerapkan solusi yang diposting oleh @Sasha Pachev tetapi akhirnya saya menambal .dll sehingga mengembalikan 0 di awal fungsi. Akhirnya setelah beberapa pertarungan dengan perpustakaan dinamis, saya bisa memodifikasi tabel routing sesuai dengan kebutuhan saya tetapi ternyata itu tidak cukup!
Meskipun aturan saya tampaknya benar untuk mencapai tunneling split, saya masih mendapatkan Kegagalan Umum. Apakah Anda menemukan masalah yang sama seperti Anda bisa menyelesaikannya?
Beginilah tabel perutean saya sekarang (setelah modifikasi manual saat VPN aktif)
namun hasil ping mengikuti
Hanya untuk referensi, di bawah ini adalah bagaimana tabel rute terlihat ketika VPN terputus (tidak diubah)
dan seperti inilah tabelnya ketika VPN terhubung (tidak diubah) dalam hal ini ketika saya mencoba melakukan ping,
8.8.8.8
saya hanya mendapatkan batas waktu (karena firewall perusahaan tidak mengizinkan lalu lintas untuk pergi ke luar intranet)sumber
Bagi mereka yang ingin mempertahankan kendali atas tabel perutean mereka saat menggunakan Cisco AnyConnect SSL VPN, periksa OpenConnect . Keduanya mendukung Cisco AnyConnect SSL VPN dan tidak berusaha mengganggu atau mengamankan entri tabel perutean. @Adzim menyinggung ini dalam komentar di atas .
Setelah mencoba segala sesuatu selain menambal Klien Mobilitas Aman AnyConnect, saya berhasil menggantinya pada Windows dengan OpenConnect GUI . Ini memungkinkan saya untuk menjaga konektivitas ke sumber daya lokal (dan memperbarui tabel routing).
Saya menggunakan OpenConnect pada Windows tetapi juga mendukung Linux, BSD, dan macOS (di antara platform lain) sesuai dengan halaman proyek .
sumber
Coba hapus entri-entri itu dengan gateway untuk
10.64.202.13
melihat apakah ping8.8.8.8
berfungsi kemudian tambahkan satu per satu dan identifikasi yang mana yang menyebabkan masalah.Bagaimana Anda menambal DLL. Saya bahkan tidak bisa memodifikasi tabel routing karena terus menambahkan
0.0.0.0
dengan gateway VPN kembali.sumber