LinuxForum.Fans
Тема

iptables - nat на две сетки.

Автор: NordWest 11 сообщений 2446 просмотров
#384372

Есть маршрутизатор, на нем настроена iptables для выхода в инет. Два интерфейса: внутренний и внешний. Всё нормально работает. Требуется с помощью этого же маршрутизатора направлять часть компов через прокси в параллельной локалке, если этот прокси указан у них в настройке, маскируя их ip из первой сети под ip маршрутизатора из второй.

Сеть 1:
192.168.0.1/24
шлюз: 192.168.0.1

Сеть 2:
192.168.1.1/24
шлюз: 192.168.1.50
прокси: 192.168.1.101

Всё это физически в одной сетке.
На маршрутизаторе поднимаю второй ip на внутреннем интерфейсе:

text
iface eth0:0 inet static
address 192.168.1.213
netmask 255.255.255.0

Скрипт для iptables такой:

text
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

export IPT="iptables"

export WAN=eth1

export LAN=eth0 export LAN_IP_RANGE=192.168.0.0/24

export LAN0=eth0:0 export LAN0_IP_RANGE=192.168.1.1/24

$IPT -F $IPT -F -t nat $IPT -F -t mangle $IPT -X $IPT -t nat -X $IPT -t mangle -X

$IPT -P INPUT DROP $IPT -P OUTPUT DROP $IPT -P FORWARD DROP

$IPT -A INPUT -i lo -j ACCEPT $IPT -A INPUT -i $LAN -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT $IPT -A OUTPUT -o $LAN -j ACCEPT

$IPT -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

$IPT -A INPUT -m state --state INVALID -j DROP $IPT -A FORWARD -m state --state INVALID -j DROP

$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

$IPT -A FORWARD -i $WAN -o $LAN -j REJECT

$IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_RANGE -j MASQUERADE

$IPT -A FORWARD -i $LAN -o $LAN0 -j ACCEPT $IPT -t nat -A POSTROUTING -o $LAN0 -s $LAN_IP_RANGE -d $LAN0_IP_RANGE -j MASQUERADE $IPT -A FORWARD -i $WAN -o $LAN0 -j REJECT

...

text
# ip route
default via 10.3.3.1 dev eth1 
10.3.3.0/26 dev eth1  proto kernel  scope link  src 10.3.3.2 
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.1 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.213 

Причем на ресурсы сети 2 из 1 я могу зайти. Пингуется прокси, но не пускает. Возможно подключение всё же идет напрямую а не через шлюз.
Подскажите пожалуйста, как правильно реализовать задуманное.

#384381
"NordWest" написал:
$IPT -t nat -A POSTROUTING -o $LAN0 -s $LAN_IP_RANGE -d $LAN0_IP_RANGE -j MASQUERADE

Вам нужно вот это правило поменять на такое
[console]$IPT -t nat -A POSTROUTING -s $LAN_IP_RANGE --dport 3128 -o $LAN0 -j SNAT --to-sourse 192.168.1.213[/console]
как то так. Пробуйте.

#384382
kisil написал:
[quote="NordWest"]$IPT -t nat -A POSTROUTING -o $LAN0 -s $LAN_IP_RANGE -d $LAN0_IP_RANGE -j MASQUERADE

Вам нужно вот это правило поменять на такое
[console]$IPT -t nat -A POSTROUTING -s $LAN_IP_RANGE --dport 3128 -o $LAN0 -j SNAT --to-sourse 192.168.1.213[/console]
как то так. Пробуйте.[/quote]
Не очень.
Мне бы заставить все запросы для сети 2 идти через маршртизатор с его ip.
Причем сейчас traceroute до прокси идет сначала вроде правильно, проходя шлюз, а потом выдает уже только одну строчку с пунктом назначения.
ssh тоже похоже коннектится на сервер из второй сети напрямую.

#384779

В сети помимо маршрутизатора есть и ещё компьютеры с двумя ip-адресами на одном интерфейсе. Но iptables на них не настроен. Могут они как-то выступать в роди шлюзов?

#384780

Опешыте какая подсеть должна маскироватса.

#384783
NordWest написал:
В сети помимо маршрутизатора есть и ещё компьютеры с двумя ip-адресами на одном интерфейсе. Но iptables на них не настроен. Могут они как-то выступать в роди шлюзов?

Нет. Без маршрутизатора между сетями не пройти, тут всё нормально.
Может в таблице маршрутизации что-то?
[console]
sudo ip route
default via 10.3.3.1 dev eth1
10.3.3.0/26 dev eth1 proto kernel scope link src 10.3.3.2
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.213
[/console]
Тут алиас не виден, всё одно - eth0. Могут пакеты как-то до соответствующего правила SNAT проскакивать?

#384785

Нарисуйте схему сети и что нужно настроить.

#384792

Схема такая.


Я настраиваю шлюз1. Не от хорошей жизни такая история. Надо обходить было прокси через альтернативный шлюз. Плюс ip-адреса у нас ограничены в сети 192.168.0.0.
На шлюзе1 2 интерфейса. Внешний к провайдеру. На внутреннем 2 адреса.
На "--dport 3128" он ругается кстати, отказывается понимать параметр.

#384803

[console]$IPT -t nat -A POSTROUTING -p tcp -s $LAN_IP_RANGE --dport 3128 -o $LAN -j SNAT --to-sourse 192.168.1.213[/console]
а так.

#384806

Нет, футболит прокси.
С прокси шлюз ведь не нужен?

#384815

Причем, стоят ведь у нас несколько роутеров, обычные комнатные, они делают примерно то же. Компьютеры за ними ходят через прокси, и всё ок. Вот если такой роутер воткнуть ещё и со внутреннего порта в сетку, то что будет? Ну dhcp убрать конечно.
Надо видимо ещё один комп разыскать и попробовать на нем роутер реализовать, отдельно. Может 2 сетевушки на него поставить...

Войдите или зарегистрируйтесь, чтобы ответить.