Я установил клиентское соединение L2TP/IPsec на шлюзе и пытаюсь перенаправить хост в локальной сети для использования этого соединения при доступе в интернет.
вот топология сети.
это таблица маршрутизации моего шлюза:
$ 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
проблема в том, что после добавления маршрута по умолчанию к таблице 10 мой хост больше не может получить доступ к интернету. Использование tcpdump для прослушивания на интерфейсе ppp1 (tcpdump -i ppp1
) показывает, что пакеты поток через него.
Я попытался замаскировать интерфейс ppp1 с:
$ iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE
это не помогло, через интерфейс все еще не текли пакеты. Также ядру разрешено перенаправлять пакеты:
$ cat /proc/sys/net/ipv4/ip_forward
1
но если я использую интерфейс непосредственно на шлюзе, он работает просто отлично:
$ 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>
похоже, ядро Linux шлюза каким-то образом сбросило пакеты с моего хоста. Но нет интерфейса включена фильтрация обратного пути:
$ cat /proc/sys/net/ipv4/conf/ppp1/rp_filter
0
$ cat /proc/sys/net/ipv4/conf/pppoe-wan/rp_filter
0
так я не знала, что делать. Почему трафик хоста никогда не проходит ppp1? Как я мог перенаправить свой хост к клиентскому соединению L2TP/IPsec?
я использовал ту же конфигурацию для клиента PPTP, и он работал просто отлично. Как-то это не работает для клиента L2TP/IPsec.
шлюз-это OpenWrt-бокс (Chaos Calmer 15.05-rc2, ядро 3.18.14). Я использую strongSwan (5.3.0) + xl2tpd (1.3.6) для настройки L2TP / IPsec клиент.
это конфигурация для 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
и настройки xl2tpd
[lac example]
lns = server.example.com
length bit = yes
redial = yes
max redials = 5
pppoptfile = /etc/ppp/options.xl2tpd
и конфигурация для ppp
noauth
mru 1452
mtu 1452
nomppe
ipcp-accept-remote
ipcp-accept-local
nopcomp
noaccomp
lcp-echo-interval 10
lcp-echo-failure 5
хост-это Mac (Yosemite 10.10.3).
заранее спасибо за помощь.
P.S. только интернет-IP шлюза и Интернет-IP сервера были заменены поддельными IP-адресами, все остальные IP-адреса являются настоящими используемыми.