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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Затуп с iptables: проброс портов.  (Прочитано 2903 раз)

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

Оффлайн DarkArchangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Затуп с iptables: проброс портов.
« : 28 Января 2015, 22:36:22 »
Есть следующая конфигурация:

[ppp0-интерфейс(внешний, 212.232.53.122)]-Server-[vboxnet (виртуальный адаптер хоста, 192.168.56.1)]------[eth-интерфейс (192.168.56.11)]-Виртуальная машина

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


Задача: организовать доступ к веб-интерфейсу ВМ, висящему на 80-м порту, снаружи, через ppp0-интерфейс хоста.

По логике делается элементарно -- выбираем пустой порт снаружи и натим его до виртуальной машины, использую хоть SNAT, хоть DNAT

например iptables -t nat -A POSTROUTING -s 212.232.53.122/32 -p tcp -m tcp --sport 8081 -j SNAT --to-source 192.168.56.11:80

Мне помнится, что надо нат сделать ещё и в обратную сторону: 
iptables -t nat -A POSTROUTING -s 192.168.56.11/32 -p tcp -m tcp --sport 80 -j SNAT --to-source 212.232.53.122:8081
В итоге ни только с первым правилом, ни с обоими доступа нет.

правил с -j DROP сейчас лишь одно, и заданного порта не касается

Порт 8081 не используется, netstat -l | grep 8081 ничего не выдаёт


Собственно куда смотреть-то? Маршруты хосту все известны, с таблицами маршрутизации манипуляций вроде никаких не надо. Натиться тоже должно нормально...
asus p8h67/intel xeon e3-1230v2+Scythe Mugen/8GB PC12600/AMD Radeon 6770, open-source driver/2tb Hitachi deskstar 7200 rpm + Goodram Iridium 120G, Lubuntu 24.04

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Затуп с iptables: проброс портов.
« Ответ #1 : 28 Января 2015, 23:46:33 »
использую хоть SNAT, хоть DNAT


Пользователь решил продолжить мысль 28 Января 2015, 23:47:49:
А если без смайликов, то возьмите словарик и посмотрите переводы слов Source и Destination.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Затуп с iptables: проброс портов.
« Ответ #2 : 28 Января 2015, 23:49:04 »
iptables -t nat -A PREROUTING -s 212.232.53.122/32 -p tcp -m tcp --dport 8081 -j DNAT --to-destination 192.168.56.11:80

Цитировать
хоть SNAT, хоть DNAT

SNAT - Source NAT
DNAT - Destination NAT
« Последнее редактирование: 29 Января 2015, 00:02:44 от .ubuntufan »

Оффлайн Novus3013

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Затуп с iptables: проброс портов.
« Ответ #3 : 29 Января 2015, 01:15:03 »
Так, ребята, интересно, слушайте - у меня хоть и не по теме, но есть такой прикол как это - таблица, ну маленький скрипт, конечно не для НАТ, но есть такой вот прикол защита через cron машины через iptables, ну типа там
$vars = array();
exec("netstat -tulpn", $vars);
$dir = "/home/alex/Home_Projects/agroinform/wp-content/plugins/ucheba/templates/";
$dirForInitScript = "/etc/rc3.d/";
$file_path = $dir."iptables-some-rules.sh";
//print_r($vars); die();
$fp = fopen($file_path, "w+");
//fputs($fp, "iptables -F");
Итак, вроде через крон работает нормально, %)

Константин, Вы не знаете как его применить, чтобы лучше было?
« Последнее редактирование: 29 Января 2015, 01:17:01 от Novus3013 »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Затуп с iptables: проброс портов.
« Ответ #4 : 29 Января 2015, 02:01:15 »
Novus3013, давайте поменьше типа и побольше конкретики.
Что ваш скрипт делает и как работает?
Я никакой защиты в вашем скрипте не вижу. Бред сивой кобылы - этого сколько угодно.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн DarkArchangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Re: Затуп с iptables: проброс портов.
« Ответ #5 : 29 Января 2015, 08:55:21 »
.Ubuntufan:
iptables -t nat -A PREROUTING -s 212.232.53.122/32 -p tcp -m tcp --dport 8081 -j DNAT --to-destination 192.168.56.11:80
не работает.

AnrDaemon:
SNAT -- подмена адреса источника в пакете, DNAT -- получателя.
Проброс портов, насколько я помню, делается хоть с SNAT (цепочка POSTROUTING), хоть DNAT (цепочка PREROUTING), хоть с их комбинацией, обеспечивая подмену адресов для пакетов, ходящих к/от хоста за натом.

upd. проверил с реальной машиной в сети 192.168.0.2, 22-й порт -- результат тот же, по внешнему адресу не соединяется, connection refused...
правила по очереди пробовал что-то типа
iptables -t nat -A PREROUTING -p tcp -d 212.232.53.122 --dport 22 -j DNAT --to-destination 192.168.0.2:22
iptables -t nat -A POSTROUTING -p tcp -s 212.232.53.122 --sport 22 -j SNAT --to-source 192.168.0.2:22

значит где-то я всё же туплю, причём сильно :/

« Последнее редактирование: 29 Января 2015, 12:09:34 от DarkArchangel »
asus p8h67/intel xeon e3-1230v2+Scythe Mugen/8GB PC12600/AMD Radeon 6770, open-source driver/2tb Hitachi deskstar 7200 rpm + Goodram Iridium 120G, Lubuntu 24.04

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Затуп с iptables: проброс портов.
« Ответ #6 : 29 Января 2015, 14:01:54 »
Цитировать
ходящих к/от хоста за натом

именно что у них назначение разное
как ты собрался пробрасывать порт для пакетов ходящих К хосту за натом с помощью механизма транслирующего пакеты ОТ хоста за натом

Во первых нужно включить ip_forward
echo "1" > /proc/sys/net/ipv4/ip_forward

Во вторых определть правила PREROUTING и POSTROUTING:
Внешний IP - 212.232.53.122
Внутренний IP - 192.168.0.1
IP другого внутреннего хоста для трансляции портов: 192.168.0.2

sudo iptables -t nat -A PREROUTING -d 212.232.53.122 -p tcp --dport 8081 -j DNAT --to-destination 192.168.0.2:80
sudo iptables -t nat -A POSTROUTING -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.1

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Затуп с iptables: проброс портов.
« Ответ #7 : 29 Января 2015, 14:18:01 »
SNAT не нужен.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн DarkArchangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Re: Затуп с iptables: проброс портов.
« Ответ #8 : 29 Января 2015, 16:27:57 »
.ubuntufan, AnrDaemon: оке. пробуем.
Ставим задание ещё проще -- прокинуть 22-й порт с наружного адреса 212.232.53.122 на внутренний 192.168.0.2.
$ -- запуск от непривелегированного пользователя, # -- запуск от администратора.

Проверяем локальный доступ к SSH.
$ ssh user@192.168.0.2
The authenticity of host '192.168.0.2 (192.168.0.2)' can't be established.
...
В общем соединение есть.

Пробуем без дополнительных манипуляций с таблицами влезть по внешнему адресу:
$ ssh user@212.232.53.122
ssh: connect to host 212.232.53.122 port 22: Connection refused
Cоединения, закономерно, нет.

Проверяем, нет ли чего лишнего в таблице маршрутизации.
$ route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
default         *               0.0.0.0         U     0      0        0 ppp0
10.0.0.0        *               255.0.0.0       U     0      0        0 eth2
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
192.168.56.0    *               255.255.255.0   U     0      0        0 vboxnet0
asr-1000-01.yar *               255.255.255.255 UH    0      0        0 ppp0
Никаких левых маршрутов, которые могли бы уводить пакеты насторону, не наблюдается.

Проверяем возможность форвардинга, наличие запретов и добавляем предложенные правила по очереди.
$ cat  /proc/sys/net/ipv4/ip_forward
1

# iptables-save | grep DROP
-A INPUT ! -s 217.15.144.0/24 -p tcp -m tcp --dport 64572 -j DROP

# iptables -t nat -A PREROUTING -d 212.232.53.122 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.2:22
$ ssh user@212.232.53.122
ssh: connect to host 212.232.53.122 port 22: Connection refused

# iptables -t nat -A POSTROUTING -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.1
$ ssh user@212.232.53.122
ssh: connect to host 212.232.53.122 port 22: Connection refused

В общем-то ни с только первым правилом, ни с обеими не отрабатывает. Что непонятно. Появятся у кого мысли -- пишите. Найду, где затык -- отпишусь в конце темы и поправлю первое сообщение.
Спасибо всем ответившим!

# iptables -t nat -D PREROUTING -d 212.232.53.122 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.2:22
# iptables -t nat -D POSTROUTING -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.1
asus p8h67/intel xeon e3-1230v2+Scythe Mugen/8GB PC12600/AMD Radeon 6770, open-source driver/2tb Hitachi deskstar 7200 rpm + Goodram Iridium 120G, Lubuntu 24.04

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Затуп с iptables: проброс портов.
« Ответ #9 : 29 Января 2015, 16:53:43 »
охлол, а ты с другого хоста проверять не пробовал?

Оффлайн koshev

  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Re: Затуп с iptables: проброс портов.
« Ответ #10 : 29 Января 2015, 19:54:30 »

правил с -j DROP сейчас лишь одно, и заданного порта не касается

Я думаю, пора показывать iptables-save.

Пользователь решил продолжить мысль 29 Января 2015, 19:56:24:
# iptables -t nat -D PREROUTING -d 212.232.53.122 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.2:22
# iptables -t nat -D POSTROUTING -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.1
С чего бы это такие правила?
« Последнее редактирование: 29 Января 2015, 19:56:24 от koshev »
OpenWrt 19.07

Оффлайн DarkArchangel

  • Автор темы
  • Участник
  • *
  • Сообщений: 137
    • Просмотр профиля
Re: Затуп с iptables: проброс портов.
« Ответ #11 : 29 Января 2015, 20:33:58 »
с правилом где DNAT ssh-ка на реальный компьютер с другого хоста сработала, на виртуальный -- не хочет.
Может быть дело в ВМ.
nmap с другого же хоста показывает, что 80-й и 22-й порты открыты, но filtered... возможно дело в ВМ или в странной реализации виртуального адаптера... Будем ещё попробовать и посмотреть. Спасибо.
asus p8h67/intel xeon e3-1230v2+Scythe Mugen/8GB PC12600/AMD Radeon 6770, open-source driver/2tb Hitachi deskstar 7200 rpm + Goodram Iridium 120G, Lubuntu 24.04

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Затуп с iptables: проброс портов.
« Ответ #12 : 30 Января 2015, 02:55:08 »
1. Нормально настраиваем хост https://forum.ubuntu.ru/index.php?topic=107492.0
2. Пробуем ещё раз после настройки хоста.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

 

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