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


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

Автор Тема: nat и форвардинг пакетов  (Прочитано 2799 раз)

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

Оффлайн snaker

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
nat и форвардинг пакетов
« : 27 Ноября 2009, 11:39:41 »
поставил Ubuntu, настроил в качестве "роутера", дабы на небольшую сетку раздавала интернет.
таки раздаёт, с этим проблем нет. а вот входящие подключения "из вне" в локалку редиректить не хочет ну никак.

полностью чищу цепочки iptables, пытаюсь настроить хоть что-то:
iptables -t nat -F PREROUTING
iptables -t nat -A PREROUTING  -p tcp --dport 1234 -j DNAT --to-destination 192.168.1.2:1234 # теста ради, на 192.168.1.2 порт 1234 ессно открыт
iptables -F FORWARD
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.1.0/24 -j ACCEPT
iptables -P FORWARD DROP
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

маскарадинг работает, из локалки интернет видно. а вот при попытке снаружи прицепиться к порту 1234 — облом. что не так делаю?

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: nat и форвардинг пакетов
« Ответ #1 : 27 Ноября 2009, 11:47:59 »
iptables -t nat -A PREROUTING  -p tcp --dport 1234 -j DNAT --to-destination 192.168.1.2:1234 # теста ради, на 192.168.1.2 порт 1234 ессно открыт
При этом все пакеты с портом назначения 1234 будут заворачиваться на 192.168.1.2:1234. Нужно в правило добавить адрес назначения == адресу ppp0. Но главное в этом:

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.1.0/24 -j ACCEPT
iptables -P FORWARD DROP

В одну сторону форвард разрешен, а в другую нет. Нужно добавить это:

iptables -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT

Оффлайн snaker

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: nat и форвардинг пакетов
« Ответ #2 : 27 Ноября 2009, 12:28:14 »
iptables -t nat -F PREROUTING
iptables -t nat -A PREROUTING -p tcp -d $ppp_ip --dport 1234 -j DNAT --to-destination 192.168.1.2:1234
iptables -F FORWARD
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT
iptables -P FORWARD DROP
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

не цепляется :(
но что-то всё-таки происходит, потому как ежели забить на прероутинг, то телнет с удалённого хоста ругается "Connection refused", а так просто "подвисает". но всё-равно работать отказывается.

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: nat и форвардинг пакетов
« Ответ #3 : 27 Ноября 2009, 12:56:48 »
Да вроде всё теперь правильно. Можно проверить правильность таблиц и прописавшегося ppp0 ip адреса с помощью iptalbes-save. Ничего лишнего, кроме тех правил не должно быть. Далее еще, чтобы убедиться в том, что пакеты ходят можно глянуть траффик с помощью tcpdump -ni any tcp port 1234.

но что-то всё-таки происходит, потому как ежели забить на прероутинг, то телнет с удалённого хоста ругается "Connection refused", а так просто "подвисает". но всё-равно работать отказывается.
Если забить на прероутинг, то пакет адресуется шлюзу, у которого естественно этот порт никем необслуживается. А подвисает, если пакет уходит куда-то, откуда нет ответа. Точно 1234 открыт на той машине для удалённого хоста?

Оффлайн snaker

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: nat и форвардинг пакетов
« Ответ #4 : 27 Ноября 2009, 13:26:46 »
Цитировать
13:24:45.256951 IP 80.93.62.97.51047 > 95.30.255.137.1234: S 1147577972:1147577972(0) win 32768 <mss 1460,nop,wscale 0,nop,nop,timestamp 1213192242 0,sackOK,eol>
13:24:45.257014 IP 80.93.62.97.51047 > 192.168.1.2.1234: S 1147577972:1147577972(0) win 32768 <mss 1460,nop,wscale 0,nop,nop,timestamp 1213192242 0,sackOK,eol>
13:24:45.257760 IP 192.168.1.2.1234 > 80.93.62.97.51047: S 2274777771:2274777771(0) ack 1147577973 win 17520 <mss 1460,nop,wscale 0,nop,nop,timestamp 0 0,nop,nop,sackOK>
13:24:48.102715 IP 192.168.1.2.1234 > 80.93.62.97.51047: S 2274777771:2274777771(0) ack 1147577973 win 17520 <mss 1460,nop,wscale 0,nop,nop,timestamp 0 0,nop,nop,sackOK>
13:24:48.255341 IP 80.93.62.97.51047 > 95.30.255.137.1234: S 1147577972:1147577972(0) win 32768 <mss 1460,nop,wscale 0,nop,nop,timestamp 1213192542 0,sackOK,eol>
13:24:48.255384 IP 80.93.62.97.51047 > 192.168.1.2.1234: S 1147577972:1147577972(0) win 32768 <mss 1460,nop,wscale 0,nop,nop,timestamp 1213192542 0,sackOK,eol>
13:24:48.255879 IP 192.168.1.2.1234 > 80.93.62.97.51047: . ack 1 win 17520 <nop,nop,timestamp 719365 1213192242>
ну и так далее. т.е .траффик вроде ходит, но почему соединение не устанавливается  :idiot2:

Пользователь решил продолжить мысль 27 Ноября 2009, 13:31:28:
всё, вопрос закрыт.
спасибо за помощь, глюки были не в iptables
« Последнее редактирование: 27 Ноября 2009, 13:31:28 от snaker »

 

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