Перейти к содержанию

iptables -t nat -I POSTROUTING


Рекомендуемые сообщения

И снова здравствуйте!

Имеем роутер на базе Fedora10 с 5-ю сетевыми картами:

eth0 - смотрит в локаль (192.168.0.0/16)

eth1-4 - смотрят в нет (ч/з адсл-модемы)

Адреса клиентам раздаются ДНСП (192.169.0.0/16)

Клиенты подключаются к интернет ч/з ВПН

Скрипт инициализации ВПН-соединения: (/etc/ppp/ip-up)

$1 - имя создаваемого интерфейса (ppp0)

$5 - адрес, насначаемый клиенту (к примеру 192.168.10.20)

$4 - адрес роутера (192.168.1.1)

iptables -I INPUT -i $1 -s $5 -d $4 -j ACCEPT

iptables -I INPUT -i $1 -s $5 -d $4 -j LOG --log-prefix "INPUT "

эти правила работают, клиент видит сервер, но в логи ничего не попадает

iptables -I FORWARD -i $1 -s $5 -j ACCEPT

iptables -I FORWARD -i $1 -s $5 -j LOG --log-prefix "FORWARD "

iptables -t nat -I POSTROUTING -i eth1 -s $5 -j SNAT --to-source (ip_eth1)

iptables -t nat -I POSTROUTING -i eth1 -s $5 -j LOG --log-prefix "POSTROUTING"

iptables -I FORWARD -o $1 -m state --state RELATED,ESTABLISHED -j LOG --log-prefix "BACKWARD"

iptables -I FORWARD -o $1 -m state --state RELATED,ESTABLISHED -j ACCEPT

Правила форвардинга и построутинга в логи попадают, а обратный форвардинг - нет

в логи пишет:

Jul 23 18:44:36 server kernel: FORWARD PPP0: IN=ppp0 OUT=eth1 SRC=192.169.111.1 DST=69.147.83.40 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=34218 DF PROTO=TCP SPT=3472 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0

Jul 23 18:44:36 server kernel: POSTROUTING PPP0: IN= OUT=eth1 SRC=192.169.111.1 DST=69.147.83.40 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=34218 DF PROTO=TCP SPT=3472 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0

Jul 23 18:44:39 server kernel: FORWARD PPP0: IN=ppp0 OUT=eth1 SRC=192.169.111.1 DST=69.147.83.40 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=34222 DF PROTO=TCP SPT=3472 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0

Jul 23 18:44:45 server kernel: FORWARD PPP0: IN=ppp0 OUT=eth1 SRC=192.169.111.1 DST=69.147.83.40 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=34267 DF PROTO=TCP SPT=3472 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0

Jul 23 18:44:58 server kernel: FORWARD PPP0: IN=ppp0 OUT=eth4 SRC=192.169.111.1 DST=91.198.36.14 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=35074 DF PROTO=TCP SPT=3498 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0

Jul 23 18:44:58 server kernel: POSTROUTING PPP0: IN= OUT=eth4 SRC=192.169.111.1 DST=91.198.36.14 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=35074 DF PROTO=TCP SPT=3498 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0

Jul 23 18:45:01 server kernel: FORWARD PPP0: IN=ppp0 OUT=eth4 SRC=192.169.111.1 DST=91.198.36.14 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=35076 DF PROTO=TCP SPT=3498 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0

Jul 23 18:45:07 server kernel: FORWARD PPP0: IN=ppp0 OUT=eth4 SRC=192.169.111.1 DST=91.198.36.14 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=35078 DF PROTO=TCP SPT=3498 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0

Как правильно разрешить форвардинг клиентам?

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

Я не совсем понял Вашу схему. Если проблема ещё не решилась, нарисуйте более подробную схемку с указанием клиента, выхода в инет, на каком интерфейсе поднят vpn, адресов интерфейсов и т.д..

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

gogi писал(а) Fri, 24 July 2009 16:14

Я не совсем понял Вашу схему. Если проблема ещё не решилась, нарисуйте более подробную схемку с указанием клиента, выхода в инет, на каком интерфейсе поднят vpn, адресов интерфейсов и т.д..

Имеется компьютер с пятью сетевыми картами eth0, eth1, eth2, eth3, eth4 и ОС Fedora10

Сетевая карта eth0 имееет адрес 192.168.1.1/16 и смотрит в локальную сеть

Сетевая карта eth1 имеет адрес 10.10.10.10/24 и смотрит на адсл-модем

Сетевая карта eth2 имеет адрес 10.10.20.10/24 и смотрит на адсл-модем

Сетевая карта eth3 имеет адрес 10.10.30.10/24 и смотрит на адсл-модем

Сетевая карта eth4 имеет адрес 10.10.40.10/24 и смотрит на адсл-модем

Всем пользователям назначены статические адреса в диапазоне 192.168.0.0/16

Далее фаервол настроен на статическую маршрутизацию адресов, т. е. все пользователи разделены на четыре группы и каждая группа роутится на один из модемов.

Для этого созданы четыре таблицы маршрутизации.

Так есть сейчас.

Наша задача: динамически распределять пользователей по модемам по следующей схеме:

1. Пользователь получает динамический адрес от DHCP-сервера из диапазона 192.169.0.0/16

2. Пользователь создает впн-подключение к серверу по логину/паролю

3. скрипт инициализации ppp-канала прописывает вышеуказанные правила форвардинга и маршрутизации, назначая ему динамически один из четырех маршрутов.

В последнем пункте загвоздка с маршрутизацией.

Для чистоты эксперимента скрипт сбрасывает вначале все таблицы маршрутизации и правола iptables но клиент не может выйти в интернет.

буду рад Вашим соображениям

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

Выложите еще таблицы маршрутизации на клиенте и на роутере до и после поднятия впн.

И еще фактически действующие правила (iptables-save) тоже до и после соединения.

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

  • 3 недели спустя...

притащил на работу старенький целерон, поставил на нем роутер и упражняюсь на нем в написании фаервола. Когда будут результаты - отпишусь

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

Цитата:

все пользователи разделены на четыре группы и каждая группа роутится на один из модемов.

Для этого созданы четыре таблицы маршрутизации.

чем роутятся???

iproute2 ?

Тогда ip ro ls в студию

и ip ru ls

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

# ip ro ls

10.10.20.0/24 dev eth2 proto kernel scope link src 10.10.20.10

10.10.50.0/24 dev eth1 proto kernel scope link src 10.10.50.10

10.10.30.0/24 dev eth3 proto kernel scope link src 10.10.30.10

10.10.10.0/24 dev eth1 proto kernel scope link src 10.10.10.10

192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1

10.10.40.0/24 dev eth4 proto kernel scope link src 10.10.40.10

169.254.0.0/16 dev eth2 scope link metric 1002

169.254.0.0/16 dev eth3 scope link metric 1003

169.254.0.0/16 dev eth4 scope link metric 1004

169.254.0.0/16 dev eth0 scope link metric 1005

169.254.0.0/16 dev eth1 scope link metric 1006

192.168.0.0/16 dev eth0 proto kernel scope link src 192.168.1.1

default

nexthop via 10.10.10.1 dev eth1 weight 1

nexthop via 10.10.20.1 dev eth2 weight 1

nexthop via 10.10.30.1 dev eth3 weight 1

nexthop via 10.10.40.1 dev eth4 weight 1

]# ip ru ls

0: from all lookup local

32758: from all fwmark 0x28 lookup RT4

32759: from all fwmark 0x1e lookup RT3

32760: from all fwmark 0x14 lookup RT2

32761: from all fwmark 0xa lookup RT1

32762: from 10.10.40.10 lookup RT4

32763: from 10.10.30.10 lookup RT3

32764: from 10.10.20.10 lookup RT2

32765: from 10.10.10.10 lookup RT1

32766: from all lookup main

32767: from all lookup default

для eth1 создано два интерфейсв

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

  • 3 недели спустя...

Немного изменил конфигурацию:

eth0 - 200.200.200.1/24 - смотрит в локальную сеть

eth1 - 10.10.10.10/24 - смотрит на адсл-модем

правила iptables:

FW='/usr/sbin/iptables'

IF_LOCAL='eth0'

IP_LOCAL='200.200.200.1'

NET_LOCAL='200.200.200.0/24'

IF_NET='eth1'

IP_NET='10.10.10.10'

NET_NET='10.10.10.0/24'

IF_PPP='ppp+'

PPP_NET='100.100.100.0/24'

IP_GW1='10.10.10.1'

EXT_NET='0/0'

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

route add default gw $IP_GW1

$FW -F

$FW -X

$FW -Z

$FW -t nat -F

$FW -t mangle -F

# ************ INPUT *****************************

$FW -A INPUT -i lo -j ACCEPT

$FW -A INPUT -i $IF_PPP -j ACCEPT

$FW -A INPUT -i $IF_LOCAL -s $PPP_NET -j ACCEPT

$FW -A INPUT -i $IF_LOCAL -s $NET_LOCAL -p tcp --dport 1723 -j ACCEPT

$FW -A INPUT -i $IF_LOCAL -s $NET_LOCAL -p udp --dport 1723 -j ACCEPT

$FW -A INPUT -i $IF_LOCAL -s $NET_LOCAL -p gre -j ACCEPT

$FW -A INPUT -i $IF_LOCAL -j DROP

# ************ OUTPUT *****************************

$FW -A OUTPUT -o lo -j ACCEPT

$FW -A OUTPUT -o $IF_PPP -j ACCEPT

#$FW -A OUTPUT -o $IF_LOCAL -d $PPP_NET -j ACCEPT

$FW -A OUTPUT -o $IF_LOCAL -d $NET_LOCAL -p tcp --sport 1723 -j ACCEPT

$FW -A OUTPUT -o $IF_LOCAL -d $NET_LOCAL -p udp --sport 1723 -j ACCEPT

$FW -A OUTPUT -o $IF_LOCAL -d $NET_LOCAL -p gre -j ACCEPT

$FW -A OUTPUT -o $IF_LOCAL -j DROP

# ************ FORWARD *****************************

$FW -A FORWARD -i $IF_PPP -d $EXT_NET -j ACCEPT

$FW -A FORWARD -s $EXT_NET -d $PPP_NET -j ACCEPT

# ************ POSTROUTING *****************************

$FW -t nat -A POSTROUTING -s $PPP_NET -d $EXT_NET -j SNAT --to-source $IP_GW1

[/codebox]

iptables-save

# Generated by iptables-save v1.3.6 on Tue Sep 15 09:38:29 2009

*mangle

:PREROUTING ACCEPT [392:27906]

:INPUT ACCEPT [383:27310]

:FORWARD ACCEPT [9:596]

:OUTPUT ACCEPT [288:20286]

:POSTROUTING ACCEPT [235:16202]

COMMIT

# Completed on Tue Sep 15 09:38:29 2009

# Generated by iptables-save v1.3.6 on Tue Sep 15 09:38:29 2009

*nat

:PREROUTING ACCEPT [128:11077]

:POSTROUTING ACCEPT [11:836]

:OUTPUT ACCEPT [7:552]

-A POSTROUTING -s 100.100.100.0/255.255.255.0 -j SNAT --to-source 10.10.10.1

COMMIT

# Completed on Tue Sep 15 09:38:29 2009

# Generated by iptables-save v1.3.6 on Tue Sep 15 09:38:29 2009

*filter

:INPUT ACCEPT [3:252]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [9:756]

-A INPUT -i lo -j ACCEPT

-A INPUT -i ppp+ -j ACCEPT

-A INPUT -s 100.100.100.0/255.255.255.0 -i eth0 -j ACCEPT

-A INPUT -s 200.200.200.0/255.255.255.0 -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT

-A INPUT -s 200.200.200.0/255.255.255.0 -i eth0 -p udp -m udp --dport 1723 -j ACCEPT

-A INPUT -s 200.200.200.0/255.255.255.0 -i eth0 -p gre -j ACCEPT

-A INPUT -i eth0 -j DROP

-A FORWARD -i ppp+ -j ACCEPT

-A FORWARD -d 100.100.100.0/255.255.255.0 -j ACCEPT

-A OUTPUT -o lo -j ACCEPT

-A OUTPUT -o ppp+ -j ACCEPT

-A OUTPUT -d 200.200.200.0/255.255.255.0 -o eth0 -p tcp -m tcp --sport 1723 -j ACCEPT

-A OUTPUT -d 200.200.200.0/255.255.255.0 -o eth0 -p udp -m udp --sport 1723 -j ACCEPT

-A OUTPUT -d 200.200.200.0/255.255.255.0 -o eth0 -p gre -j ACCEPT

-A OUTPUT -o eth0 -j DROP

COMMIT

# Completed on Tue Sep 15 09:38:29 2009

[/codebox]

Идея проста: dhcpd раздает адреса клиентам в сети из диапазона 200.200.200.10-250

Далее клиент создает ppp-туннель, получая адрес из диапазона 100.100.100.10-250

Правила INPUT OUTPUT работают, как требуется: ограничивают доступ по eth0 только для установления ppp-соединения, а для ppp-туннелей разрешают.

Не работает только FORWARD POSTROUTING - с клиента не пингуется ни eth0(10.10.10.10), ни адсл(10.10.10.1)

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

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

  Разрешено использовать не более 75 эмодзи.

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

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

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

Загрузка...
×
×
  • Создать...