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.
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&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.
--interface
bendera. Saya cukup yakin koneksi L2TP / IPSec berfungsi. Jika saya laricurl --interface ppp1 ipinfo.io
, ini melaporkan lokasi negara server l2tp saya, yang berbeda dari gateway.Jawaban:
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 ..
Setelah itu tuan rumah mendapatkan akses internet.
Perhatikan bahwa Anda perlu menggunakan
-I
sehingga aturan ini dimasukkan sebelum aturan menjatuhkan, membuatnya diutamakan.sumber
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:
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.
sumber