LINUX.ORG.RU
ФорумAdmin

CentOs iptables нужна помощь

 ,


0

1

Помогите пожалуйста новичку разобраться с iptables.
Есть две сетки 192.168.0.0/24 и 192.168.21.0/24. В сети 21.0 есть основной шлюз 21.1. Мне надо поднять router (eth0 ip 0.101, eth1 ip 21.101) и прописать в нем маршрут пускающий трафик из сети 0 на определенные ip адреса (1.2.3.0/24) через этот шлюз (21.1). Доступа к шлюзу 21.1 у меня нет, по этому я не могу на нем прописать обратный маршрут в сетку 0 через router. Мое решение воспользоваться действием MASQUERADE для того что бы шлюз 21.1 возвращал все пакеты на router.
сеть 0 <=> eth0 MASQUERADE eth1 <=> шлюз 21.1
Помоги пожалуйста прописать правила.

Для начала:

route add -net 1.2.3.0/24 gw 192.168.21.1

Затем в iptables:

iptables -A POSTROUTING -s 192.168.0.0/24 -d 192.168.21.0/24 -j MASQUERADE

(это при условии, что iptables пустой, и все политики ACCEPT. В centos есть дефолтные запрещающие настройки, поэтому покажи iptables-save)

И не забудь про sysctl net.ipv4.ip_forward (должно быть значение 1).

Ttt ☆☆☆☆☆ ()
Последнее исправление: Ttt (всего исправлений: 1)
Ответ на: комментарий от Ttt

Не получилось Я так пологаю что надо было добавлять правило в в таблицу nat, т.е. так:

 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.21.0/24 -j MASQUERADE 

iptables.save

[root@RouteServ sysconfig]# cat iptables.save
# Generated by iptables-save v1.4.7 on Mon Mar 31 00:55:03 2014
*nat
:PREROUTING ACCEPT [5:274]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Mon Mar 31 00:55:03 2014
# Generated by iptables-save v1.4.7 on Mon Mar 31 00:55:03 2014
*filter
:INPUT ACCEPT [181:13376]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [109:39480]
COMMIT
# Completed on Mon Mar 31 00:55:03 2014 

[root@RouteServ sysconfig]# iptables -L -n -v -t nat
Chain PREROUTING (policy ACCEPT 1084 packets, 99196 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 105 packets, 6650 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  *      *       192.168.0.0/24       192.168.21.0/24

Chain OUTPUT (policy ACCEPT 105 packets, 6650 bytes)
 pkts bytes target     prot opt in     out     source               destination
[root@RouteServ sysconfig]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.21.0    *               255.255.255.0   U     0      0        0 eth1
192.168.20.0    192.168.21.1    255.255.255.0   UG    0      0        0 eth1
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
default         192.168.21.1    0.0.0.0         UG    0      0        0 eth1

(192.168.20.0 это та самая подсеть 1.2.3.0/24 к которой я пытаюсь получить доступ)
На машине с которой пытаюсь пинговать маршруты настроены правильно. Интерфейс eth1 ip 21.101 пингуется нормально, а шлюз 21.1 и ресурсы сети 20.0 нет.

alone2m ()
Ответ на: комментарий от alone2m

Не получилось Я так пологаю что надо было добавлять правило в в таблицу nat, т.е. так:

Да, прошу прощения, я скопировал из выхлопа iptables-save и приписал «iptables» :)

На машине с которой пытаюсь пинговать маршруты настроены правильно.

На всякий случай их можно сюда?

Ttt ☆☆☆☆☆ ()
Последнее исправление: Ttt (всего исправлений: 1)
Ответ на: комментарий от Ttt

Постоянные маршруты машины с которой пингую:

Постоянные маршруты:
  Сетевой адрес            Маска    Адрес шлюза      Метрика
     192.168.20.0    255.255.255.0    192.168.0.101       1
     192.168.21.0    255.255.255.0    192.168.0.101       1 

Ресурсы сети 21.0 начали пинговаться. А вот 20.0/24 недоступна. С самого router'а всё пингуется хорошо.

alone2m ()
Ответ на: комментарий от Ttt
[root@RouteServ sysconfig]# cat iptables.save
# Generated by iptables-save v1.4.7 on Mon Mar 31 01:00:30 2014
*filter
:INPUT ACCEPT [629:90087]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [495:211773]
COMMIT
# Completed on Mon Mar 31 01:00:30 2014
# Generated by iptables-save v1.4.7 on Mon Mar 31 01:00:30 2014
*nat
:PREROUTING ACCEPT [1:229]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s 192.168.0.0/24 -d 192.168.21.0/24 -j MASQUERADE
COMMIT
# Completed on Mon Mar 31 01:00:30 2014 

После добавления правила route add -net 192.168.20.0/24 gw 192.168.21.1 не надо же выполнять какое либо сохранение и рестарт сервиса? После перезагрузки правило исчезает.

alone2m ()
Ответ на: комментарий от alone2m

После добавления правила route add -net 192.168.20.0/24 gw 192.168.21.1 не надо же выполнять какое либо сохранение и рестарт сервиса?

Нет

После перезагрузки правило исчезает.

https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s1-networkscripts-sta...

В /etc/sysconfig/network-scripts/route-eth1 нужно добавить строку

192.168.20.0/24 via 192.168.21.1 dev eth1
Ttt ☆☆☆☆☆ ()
Ответ на: комментарий от Ttt

Ну с этим я розобрался.
А вот почему не пингуется.... Может можно решить вопрос только через iptables. К примеру правилами в таблице filter прописать перенаправленние, а вместо действия отправлять в цепочку OUTPUT таблицы nat.

alone2m ()
Ответ на: комментарий от Ttt

Вопрос решился добавлением правила

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.20.0/24 -j MASQUERADE 
Работает нормально. Теперь буду думать как сделать то красивее. Огромное СПАСИБО за помощь!!!

alone2m ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.