Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: iptables DNAT  (Прочитано 8375 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: iptables DNAT
« Ответ #15 : 26 Января 2011, 04:38:42 »
Поскольку я дико устал и хочу спать...
(Нажмите, чтобы показать/скрыть)

P.S.
Если умудришься загрузить скрипт в брандмауэр как я его привёл - ССЗБ.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: iptables DNAT
« Ответ #16 : 26 Января 2011, 19:01:37 »
Поскольку я дико устал и хочу спать...
(Нажмите, чтобы показать/скрыть)

P.S.
Если умудришься загрузить скрипт в брандмауэр как я его привёл - ССЗБ.


Что за ССЗБ? =)
Для начала надо разобраться что там понаписано (или хотя бы поменять адреса на свои). Загрузить через iptables-restore?
Тут столько правил понаписано, нельзя обойтись более простыми? И что делают эти?

А еще решил все же пересмотреть маршрутизацию и сделать более-менее нормальную. Когда делаю так:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source IPто инет чуть живой и странички если и загружаются, то медленно очень и не полностью. А если так:
iptables -t nat -A POSTROUTING -j MASQUERADEто нормально работает.  Но MASQUERADE можно использовать только для динамических адресов (как написано в man).
Так как сделать, что бы был инет без MASQUERADE?

P.S. Оставим пока вопрос о портах на попозже.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: iptables DNAT
« Ответ #17 : 26 Января 2011, 19:45:35 »
Ну так разберись. Возьми этот кусочек скрипта, что я привёл, и построчно на русском языке опиши, что там делается. Я не буду разжевывать тебе каждую строчку, разве что четыре последних.

Правила с назначением ULOG являются частью системы подсчёта трафика.
Правило с назначением REJECT - это вариант назначения DROP, только быстрее приводящий к успокоению клиента. Поскольку клиент, подключившись на определённый порт, не ждёт ответа до истечения таймаута, а сразу получает ответ "тут ловить нечего" и идёт лесом.

Если говорить о том, почему у тебя через зад работает SNAT, обрати внимание, у тебя проверяется только адрес осточника. С таким же успехом ты мог вообще пропустить проверку.
Хотя бы проверяй, что адрес назначения НЕ принадлежит к нашей сети, если не хочешь писать имя исходящего интерфейса.
MASQUERADE можно использовать со статическим IP, но это менее эффективно, при условии, что правильно написано само правило трансляции.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: iptables DNAT
« Ответ #18 : 26 Января 2011, 23:21:20 »
Ну так разберись. Возьми этот кусочек скрипта, что я привёл, и построчно на русском языке опиши, что там делается. Я не буду разжевывать тебе каждую строчку, разве что четыре последних.

Правила с назначением ULOG являются частью системы подсчёта трафика.
Правило с назначением REJECT - это вариант назначения DROP, только быстрее приводящий к успокоению клиента. Поскольку клиент, подключившись на определённый порт, не ждёт ответа до истечения таймаута, а сразу получает ответ "тут ловить нечего" и идёт лесом.

Если говорить о том, почему у тебя через зад работает SNAT, обрати внимание, у тебя проверяется только адрес осточника. С таким же успехом ты мог вообще пропустить проверку.
Хотя бы проверяй, что адрес назначения НЕ принадлежит к нашей сети, если не хочешь писать имя исходящего интерфейса.
MASQUERADE можно использовать со статическим IP, но это менее эффективно, при условии, что правильно написано само правило трансляции.

Спасибо, с MASQUERADE и SNAT разобрался и настроил - все норм работает. А вот с портами нет:
# Generated by iptables-save v1.4.4 on Wed Jan 26 23:06:56 2011
*filter
:INPUT ACCEPT [1654:200776]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1314:166418]
:BILLING - [0:0]
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j BILLING
-A FORWARD -m conntrack --ctstate DNAT -j BILLING
-A FORWARD -s 192.168.0.0/24 ! -i eth0 -m conntrack --ctstate NEW -j BILLING
-A FORWARD -i eth0 -j ULOG --ulog-prefix "FORWARD-TRAP "
-A FORWARD ! -i eth0 -j LOG --log-prefix "FORWARD-TRAP "
-A BILLING -s 192.168.0.0/24 -o eth0 -j ULOG --ulog-prefix "FORWARD-IN "
-A BILLING -d 192.168.0.0/24 -i eth0 -j ULOG --ulog-prefix "FORWARD-OUT "
-A BILLING -j ACCEPT
COMMIT
# Completed on Wed Jan 26 23:06:56 2011
# Generated by iptables-save v1.4.4 on Wed Jan 26 23:06:56 2011
*nat
:PREROUTING ACCEPT [20108:1943642]
:OUTPUT ACCEPT [18821:1519163]
:POSTROUTING ACCEPT [8552:711106]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 49160 -j DNAT --to-destination 192.168.0.1:49160
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 58559 -m conntrack --ctstate NEW -j DNAT --to-destination 192.168.0.2:58559
-A POSTROUTING -s 192.168.0.0/24 -d 10.0.0.0/8 -o eth0 -j SNAT --to-source LOCAL_IP
-A POSTROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -o eth0 -j SNAT --to-source IP
COMMIT
# Completed on Wed Jan 26 23:06:56 2011

При этом http://www.yougetsignal.com/tools/open-ports/ говорит, что порт открыт, а telnet выдает
Unable to connect to remote host: Connection refused

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: iptables DNAT
« Ответ #19 : 27 Января 2011, 01:11:51 »
Телнет на какой адрес проверяешь? Изнутри сети?
(-j ULOG можешь выбросить, как и всю цепочку BILLING. Вместо -j BILLING написать -j ACCEPT)
« Последнее редактирование: 27 Января 2011, 01:13:47 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: iptables DNAT
« Ответ #20 : 27 Января 2011, 13:59:55 »
Телнет на какой адрес проверяешь? Изнутри сети?
(-j ULOG можешь выбросить, как и всю цепочку BILLING. Вместо -j BILLING написать -j ACCEPT)

Блин, я ступил. Из сетки и не получилось бы подключиться. =)
Все, настроил и работает, спасибо.
Только вот еще какая проблемка: есть пиринг с сетью другого провайдера. Для этого нужно добавить маршрутизацию:
route add -net 178.130.0.0 netmask 255.255.128.0 gw 10.2.5.1 eth0На сервере это сделал и могу подключаться к их хабу. Сделал тоже и на своей машине, но подключиться не могу. Вот маршрутизация моего компа:
Destination Gateway Genmask Flags Metric Ref Use Iface
10.2.5.1        0.0.0.0         255.255.255.255 UH    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
178.130.0.0     10.2.5.1        255.255.128.0   UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
Как можно настроить? =)

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: iptables DNAT
« Ответ #21 : 27 Января 2011, 14:04:55 »
Блин, я ступил. Из сетки и не получилось бы подключиться. =)
можно, почитайте доку что я приводил касательно DNAT

Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: iptables DNAT
« Ответ #22 : 27 Января 2011, 14:52:31 »
Блин, я ступил. Из сетки и не получилось бы подключиться. =)
можно, почитайте доку что я приводил касательно DNAT

Хм. Похоже я запутался. А ведь и правда, почему нельзя? Когда я писал, меня смутило, что подключиться с локальной машины у меня не получилось, и что в правиле было написано
-i ppp0Тогда почему же не получается подключиться из локалки?

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: iptables DNAT
« Ответ #23 : 27 Января 2011, 15:01:13 »
Тогда почему же не получается подключиться из локалки?
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
и вообще, давайте перестанем оперировать сферическими конями в вакууме и прямо напишете какой порт куда требуется переназначить и на какой порт откуда цепляетесь и с каким результатом.

Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: iptables DNAT
« Ответ #24 : 27 Января 2011, 16:53:47 »
Тогда почему же не получается подключиться из локалки?
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
и вообще, давайте перестанем оперировать сферическими конями в вакууме и прямо напишете какой порт куда требуется переназначить и на какой порт откуда цепляетесь и с каким результатом.

Редирект на 3128 работает. Не получается следующее: на 192.168.0.2 стоит скайп. У него в настройках указан порт 58559. Если с этой же машины через телнет попытаться подключиться через инет:
telnet IP 58559то выдает
Unable to connect to remote host: Connection refusedА если подключаться напрямую:
telnet 192.168.0.2 58559то подключается нормально.
Настройка iptables в данный момент такая:
# Generated by iptables-save v1.4.4 on Thu Jan 27 16:37:08 2011
*filter
:INPUT ACCEPT [1071525:182861249]
:FORWARD ACCEPT [298838:282937374]
:OUTPUT ACCEPT [1373489:1541895010]
COMMIT
# Completed on Thu Jan 27 16:37:08 2011
# Generated by iptables-save v1.4.4 on Thu Jan 27 16:37:08 2011
*nat
:PREROUTING ACCEPT [34247:3339830]
:OUTPUT ACCEPT [44994:4154186]
:POSTROUTING ACCEPT [30834:3004228]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -p tcp -m tcp --dport 49160 -j DNAT --to-destination 192.168.0.1
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 58559 -j DNAT --to-destination 192.168.0.2
-A PREROUTING ! -i eth1 -p tcp -m tcp --dport 9177:9778 -j DNAT --to-destination 192.168.0.2
-A PREROUTING ! -i eth1 -p udp -m udp --dport 9179 -j DNAT --to-destination 192.168.0.2
-A POSTROUTING -s 192.168.0.0/24 -d 10.0.0.0/8 -o eth0 -j SNAT --to-source 10.2.5.24
-A POSTROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -o ppp0 -j SNAT --to-source 92.61.66.248
COMMIT
# Completed on Thu Jan 27 16:37:08 2011

Так же вопрос по маршрутизации есть (второй вопрос). Моя сеть - 192.168.0.0/24, сеть провайдера - 10.0.0.0/8 и еще пиринг с другим провайдером - 178.130.0.0/255.255.128.0
192.168.0.1 - это мой сервер. на нем прописал в маршрутах как указано на сайте провайдера
route add -net 178.130.0.0 netmask 255.255.128.0 gw 10.2.5.1 eth0После этого, с сервера я могу подключаться в хабам другого провайдера. На своем компе (192.168.0.2) так же сделал  такую маршрутизацию, но подключаться не могу почему-то. Как настроить в данном случае?
« Последнее редактирование: 27 Января 2011, 16:55:26 от komex »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: iptables DNAT
« Ответ #25 : 27 Января 2011, 18:20:09 »
Это не проблема. У тебя соединение с внешним IP идёт через внутренний нетранслированный адрес.
Соответственно, машина со скайпом видит адрес отправителя и пытается отправить пакеты с ответами напрямую... но там их ждут от сервера...
В общем, если только нет ОЧЕНЬ серьёзной причины звонить на скайп изнутри сети, проще с этим не заморачиваться.

P.S.
Куда ты в -t nat -A PREROUTING -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT подевал? Должно быть первой строчкой, как и в -t filter -A FORWARD.
« Последнее редактирование: 27 Января 2011, 18:35:35 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: iptables DNAT
« Ответ #26 : 27 Января 2011, 21:44:55 »
Так же вопрос по маршрутизации есть (второй вопрос). Моя сеть - 192.168.0.0/24, сеть провайдера - 10.0.0.0/8 и еще пиринг с другим провайдером - 178.130.0.0/255.255.128.0
192.168.0.1 - это мой сервер. на нем прописал в маршрутах как указано на сайте провайдера
route add -net 178.130.0.0 netmask 255.255.128.0 gw 10.2.5.1 eth0После этого, с сервера я могу подключаться в хабам другого провайдера. На своем компе (192.168.0.2) так же сделал  такую маршрутизацию, но подключаться не могу почему-то. Как настроить в данном случае?
т.к. в домашней сети всего 1 шлюз, достаточно прописать маршруты только на нем. клиенты отправляя пакеты в неизвестную подсеть будут использовать шлюз по умолчанию.

Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: iptables DNAT
« Ответ #27 : 27 Января 2011, 22:26:15 »
Куда ты в -t nat -A PREROUTING -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT подевал? Должно быть первой строчкой, как и в -t filter -A FORWARD.

Хм. Забыл добавить. Когда эксперементировал с настройками убрал, а потом, когда заработало, забыл добавить? Это очень важно?

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

В том-то и дело, что на нем прописаны. Все равно не соединяется. С 192.168.0.1 есть соединение, а с других машин нет.

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: iptables DNAT
« Ответ #28 : 27 Января 2011, 22:33:15 »
Цитировать
user@host:~$ traceroute 10.0.0.1
traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 60 byte packets
 1  router.domain.ru (192.168.1.1)  3.767 ms  3.718 ms  3.681 ms
 2  10.0.0.1 (10.0.0.1)  6.562 ms  6.907 ms  7.133 ms
user@host:~$ netstat -rn
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0     0.0.0.0         255.255.255.224 U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth1

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: iptables DNAT
« Ответ #29 : 27 Января 2011, 23:02:59 »
Куда ты в -t nat -A PREROUTING -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT подевал? Должно быть первой строчкой, как и в -t filter -A FORWARD.

Хм. Забыл добавить. Когда эксперементировал с настройками убрал, а потом, когда заработало, забыл добавить? Это очень важно?
Это не столько важно, сколько полезно.
Простой пример:

(Нажмите, чтобы показать/скрыть)
Посмотри на количество пакетов, прошедших через каждое правило.

Но в некоторых ситуациях настройки это бывает и важно тоже. Портфорвард - одна из них.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.022 секунд. Запросов: 21.