Требуется завернуть маркированный через Netfilter
трафик на клиенте завернуть в туннель к серверу, а остальной пустить по default
маршруту.
Имеется:
- Клиент - gateway маленькой сети на Centos
- Сервер - Облачный шлюз - на Centos
- Сервер, с поднятым туннелем:
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: 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
туннеля
- Модуль ядра для маркировки пакетов на клиенте - загружен:
# lsmod | grep -i "mark"
xt_mark 16384 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
- Пакеты в ядре клиента маркируются простым правилом:
iptables -A PREROUTING -t mangle -s 192.168.1.222 -j MARK --set-mark 1
- Добавлено правило на клиенте - создана таблица
wire
для маркированного трафика:
ip rule add fwmark 1 table wire
- Требуется прописать маршрут для пакетов из таблицы
wire
в интерфейсwg0
- Внутрення сеть: 192.168.0.0/24
- Адреса в туннеле: 1.8.0.0/24
Самоизоляционный тупняк на меня напал - спасайте.