Routing semua traffic melalui VPN di Ubuntu Linux

13

Setelah menghabiskan berjam-jam pemecahan masalah, mencari solusi potensial di situs ini dan yang lainnya, dan saya pasrah untuk meminta saran dari atasan saya. Saya bekerja untuk merutekan semua lalu lintas jaringan dengan instance Ubuntu melalui Cisco VPN di universitas. Dengan menggunakan pengelola jaringan bawaan atau vpnc, saya dapat berhasil membuat koneksi ke VPN, dan berhasil merutekan lalu lintas ke IP universitas mana pun melalui VPN. Namun, selain rentang IP spesifik tersebut, saya tidak bisa menyulap rute apa pun yang akan berhasil memetakan semua lalu lintas jaringan melalui VPN.

Sejauh ini, saya sudah berusaha:

rute tambahkan -net 0,0.0.0 gw homeportal dev tun0
rute tambahkan -net 0,0.0.0 tun0
rute add -net 0.0.0.0 gw 128.122.252.77 dev tun0
rute tambahkan -net 0,0.0.0 gw 128.122.252.77 dev eth0
iptables -Sebuah FORWARD -o tun0 -j MENERIMA
iptables -Sebuah ke depan -i tun0 -j MENERIMA
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Dan banyak hal konyol dan tidak efektif lainnya yang tidak dapat saya ingat dengan baik untuk ditranskripsikan secara akurat.

Selain itu, saya sudah mencoba merutekan rentang IP yang lebih kecil, dan IP tertentu, masing-masing tidak berhasil. Saya tidak begitu yakin apa yang salah, karena dampak yang dapat saya amati adalah kegagalan resolusi nama, dan kegagalan untuk merutekan lalu lintas melalui VPN. Apa yang saya lakukan salah di sini?

Edit-

Ini adalah output ip route showsetelah memulai koneksi VPN dengan VPNC:

default via 192.168.1.254 dev eth0 proto statis 
10.0.0.0/8 link ruang lingkup dev tun0 
91.230.41.0/24 dev tun0 scope link 
128.122.0.0/16 link ruang lingkup dev tun0 
128.122.252.68 via 192.168.1.254 dev eth0 src 192.168.1.32 
128.122.253.46 dev tun0 scope link 
128.122.253.79 dev tun0 scope link 
172.16.0.0/12 link cakupan dev tun0 
192.168.0.0/16 dev tun0 scope link 
192.168.1.0/24 dev eth0 proto kernel lingkup tautan src 192.168.1.32 metrik 1 
193.175.54.0/24 dev tun0 scope link 
193.205.158.0/25 dev tun0 scope link 
193.206.104.0/24 dev tun0 lingkup tautan 
195.113.94.0/24 link ruang lingkup dev tun0 
203.126.200.0/24 link ruang lingkup dev tun0 
203.174.165.128/25 dev link link lingkup 
212.219.93.0/24 link ruang lingkup dev tun0 
216.165.0.0/17 dev tun0 lingkup tautan

Informasi lebih lanjut-

Saya telah berhasil mengarahkan lalu lintas sewenang-wenang melalui VPN ini di MS Windows melalui klien Cisco AnyConnect dengan konfigurasi default. Inilah tabel routing yang terlihat ketika klien AnyConnect bekerja (ini adalah komputer yang berbeda di belakang router yang sama di 192.168.1.254).

Tabel Rute IPv4
================================================== =========================
Rute Aktif:
Metrik Antarmuka Gateway Netmask Gateway Tujuan Jaringan
          0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.13 30
         10.0.0.0 255.0.0.0 192.168.128.1 192.168.128.197 2
      91.230.41.0 255.255.255.0 192.168.128.1 192.168.128.197 2
        127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
        127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
  127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
      128.122.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
   128.122.252.68 255.255.255.255 192.168.1.254 192.168.1.13 31
       172.16.0.0 255.240.0.0 192.168.128.1 192.168.128.197 2
      192.168.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
      192.168.1.0 255.255.255.0 On-link 192.168.1.13 286
     192.168.1.13 255.255.255.255 On-link 192.168.1.13 286
    192.168.1.254 255.255.255.255 On-link 192.168.1.13 31
    192.168.1.255 255.255.255.255 On-link 192.168.1.13 286
     192.168.31.0 255.255.255.0 On-link 192.168.31.1 276
     192.168.31.1 255.255.255.255 On-link 192.168.31.1 276
   192.168.31.255 255.255.255.255 On-link 192.168.31.1 276
    192.168.128.0 255.255.255.0 On-link 192.168.128.197 257
  192.168.128.197 255.255.255.255 On-link 192.168.128.197 257
  192.168.128.255 255.255.255.255 On-link 192.168.128.197 257
    192.168.203.0 255.255.255.0 On-link 192.168.203.1 276
    192.168.203.1 255.255.255.255 On-link 192.168.203.1 276
  192.168.203.255 255.255.255.255 On-link 192.168.203.1 276
     193.175.54.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    193.205.158.0 255.255.255.128 192.168.128.1 192.168.128.197 2
    193.206.104.0 255.255.255.0 192.168.128.1 192.168.128.197 2
     195.113.94.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    203.126.200.0 255.255.255.0 192.168.128.1 192.168.128.197 2
  203.174.165.128 255.255.255.128 192.168.128.1 192.168.128.197 2
     212.219.93.0 255.255.255.0 192.168.128.1 192.168.128.197 2
      216.165.0.0 255.255.128.0 192.168.128.1 192.168.128.197 2
        224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
        224.0.0.0 240.0.0.0 On-link 192.168.1.13 286
        224.0.0.0 240.0.0.0 On-link 192.168.203.1 276
        224.0.0.0 240.0.0.0 On-link 192.168.31.1 276
        224.0.0.0 240.0.0.0 On-link 192.168.128.197 10000
  255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
  255.255.255.255 255.255.255.255 On-link 192.168.1.13 286
  255.255.255.255 255.255.255.255 On-link 192.168.203.1 276
  255.255.255.255 255.255.255.255 On-link 192.168.31.1 276
  255.255.255.255 255.255.255.255 On-link 192.168.128.197 10000
================================================== =========================
deftfyodor
sumber
Saya membayangkan bahwa akan jelas bahwa perutean jaringan cukup baru bagi saya, jadi saya akan menghargai tingkat verbositas yang cukup tinggi dalam jawaban.
deftfyodor
1
Akan sangat membantu jika Anda dapat menyatakan apakah Anda menggunakan klien apa saja (anyconnect?), Dan jika Anda dapat memposting tabel routing Anda, terima kasih.
MariusMatutiae
Melakukannya menggunakan ip route, omong-omong.
user1686
2
Ya, tolong jangan gunakan perintah routing yang usang: gunakan ip route show untuk tabel routing. Perintah usang menyembunyikan beberapa kompleksitas yang mungkin dan bermanfaat juga dengan VPN, apalagi VLAN, ...
MariusMatutiae
@grawity, @MariusMatutiae - Tentu saja, saya telah mengedit pertanyaan dengan output perintah. Terima kasih telah menyebutkan ip routeperintah, saya belum pernah melewatinya sebelumnya.
deftfyodor

Jawaban:

3

Jaringan lokal Anda adalah 192.168.1.0/24, seperti yang ditunjukkan oleh baris ini di tabel perutean Anda:

 192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.32  metric 1

Jaringan VPN Anda adalah 10.0.0.0/8, seperti yang ditunjukkan oleh baris ini:

 10.0.0.0/8 dev tun0  scope link 

Saat ini, router default Anda adalah:

 default via 192.168.1.254 dev eth0  proto static 

yang tentu saja tidak Anda inginkan, karena itu milik LAN lokal Anda: dengan demikian semua barang Anda dialihkan melalui gateway lokal Anda, seolah-olah VPN itu tidak ada.

 You do have however, the all-important statement

 128.122.252.68 via 192.168.1.254 dev eth0  src 192.168.1.32  

yang merupakan rute ke penyedia VPN Anda.

EDIT:

Saya tidak menyadari bahwa tabel routing hanyalah yang diperoleh dari VPN Anda, tanpa campur tangan Anda. Ini dapat menunjukkan (secara tidak langsung) bahwa penyedia layanan Anda hanya ingin meneruskan lalu lintas yang secara eksplisit diizinkan di tabel Anda melalui antarmuka tun0, dan mungkin telah mengambil langkah lebih lanjut untuk memblokir semua lalu lintas lainnya, dalam hal ini upaya Anda akan sia-sia.

Namun, dengan asumsi penyedia Anda bersedia untuk meneruskan semua lalu lintas Anda, apa yang perlu Anda lakukan adalah sebagai berikut.

Pertama, Anda perlu mencari tahu apakah ada gateway yang mau menerima koneksi Anda di sisi lain, karena kami membutuhkan alamat IP-nya. Saya akan memberi Anda empat metode untuk melakukan ini.

1) Dengan pc terhubung ke VPN, coba perintah berikut:

   sudo dhclient -v tun0

Jika semuanya berjalan dengan baik, Anda akan melihat balasan berisi baris ini:

 DHCPOFFER of a.b.c.d from x.y.w.z

xywz adalah alamat IP gateway lokal. Anda mungkin harus mematikan VPN setelah tes ini, dan mungkin bahkan untuk reboot komputer Anda, karena kami baru saja mengacaukan tabel routing dengan cukup baik.

2) Atau, Anda dapat mencoba menavigasi ke salah satu situs yang diizinkan (yang muncul di tabel perutean Anda melalui antarmuka tun0 ), lalu mengeluarkan perintah:

  ip neigh show

Anda harus mendapatkan daftar PC yang dihubungi melalui protokol ARP, dengan MAC dan alamat IP; kemungkinan besar, Anda akan menerima nol atau satu balasan. Jika Anda mendapatkan satu balasan, maka itu router Anda.

3) Jika Anda tidak mendapatkan balasan seperti itu, maka Anda dapat mencobanya

  sudo nmap -sn 10.0.0.0/8

(yang akan menjadi sangat lambat). Gateway Anda akan menjadi salah satu dari daftar yang terdaftar, kemungkinan besar alamat yang berakhiran .1 atau .254, jika ada.

4) Gunakan perintah tcpdump:

  sudo tcpdump -n -i tun0

dan lihat alamat IP yang dimuntahkan oleh perintah.

Jika Anda tidak mendapatkan jawaban yang benar untuk tes ini, itu berarti seseorang telah benar-benar mengencangkan sekrup di jaringannya.

Tapi mari kita optimis, dan anggap Anda sekarang memiliki kandidat alamat IP xwyz untuk router jarak jauh. Anda harus menghapus gateway default, (seperti sudo!):

  ip route del default via 192.168.1.254

dan tambahkan yang baru:

  ip route add default via x.w.y.z 

dan cobalah menavigasi.

Coba saya ulangi: karena penyedia Anda telah mengizinkan lalu lintas hanya ke beberapa alamat IP yang dipilih melalui VPN-nya, ada kemungkinan ia mungkin telah mengambil tindakan ekstra (= firewall) untuk mencegah pengguna yang cerdas memaksa lalu lintas generiknya melalui VPN-nya. Dalam hal ini, tidak ada yang bisa Anda lakukan. Tetapi jika tidak, langkah-langkah di atas akan membantu Anda menemukan solusi.

MariusMatutiae
sumber
Terima kasih atas jawaban yang sangat rinci, namun memasuki babak kedua, saya mengalami sedikit cegukan. output dari ip addr show dev tun0bacaan 10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1412 qdisc pfifo_fast state UNKNOWN group default qlen 500 link/none inet 192.168.128.193/24 brd 192.168.128.255 scope global tun0 valid_lft forever preferred_lft forever, tanpa alamat rekan untuk diamati. Selain itu, tabel routing yang saya posting sebelumnya belum dimodifikasi oleh saya sama sekali - itu dihasilkan sepenuhnya oleh klien vpn.
deftfyodor
@deftfyodor Silakan lihat edit saya.
MariusMatutiae
Menggunakan perintah tcpdump, saya memang bisa membedakan gateway, dan merutekan traffic default ke sana. Sayangnya, ini hanya berfungsi untuk rentang IP yang disediakan secara khusus. Saya tentu cenderung percaya bahwa ada beberapa langkah keamanan tambahan di tempat - namun saya tidak punya masalah sama sekali merutekan lalu lintas sewenang-wenang melalui VPN yang sama di MS Windows menggunakan klien AnyConnect - jadi pasti harus ada lebih banyak cerita.
deftfyodor
@deftfyodor Bisakah Anda memeriksa apakah tabel perutean Anda di Windos berbeda dari yang ada di Linux?
MariusMatutiae
Secara umum mirip, meskipun ada beberapa elemen yang berbeda-khususnya, 0.0.0.0 diatur untuk rute melalui router jaringan saya sebagai gateway, memegang VPN gateway sebagai antarmuka. Saya telah mengedit pertanyaan untuk menampilkan tabel perutean Windows.
deftfyodor
3

Semua routeperintah Anda adalah netmasks yang hilang, sehingga hanya cocok dengan 0.0.0.0alamat spesifik , bukan seluruh internet. Jadi gantikan 0.0.0.0dengan 0.0.0.0/0pada perintah pertama yang Anda coba:

ip route add -net 0.0.0.0/0 gw homeportal dev tun0

Mungkin ada satu peringatan yang saya tidak yakin jika klien VPN Anda memecahkan sendiri: titik akhir terowongan harus dikecualikan dari dirutekan melalui VPN, itu harus dialihkan melalui eth0antarmuka Anda . Jadi jika menambahkan rute default ini merusak VPN Anda, tambahkan rute tertentu untuk titik akhir VPN Anda:

ip route add <ENDPOINT>/32 dev eth0

Teun Vink
sumber
2
Saya pikir yang kedua seharusnya ip route, bukan? Juga, sementara itu selalu ide yang baik untuk menambahkan netmask, itu tampaknya bahwa routemengasumsikan / 0 saat menambahkan 0.0.0.0
user1686