Доброе утро всем и каждому. В нашей сети есть одна машина 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 МАСКАРАД