LINUX.ORG.RU
ФорумAdmin

Маршрут для маркированного трафика, туплю - спасайте

 , , ,


1

1

Требуется завернуть маркированный через Netfilter трафик на клиенте завернуть в туннель к серверу, а остальной пустить по default маршруту.

Имеется:

  • Клиент - gateway маленькой сети на Centos
  • Сервер - Облачный шлюз - на Centos
  1. Сервер, с поднятым туннелем:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether fa:16:3e:2d:70:4a brd ff:ff:ff:ff:ff:ff
    inet 16.124.9.234/32 brd 51.38.50.121 scope global dynamic eth0
       valid_lft 60677sec preferred_lft 60677sec
5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.8.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

wg0 - порт wireguard туннеля

  1. Клиент с поднятым подключением:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 38:d5:47:28:4d:e2 brd ff:ff:ff:ff:ff:ff
    inet 10.204.163.19/30 brd 10.204.163.19 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether ca:b2:ad:cd:81:5f brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
6: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 10.8.0.100/32 scope global wg0
       valid_lft forever preferred_lft forever

eth0 - внешняя сеть eth1 - внутренняя сеть wg0 - порт wireguard туннеля

  1. Модуль ядра для маркировки пакетов на клиенте - загружен:
# lsmod | grep -i "mark"
xt_mark                16384  1
  1. Параметры ядра на клиенте:
  • влючен форвардинг
  • отключен rpfilter - что бы ядро, не отбрасывало пакеты, вернувшиеся с другого интерфейса
# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.tcp_fwmark_accept = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
  1. Пакеты в ядре клиента маркируются простым правилом:
iptables -A PREROUTING -t mangle -s 192.168.1.222 -j MARK --set-mark 1
  1. Добавлено правило на клиенте - создана таблица wire для маркированного трафика:
ip rule add fwmark 1 table wire
  1. Требуется прописать маршрут для пакетов из таблицы wire в интерфейс wg0
  • Внутрення сеть: 192.168.0.0/24
  • Адреса в туннеле: 1.8.0.0/24

Самоизоляционный тупняк на меня напал - спасайте.