Как перенаправить трафик локальной сети на подключение клиента L2TP/IPsec на шлюзе?

Я установил клиентское соединение L2TP/IPsec на шлюзе и пытаюсь перенаправить хост в локальной сети для использования этого соединения при доступе в интернет.

вот топология сети.

network topology

это таблица маршрутизации моего шлюза:

$ 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&amp;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-адреса являются настоящими используемыми.

12
задан hgl
27.04.2023 4:50 Количество просмотров материала 3231
Распечатать страницу

2 ответа

Я, наконец, решил ее. Пакеты отбрасываются netfilter (iptables).

OpenWrt по умолчанию отбрасывает пакеты, пересылаемые из br-lan. Поэтому нам нужно разрешить пересылку пакетов из br-lan в ppp1..

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

после этого хост получает доступ в интернет.

обратите внимание, что вы должны использовать -I так, чтобы это правило вставлялось перед правилом отбрасывания, делая его приоритетным.

1
отвечен hgl 2023-04-28 12:38

вы маскируете неправильный интерфейс. Вам нужно маскироваться, потому что, в основном, вы НАТТИНГ, но виртуальный интерфейс не может быть непосредственно маскироваться.

вместо этого вы должны использовать:

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

Это будет маскарад что-нибудь выходя из вашего обычного интерфейса, среди них будут NATted пакеты от вашего Хоста Yosemite.

меня поразило, что это единственное слабое место в вышеупомянутой дискуссии. После некоторого поиск вокруг, я мог бы подтвердить, что это действительно должно быть так, читая эта вики-страница Debian. На этот раз моя любимая Arch Linux Wiki оставила меня.

0
отвечен MariusMatutiae 2023-04-28 14:55

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх