Назад | Перейти на главную страницу

Linux Gateway: одна сетевая карта, как маскироваться из одной подсети в другую

Доброе утро всем и каждому. В нашей сети есть одна машина Linux с псевдонимами IP-адресов. Каждый из этих IP-адресов находится в сети, управляемой удаленным маршрутизатором ISP.

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

Все, что я читал, касается маскировки между двумя физическими интерфейсными картами; однако у нас есть только одна сетевая карта, которая прослушивает несколько IP-адресов.

На самом ящике Linux; он может пинговать и получать доступ к Интернету, используя один из маршрутизаторов в качестве восходящего шлюза.

Итак, наша конфигурация выглядит следующим образом:

: Linux Box 
  eth0:0 = 10.0.0.5
  eth0:1 = 192.168.137.5
  GW: 192.168.137.1


: Router#1
  IP: 192.168.137.1
  Connection to internet via ISP


: Network Machines
  IP: 10.0.0.x
  GW: 10.0.0.5

Итак, вопрос в том, как я настроил iptables / nat в Linux, чтобы он мог принимать пакеты в подсети 10.0.0.x и направлять их на определенный IP-адрес, настроенный для шлюза. Когда я пытаюсь использовать eth0: 1 как my -d, iptables жалуется на недопустимые символы, и из того, что я читал в Интернете, это было отключено в iptables (http://lkml.indiana.edu/hypermail/linux/net/9705.1/0016.html).

Может кто-нибудь помочь, пожалуйста? Я уверен, что упускаю здесь что-то очевидное; все мои исторические знания касались двух отдельных сетевых интерфейсов ethX.

Спасибо


Обновить; вот сценарий iptables "хакерства"

WIFIBACKUP=192.168.137.1

iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -F -t nat

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A PREROUTING -s 10.0.0.0/32 -j REDIRECT --to $WIFIBACKUP

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

-d предназначен для --destination и ожидает адрес (или сеть). Если пункт назначения "любой", просто не указывайте его.

Перенаправление не выполняет NAT.
Поскольку вы используете псевдонимы, использование -i и -o не работает. Обходной путь - использовать -d и -s. Вы можете инвертировать с помощью "!". Итак, для всего трафика с 10.0.0.0/24, у которого есть пункт назначения НЕ 10.0.0.0/24, выполните маскировку:

iptables -t nat -A POSTROUTING -s 10.0.0.0/24! -d 10.0.0.0/24 -j МАСКАРАД