Как настроить маршрутизацию через сервер 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. Во-первых какая-то дичь, а во-вторых не уверен, что это будет работать. Как это правильно и просто сделать? 

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

> Большинство инструкций описывают как настроить 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/...](https://www.kernel.org/doc/html/latest/networking/alias.html) 
> 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...](https://unix.stackexchange.com/questions/119592/suse-linux-12-configuring-ip-alias) 
> 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-...](https://linux.debian.user.narkive.com/jH7FZrwF/ip-iproute-obeleted-secondary-ips-vs-ip-aliases)  

> 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 лет назад, Карл! 

 Оказалось все должно работать из коробки. Просто у меня в iptables *filter `DEFAULT FORWARD policy` было `DENY`. Обнаружил включив TRACE в iptables.