Bagaimana cara mengarahkan lalu lintas LAN ke koneksi klien L2TP / IPsec di gateway?

0

Saya membuat koneksi klien L2TP / IPsec di gateway, dan saya mencoba mengarahkan host saya di LAN untuk menggunakan koneksi ini ketika mengakses Internet.

Inilah topologi jaringan.

network topology

Ini adalah tabel routing gateway saya:

$ ip route
default dev pppoe-wan  scope link 
1.0.0.1 dev ppp1  proto kernel  scope link  src 192.168.179.11
6.6.6.6 dev pppoe-wan  scope link 
5.5.5.5 dev pppoe-wan  proto kernel  scope link  src 5.5.5.5
192.168.1.0/24 dev br-lan  proto kernel  scope link  src 192.168.1.1 

$ ip rule
1:  from all lookup local 
10: from 192.168.1.2 lookup 10 
32766:  from all lookup main 
32767:  from all lookup default 

$ ip route show table 10
default dev ppp1  scope link 
6.6.6.6 via 5.5.5.5 dev pppoe-wan 
192.168.1.0/24 via 192.168.1.1 dev br-lan

Masalahnya adalah setelah saya menambahkan rute default ke tabel 10, tuan rumah saya tidak dapat lagi mengakses Internet. Menggunakan tcpdump untuk mendengarkan pada antarmuka ppp1 ( tcpdump -i ppp1 ) mengungkapkan itu tidak ada paket mengalir melaluinya.

Saya mencoba menyamarkan antarmuka ppp1 dengan:

$ iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE

Itu tidak membantu, masih tidak ada paket yang mengalir melalui antarmuka. Kernel juga diizinkan untuk mengarahkan ulang paket:

$ cat /proc/sys/net/ipv4/ip_forward
1

Tetapi jika saya menggunakan antarmuka langsung di gateway, itu berfungsi dengan baik:

$ curl --interface ppp1 google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com.hk/?gfe_rd=cr&amp;ei=suORVbLfOKXC8Af3noGwDA">here</A>.
</BODY></HTML>

Jadi sepertinya kernel linux gateway entah bagaimana menjatuhkan paket dari host saya. Tetapi tidak ada antarmuka yang mengaktifkan penyaringan jalur terbalik:

$ cat /proc/sys/net/ipv4/conf/ppp1/rp_filter
0

$ cat /proc/sys/net/ipv4/conf/pppoe-wan/rp_filter
0

Jadi aku kehabisan akal. Mengapa lalu lintas host tidak pernah melewati ppp1? Bagaimana saya bisa mengarahkan host saya ke koneksi klien L2TP / IPsec?

Saya menggunakan konfigurasi yang sama untuk klien PPTP, dan itu berfungsi dengan baik. Entah bagaimana itu tidak bekerja untuk klien L2TP / IPsec.

Gateway adalah kotak OpenWrt (Chaos Calmer 15.05-rc2, kernel 3.18.14). Saya menggunakan strongSwan (5.3.0) + xl2tpd (1.3.6) untuk mengatur klien L2TP / IPsec.

Ini adalah konfigurasi untuk strongSwan:

conn example
    auto=start
    keyexchange=ikev1
    type=transport
    left=%defaultroute
    leftauth=psk
    right=server.example.com
    rightid=%any
    rightauth=psk
    dpdaction=restart
    dpddelay=10s
    dpdtimeout=60s

dan konfigurasi untuk xl2tpd

[lac example]
lns = server.example.com
length bit = yes
redial = yes
max redials = 5
pppoptfile = /etc/ppp/options.xl2tpd

dan konfigurasi untuk ppp

noauth
mru 1452
mtu 1452
nomppe
ipcp-accept-remote
ipcp-accept-local
nopcomp
noaccomp
lcp-echo-interval 10
lcp-echo-failure 5

Tuan rumah adalah Mac (Yosemite 10.10.3).

Terima kasih sebelumnya atas bantuannya.

P.S. Hanya IP Internet gateway dan IP Internet server telah diganti dengan IP palsu, semua IP lainnya adalah yang benar-benar digunakan.

hgl
sumber
Apakah Anda ingat untuk mengizinkan penerusan IPv4? gema 1 & gt; / proc / sys / net / ipv4 / ip_forward sebagai sudo.
MariusMatutiae
Ya saya lakukan. Terima kasih telah menyebutkannya. Saya telah mengedit pertanyaan untuk menyebutkan bahwa kernel memungkinkan penerusan. (OpenWrt memungkinkan penerusan secara default.)
hgl
Bagaimana Anda tahu koneksi L2TP / IPSec Anda berfungsi? Jika kamu meringkuk Google dari gateway, Anda menggunakan utama tabel routing, bukan tabel routing 10 . Periksa apakah koneksi VPN berfungsi dengan mengubah aturan ip untuk memaksa koneksi Google melalui terowongan. Tetapi melakukannya secara sementara, ada yang salah (seperti yang saya kira) Anda reboot router dan Anda baik-baik saja.
MariusMatutiae
Perhatikan --interface bendera. Saya cukup yakin koneksi L2TP / IPSec berfungsi. Jika saya lari curl --interface ppp1 ipinfo.io, ini melaporkan lokasi negara server l2tp saya, yang berbeda dari gateway.
hgl
Maukah Anda mencoba jawaban saya, untuk memeriksa apakah itu benar? Ty
MariusMatutiae

Jawaban:

1

Saya akhirnya menyelesaikannya. Paket-paket dijatuhkan oleh netfilter (iptables).

OpenWrt secara default menjatuhkan paket yang diteruskan dari br-lan. Jadi kita perlu mengizinkan paket penerusan dari br-lan ke ppp1 ..

$ iptables -I FORWARD -i br-lan -o ppp1 -j ACCEPT

Setelah itu tuan rumah mendapatkan akses internet.

Perhatikan bahwa Anda perlu menggunakan -I sehingga aturan ini dimasukkan sebelum aturan menjatuhkan, membuatnya diutamakan.

hgl
sumber
Jadi komentar saya tentang menggunakan tcpdump untuk memeriksa apakah paket-paket dari br-lan dapat mencapai ppp1 dan ppoe-wan berhasil, setelah semua. Senang melihat ini.
MariusMatutiae
Maaf, saya tidak mengerti maksud Anda dengan sangat baik. antarmuka ping tidak mengejutkan saya bahwa netfilter mungkin iblis. :) Tapi mengapa saya memilih?
hgl
Anda tidak diputuskan oleh saya.
MariusMatutiae
0

Anda menyamarkan antarmuka yang salah. Anda perlu menyamar karena, pada dasarnya, Anda NATTING, tetapi antarmuka virtual tidak dapat secara langsung disamarkan.

Sebaliknya, Anda harus menggunakan:

      iptables -t nat -A POSTROUTING -o pppoe-wan -j MASQUERADE 

Ini akan menyamar apa pun keluar dari antarmuka reguler Anda, di antaranya akan ada paket NATted dari host Yosemite Anda.

Saya tersadar bahwa inilah satu-satunya titik lemah dalam diskusi Anda di atas. Setelah beberapa pencarian, saya dapat mengkonfirmasi bahwa ini memang seharusnya dengan membaca halaman Web Wiki Debian ini . Untuk sekali ini, Arch Linux Wiki yang saya cintai meninggalkan saya.

MariusMatutiae
sumber
Pertama, saya benar-benar ingin mengucapkan terima kasih atas upaya Anda. Saya benar-benar berharap dapat menerima jawaban Anda, tetapi sayangnya aturan ini ditambahkan oleh openwrt secara default, jika tidak host tidak akan pernah dapat mengakses internet, bahkan tanpa rute default ke koneksi l2tp.
hgl
@ hgl Bisakah Anda menjalankan tcpdump di router Anda? cukup ping dari tuan rumah, dan dengarkan pada pp1 dulu, lalu pada ppoe-wan.
MariusMatutiae
Yakin. Saya cukup yakin melakukan ping dari host ke br-lan tidak menghasilkan paket di ppp1 atau pppoe-wan; untuk pppoe-wan, ppp1 tidak ada, pppoe-wan, yah, saya tidak yakin paket apa yang harus difilter pada pppoe-wan.
hgl