Перейти к содержимому
Калькуляторы

Policy routing и NAT в Linux

Добрый день,

 

столкнулся с такой проблемой:

Есть сервер АСР, с адресом 192.168.1.2, который производит подсчет трафика и контроль доступа.

 

Есть маршрутизатор (Linux 2.6.29) с тремя интерфейсами,

eth0 - x.x.x.x - подключен интернет

eth1 - 192.168.1.1 - подключена система учета трафика (АСР)

eth2 - 10.0.0.1/8 - подключены клиенты

 

Требуется трафик между клиентами и интернетом пропустить через АСР.

 

Настройки:

iptables -t mangle -A PREROUTING -s 10.0.0.0/8 -i eth2 -j MARK --set-mark 200 #Трафик от клиента в инет

iptables -t mangle -A PREROUTING -d 10.0.0.0/8 -i eth0 -j MARK --set-mark 100 #Трафик из инета к клиенту

 

ip route add default via 192.168.1.2 table 200

 

ip rule add fwmark 100 lookup 200

ip rule add fwmark 200 lookup 200

 

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to x.x.x.x

 

Проблема в том - что нат не работает. При снятии дампа с внешнего интерфейса маршрутника я вижу локальный адрес 10.0.0.2.

Если убрать fwmark - нат работает, но трафик не проходит через АСР.

Если запустить пинг с клиента в инет (1 пакет) и посмотреть счетчики пакетов, прошедших через цепочки, то видно, что через таблицы filter и mangle прошло 2 пакета, а через nat - только 1.

Можно ли что нибудь сделать в таком решении?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Натить лучше также по марке

iptables -t nat -A POSTROUTING -m mark --mark XXX -j SNAT --to-source x.x.x.x

 

и ещё надо выключить rp_filter

for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo '0' >$f; done

Изменено пользователем Forst

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

rp_filter выключен, нат по метке ничего не дает, т.к. пакет до цепочки Nat Postrouting вообще не доходит....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Где-то рубится

 

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

 

iptables -t mangle -I FORWARD -j ACCEPT

iptables -I FORWARD -j ACCEPT

iptables -t mangle -I POSTROUTING -j ACCEPT

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

iptables чистый, за исключением тех настроек, которые я привел.

форвард работает, т.к. пакет до получателя в интернете доходит, но с внутренним адресом, а не внешним.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.