@pinoquinho
Программист

Как настроить маршрутизацию через сервер Linux с одним сетевым адаптером?

У меня есть локальная сеть. Есть маршрутизатор на который у меня нет полного доступа и я не могу настроить на нем маршрутизацию (маршрутизатор МГТС - есть доступ к iptables, но нет доступа к ip route). Я хочу сделать так, чтобы появилась возможность маршрутизировать траффик. Есть сервер Linux, на котором крутится, например, 2 VPN клиента - один VPN для соседней локальной сети, второй VPN для другой локальной сети. На сервере есть одна сетевая карта. Для обычных клиентов вопрос решился просто - я запускаю на своем Linux сервере DHCP и добавляю маршруты в DHCP. Но для клиентов Android это не работает - у них используется только default gateway. Поэтому я хочу, чтобы весь ip траффик от Android клиентов проходил через мой сервер Linux на котором бы я все правильно маршрутизировал. Большинство инструкций описывают как настроить NAT, причем как правило с 2 сетевыми картами (что логично). А как сделать маршрутизацию если карта одна.

Я попробовал тупо включить на Linux сервере net.ipv4.ip_forward=1 и использовать его в качестве шлюза по умолчанию на клиенте. Но это не сработало.

Можно, конечно, закостылить и сделать вид, что сервер находится в другой подсети.
Допустим роутер 192.168.1.1/24
Сервер 192.168.1.2
VPN1: 192.168.2.0, VPN2: 192.168.3.0

Вешаем на один адаптер сервера 2 интерфейса - eth0, eth0:0. Первый интерфейс делаем 192.168.2.1/25. Добавляем второй интерфейс серверу eth0:0 и назначаем ему IP 192.168.1.128/25. Android клиенту даем адрес 192.168.1.129 и шлюзом по умолчанию назначаем 192.168.1.128. Во-первых какая-то дичь, а во-вторых не уверен, что это будет работать. Как это правильно и просто сделать?
  • Вопрос задан
  • 402 просмотра
Пригласить эксперта
Ответы на вопрос 3
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Сколько в линуксе сетевых карт - особо без разницы, виртуальные интерфейсы работают ровно так же, как настоящие. Можете на один физический интерфейс повесить сколько угодно адресов и маршрутизировать на здоровье.
Ответ написан
Комментировать
hint000
@hint000
у админа три руки
Большинство инструкций описывают как настроить NAT, причем как правило с 2 сетевыми картами (что логично)
Не знаю, насколько это логично; стараюсь писать правила более универсально, не привязывая к интерфейсам без необходимости. Для вашего случая:
-A POSTROUTING -s 192.168.1.0/25 ! -d 192.168.1.0/25 -j MASQUERADE


Вешаем на один адаптер сервера 2 интерфейса - eth0, eth0:0. Первый интерфейс делаем 192.168.2.1/25. Добавляем второй интерфейс серверу eth0:0 и назначаем ему IP 192.168.1.128/25.
Алиасы интерфейсов устарели.
https://www.kernel.org/doc/html/latest/networking/...
IP-aliases are an obsolete way to manage multiple IP-addresses/masks per interface. Newer tools such as iproute2 support multiple address/prefixes per interface, but aliases are still supported for backwards compatibility.
2014 год: Алиасы интерфейсов устарели. https://unix.stackexchange.com/questions/119592/su...
ens160:0 is also obsolete syntax. There is no more aliases usage. IP addresses are applied to the same interface (please see ip a s command output).
2007 год: Алиасы интерфейсов устарели.
https://linux.debian.user.narkive.com/jH7FZrwF/ip-...
The docs I'm reading recommend using "secondary ips" instead of aliases. It
says that IP Aliases are deprecated in favor of "secondary ips"
2007 год! 14 лет назад нам говорили прекращать использовать IP-алиасы. 14 лет назад, Карл!
Ответ написан
@pinoquinho Автор вопроса
Программист
Оказалось все должно работать из коробки. Просто у меня в iptables *filter `DEFAULT FORWARD policy` было `DENY`. Обнаружил включив TRACE в iptables.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы