PermLUG |
Пермская группа пользователей Linux |
|
|
|
||
Вход в систему |
Подскажите, где я дурак
CORPSE, 22.07.2010 — 10:15
Бен, это Данила. Ай нид зе хелп! Есть машина (1) с двумя интерфейсами: Есть машина (2) в локальной сети: Надо сделать выброс порта наружу. На машине 2 открыт порт например, 5800, а я хочу выбросить его как 5000: corpse@monitor:~$ nmap -p 5800 192.168.0.128 Starting Nmap 4.11 ( <a href="http://www.insecure.org/nmap/" title="http://www.insecure.org/nmap/">http://www.insecure.org/nmap/</a> ) at 2010-07-22 10:45 YEKST Interesting ports on 192.168.0.128: PORT STATE SERVICE 5800/tcp open vnc-http На машине 1 для чистоты эксперимента выставляем политику всех таблиц в ACCEPT по дефолту и делаем следующее: iptables -F INPUT iptables -F FORWARD iptables -t nat -F PREROUTING iptables -t nat -F POSTROUTING iptables -t nat -A PREROUTING -i eth0.155 -d x.x.x.x -p tcp -m tcp --dport 5000 -j DNAT --to-destination 192.168.0.128:5800 iptables -A FORWARD -i eth0.155 -d 192.168.0.128 -p tcp --dport 5800 -j ACCEPT iptables -A FORWARD -i eth0.10 -d x.x.x.x -p tcp --dport 5000 -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -t nat -A POSTROUTING --dst 192.168.0.128 -p tcp -m tcp --dport 5800 -j SNAT --to-source x.x.x.x:5000 iptables-save # Generated by iptables-save v1.4.2 on Thu Jul 22 10:58:07 2010 *filter :INPUT ACCEPT [229413:265221649] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [271138:22860408] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -d 192.168.0.128/32 -i eth0.155 -p tcp -m tcp --dport 5800 -j ACCEPT -A FORWARD -d x.x.x.x/32 -i eth0.10 -p tcp -m tcp --dport 5000 -j ACCEPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT COMMIT # Completed on Thu Jul 22 10:58:07 2010 # Generated by iptables-save v1.4.2 on Thu Jul 22 10:58:07 2010 *nat :PREROUTING ACCEPT [6656:976099] :POSTROUTING ACCEPT [8837:629342] :OUTPUT ACCEPT [8831:628950] -A PREROUTING -d x.x.x.x/32 -i eth0.155 -p tcp -m tcp --dport 5000 -j DNAT --to-destination 192.168.0.128:5800 -A POSTROUTING -d 192.168.0.128/32 -p tcp -m tcp --dport 5800 -j SNAT --to-source x.x.x.x COMMIT # Completed on Thu Jul 22 10:58:07 2010 При скане снаружи: corpse:~# tcpdump -i eth0.155 port 5000 -vv tcpdump: listening on eth0.155, link-type EN10MB (Ethernet), capture size 96 bytes 11:00:20.291300 IP (tos 0x0, ttl 57, id 34438, offset 0, flags [DF], proto TCP (6), length 60) hostn.static.corbina.ru.58591 > corpse.local.5000: S, cksum 0xef07 (correct), 1464122683:1464122683(0) win 65535 11:00:23.075798 IP (tos 0x0, ttl 57, id 39599, offset 0, flags [DF], proto TCP (6), length 60) hostn.static.corbina.ru.58591 > corpse.local.5000: S, cksum 0xe34e (correct), 1464122683:1464122683(0) win 65535 corpse:~# tcpdump -i eth0.10 host 192.168.0.128 -vv tcpdump: listening on eth0.10, link-type EN10MB (Ethernet), capture size 96 bytes 11:01:54.520697 IP (tos 0x0, ttl 56, id 338, offset 0, flags [DF], proto TCP (6), length 60) corpse.local.5000 > 192.168.0.128.5800: S, cksum 0x7321 (correct), 1694897657:1694897657(0) win 65535 11:01:57.526165 IP (tos 0x0, ttl 56, id 5742, offset 0, flags [DF], proto TCP (6), length 60) corpse.local.5000 > 192.168.0.128.5800: S, cksum 0x6768 (correct), 1694897657:1694897657(0) win 65535 Т.е. получается так, что машина 1 пакеты извне получает, пересылает их на машину 2, но ответы на машину 1 не возвращаются. Соответственно nmap снаружи говорит, что порт filtered. Поможите, кто чем может. Форвардинг включен, если что. |
Тэги в ТегиНовые записи в блогах
Активные обсуждения форума
Новости Linux
|
| Пермская группа пользователей Linux, 2003—2011 | ||
Тему можно закрывать. Проблема была связана с непониманием следующего - заголовок пакета, попадающий на машину 1 изменяется машиной 1, после чего передаётся машине 2. Для ответа в обратном направлении машина 2 должна иметь доступ к внешнему миру. Передача пакета в обратном направлении невозможно средствами голого SNAT. Был не прав, исправлюсь.
Как можно видеть из следующих двух строк вывода tcpdump, пакеты в сторону удалённого узла уходят напрямую, а не на локальный ип машины 1:
[code]11:33:38.533154 IP 192.168.0.128.5800 > x.x.x.x.62458: . ack 2 win 17640
11:33:38.533524 IP 192.168.0.128.5800 > x.x.x.x.62458: F 1:1(0) ack 2 win 17640
Эм... А в чем сакральный смысл такого обзывания сетевых интерфейсов?
Это не сакральный смысл, это т.н. vlan - http://www.xgu.ru/wiki/VLAN - тут довольно подробно написано. Если в вкратце, то каждый пакет, проходящий через устройство, поддерживающее vlan, может дополнительно маркироваться и в последствии у тебя на одном физическом интерфейсе может существовать несколько виртуальных, тех самых vlan.
eth0 - физический интерфейс
eth0.100, eth0.200 - сотый и двухсотый вланы на интерфейсе eth0, с которыми ты уже можешь работать как с отдельными интерфейсами, на каждый из которых попадают лишь те пакеты, которые для них предназначены, т.е. которые соответствующим образом промаркированы другим оборудованием, например, коммутатором с поддержкой vlan. Т.е. ты можешь спокойно настраивать маршрутизацию между десятком сетей на сервере с одной физической сетевухой. Винда не знала, что такое влан, кажется до 2003-й. Под той же XP вланы можно реализовать кажется, только при установке определённой сетевой карточки от интел. Точно не помню.
Век живи - век учись. Thx =)