LINUX.ORG.RU
решено ФорумAdmin

Заворачивание части трафика в туннель

 , ,


2

1

Подскажите, как решить задачу. Есть 2а интерфейса wlan0 отвечает за интернет, tun1 за VPN.

$ ip link
- 6: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether 8c:f8:c5:41:91:64 brd ff:ff:ff:ff:ff:ff
- 12: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 500
    link/none

Как запросы к заблокированным ресурсам пускать через tun1 а к незаблокированным через wlan0?


1) смотришь какой адрес на гейте на том конце tun1 (командой ifconfig), например это 192.168.33.44

2) пишешь для каждого айпи-адреса, например 1.2.3.4, который надо туда завернуть, команду

route add 1.2.3.4 gw 192.168.33.44
для сети так
route add -net 1.2.3.0/24 gw 192.168.33.44

Как узнать список айпи-адресов и сетей для нужного «ресурса», думаю сам разберёшься, только на всякий случай замечу что этот список может меняться со временем.

Но вообще, к заблокированным ресурсам обращаться не стоит, их не просто так заблокировали, а в конечном счёте для твоего же блага, даже если тебе со своего места это сейчас и не видно.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Я это умею, только мне не это надо… Ты предлагаешь банально настроить маршруты для адресов и подсетей.

А надо: получил пакет, увидел что он хочет ютуб, значит отправляем через tun1. Если яндекс, то через wlan0. Это не L3 маршрутизация.

torm7
() автор топика
Ответ на: комментарий от torm7

Ты предлагаешь банально настроить маршруты для адресов и подсетей.

А так ты и так значит всё знаешь. Да, именно так, и других вариантов нет. Варианты есть только в том, каким образом (вручную или автоматически) ты будешь составлять этот список маршрутов. Проверять, на лету, куда идёт каждый пакет, индивидуально - если и можно, то только жуткими костылями и с тормозами.

firkax ★★★★★
()
Ответ на: удаленный комментарий

Ты предложил ровно то же самое что и я но чуть другим инструментом. Возможно ipset будет работать чуть быстрее чем та же таблица в качестве таблицы роутинга, но автор не это хотел.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

к заблокированным ресурсам обращаться не стоит, их не просто так заблокировали, а в конечном счёте для твоего же блага, даже если тебе со своего места это сейчас и не видно.

Тебя спросить забыли, куда мне обращаться

anonymous
()
Ответ на: комментарий от Anoxemian

Ну так то это реально то же самое что предлагали выше, только в более удобном виде, где это рулится списком ipset.

А надо более тонкое решение. Например доступ сюда сделать по tun1, а сюда по wlan0

torm7
() автор топика
Ответ на: комментарий от Anoxemian

Ты с таким же успехом мог бы написать: ‘Да, так можно! Разрешаю!’

Или ты сюда побираться приходишь из job’ов? Да и вопрос был не в том, как организовать L3 маршрутизацию, а в том, как отправлять часть L7 трафика по другому маршруту.

torm7
() автор топика
Последнее исправление: torm7 (всего исправлений: 1)
Ответ на: комментарий от Cergoo

не потенциально, а практически, блокируют с двух сторон и вариант когда VPN включил, госуслуги отвалились, ничем не лучше…

а в целом оно сейчас так и работает.

torm7
() автор топика
Ответ на: комментарий от torm7

Так не держи все на одном компьютере, используй разные машины. У разделения трафика очень много подводных камней, в частности, сильно упрощается задача раскрытия факта использования VPN тобой.

Khnazile ★★★★★
()

Подскажите, как решить задачу

Для роутеров есть несколько готовых решений. Воспользуйся или посмотри как реализовано и сделай сам.

NyXzOr ★★★★
()
Ответ на: комментарий от NyXzOr

Это не заботливость, это их прямая должностная обязанность - обеспечивать благо народа. Они, конечно, не всегда её исполняют, и часто занимаются вместо этого коррупционным вредительством, но в данном случае делают именно на благо.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 3)
Ответ на: комментарий от Anoxemian

Так я и не спорю с тем что не понимаю. Иначе зачем бы мне на форум обращаться?

Вопрос то простой, в твоем примере непонятно как выбрать нужную таблицу маршрутизации, в зависимости от того, куда отправляется пакет.

torm7
() автор топика
8 января 2025 г.

Блин, как времени не хватает на всё. Вернулся к теме через полтора месяца, в общем всё заработало. Весь Российский трафик идет через провайдера, весь забугорный через VPN. Кратко, что делал, если кому пригодится:

  • создаем правила nftables:
flush ruleset
table ip nat {
      chain postrouting {
              type nat hook postrouting priority srcnat; policy accept;
              oifname "enp4s0" masquerade
              oifname "vpn" masquerade
      }
}
table ip fw4 {
      set RU_ipv4 {
              type ipv4_addr
              flags interval
              comment "Russian Internet"
      }

      chain mangle_prerouting {
              type filter hook prerouting priority mangle; policy accept;
              jump pbr_prerouting comment "Jump into pbr prerouting chain"
      }

      chain pbr_prerouting {
              ip daddr != @RU_ipv4 goto pbr_mark_0x010000 comment "russia"
      }

      chain pbr_mark_0x010000 {
              counter packets 4121 bytes 1637862 meta mark set meta mark & 0xff01ffff | 0x00010000
              return
      }
}
  • приводим ip rule к виду:
[rav@router:~]$ ip rule
0:      from all lookup local
1:      from all lookup main suppress_prefixlength 0
32765:  from all fwmark 0x10000/0xff0000 lookup vpn
32766:  from all lookup main
32767:  from all lookup default
  • приводим таблицу маршрутизации VPN к виду:
[rav@router:~]$ ip route show table vpn
default dev vpn scope link 
192.168.10.0/24 dev vpn scope link
  • наполняем set RU_ipv4:
for i in `curl https://stat.ripe.net/data/country-resource-list/data.json?resource=RU | jq -r '.["data"]["resources"]["ipv4"][]'`; do sudo nft add element ip fw4 RU_ipv4 { $i }; done
torm7
() автор топика
Последнее исправление: torm7 (всего исправлений: 1)