Linux iproute — сети с разными шлюзами

Бывают ситуации когда необходимо получить доступ к серверу с разных сетей, например: у нас есть сервер под управлением Ubuntu или скажем CentOS, у него есть один интерфейс, а может быть два. У нас есть один внешний адрес, и есть один внутренний который через NAT выпускает нас в интернет. Например, на шлюзе где расположен локальный адрес мы установили OpenVPN или Wireguard. Хотим получить доступ до этой машины через VPN, но проблема в том, что по умолчанию сервер имеет только один шлюз, он же default, или маршрут по умолчанию. И все пакеты которые сервер принимает и отправляет он передает их как раз ему. Как быть? Тут на помощь и приходит инструмент маршрутизации iproute2, все что нам нужно сделать, это «объяснить» серверу что пакеты пришедшие с локального адреса должны быть отправлены через локальный шлюз и приняты со шлюза быть получены локальным адресом.

Проверить текущие настройки таблиц маршрутизации можно следующим образом:

> cat /etc/iproute2/rt_tables
#
# reserved values
#
255	local
254	main
253	default

Таким образом у нас есть 3 таблицы маршрутизации, например у нас есть пространство 192.168.0.0/24, шлюз у нас будет 192.168.0.1, а адрес который мы выдали серверу 192.168.0.2

Теперь нам необходимо добавить новую таблицу в этот файл, пусть она будет называться local_gw, таблица должна иметь метрику, пусть будет равной 1. Добавляем таблицу в файл:

> echo "1 local_gw" >> /etc/iproute2/rt_tables

Далее мы должны указать от какой сети через какое устройство необходимо отправлять трафик, пусть у меня будет 2 интерфейса, первый eth0, второй eth1 на первом у меня будет внешний адрес, но втором локальный, пишем:

> ip route add 192.168.0.0/24 dev eth1 src 192.168.0.2 table local_gw
> ip route add default via 192.168.0.1 dev eth1 table local_gw
> ip rule add from 192.168.0.2/32 table local_gw
> ip rule add to 192.168.0.2/32 table local_gw

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *