LINUX.ORG.RU
решено ФорумAdmin

В чем косяк NAT

 ,


0

1

Всем привет)
Такая проблема,довольно-таки распространенная,но не догоняю)
Надо сделать NAT.
Чтобы пользователи локалки могли ходить в интернеты.
eth0-интернеты 88.888.888.8/24
eth1-локалка 192.168.70.0/24

iptables -t nat -A POSTROUTING -s 88.888.888.8/24 -d 192.168.70.0/24 -j MASQUERADE

Интернеты не появляются)
Форвардинг включен

Что пишу не так?



Последнее исправление: Zubat (всего исправлений: 1)

iptables -t nat -A POSTROUTING -s 88.888.888.8/24 -d 192.168.70.0/24 -j MASQUERADE 

Интернеты ходят в локалку?

iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -j MASQUERADE
Kuzz ★★★
()
Ответ на: комментарий от v9lij

Да,спасибо) Я просто хочу разобраться)
Тогда -s и -d -что это?

iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -j MASQUERADE
т.е происходит подмена адресса,если пакет поступает из источника 192.168.70.0/24 ?
При включенном форвардинеге,как обязательное условие?
Верно?

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

-s - источник, да.

Получается, что:

-s 192.168.70.0/24 -j MASQUERADE
если пакет идет с 192.168.70. то маскарадить его. Т.е. заменить в пакете адрес источника, послать дальше, сохранить «кому что поменяли» в таблице для отлова ответного пакета и соответствующей его обработки

Kuzz ★★★
()
Ответ на: комментарий от Zubat

iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -j MASQUERADE т.е происходит подмена адресса,если пакет поступает из источника 192.168.70.0/24 ?

Да. Правило в iptables состоит из критериев и действия. Конкретно это правило нужно читать так:

В таблицу nat (в которой происходит трансляция адресов) добавить в конец (-A) правило в POSTROUTING (порядок прохождения пакета можно нагуглить в виде диаграмы): для всех пакетов, источник (-s) которых 192.168.70.0/24, применить действие MASQUERADE.

Подробнее тут: http://ru.wikibooks.org/wiki/Iptables

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

Спасибо огромное! C iptables начал знакомство,потихоньку раскуриваю)

Zubat
() автор топика
Ответ на: комментарий от Kuzz

DNAT и SNAT могут сбить с толку)

DNAT: пакет идет извне к нам, но адресом указан внешний интерфейс шлюза. Следовательно меняем адрес получателя и пересылаем во внутреннюю сеть.

SNAT: мы шлем пакет, но адрес источника там - наш внутренний. Меняем его и пересылаем дальше

Kuzz ★★★
()
Ответ на: комментарий от Zubat

При включенном форвардинеге,как обязательное условие?

Форвардинг, который net.ipv4.ip_forward работает немного на другом уровне. Этот параметер определяет возможность маршрутизации пакетов ядром. Даже если он выключен, iptables будет обрабатывать подобные правила, но толку от этого не будет :)

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

Отличный линк!

Насколько я помню, это руководство написал лоровец nnz

power
()

Что пишу не так?

Всё.

iptables -A POSTROUTING -t nat -o eth0 -s ! 88.88.88.88 -j MASQUERADE
iptables -I FORWARD 1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD 2 -i eth1 -o eth0 -j ACCEPT
no-dashi ★★★★★
()

И, кстати, если внешний IP статический, то маскарадинг на фиг не нужен. Лучше SNAT/DNAT.

anonymous
()

И подытоживая, что нужно сделать:
1) разрешить ядру форвардинг (net.ipv4.ip_forward=1)
2) добавить разрешения в цепочку FORWARD
3) устроить «маскарад» в цепочке POSTROUTING

Второй пункт, как заметили, ты скорей всего не сделал.
Вообще, лучше сразу все настройки iptables сюда кидай - поразбираемся.

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