проблемы с iptables (или с руками?)

доброго здоровьечка. ситуация у меня такая: 3 компа соединены через свич. сеть есть. все торчком. 1 (без монитора и всего остального) использую как роутер, другие два - для работы.

решил проверить функцию forward шлюза (роутера). пишу на нем (по ssh):
sudo iptables -A FORWARD -i eth0 -p udp --sport 5901 -s 192.168.0.33 -d 192.168.0.77 --dport 5900 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -p tcp --sport 5901 -s 192.168.0.33 -d 192.168.0.77 --dport 5900 -j ACCEPT

я думал, что при попытке подключиться по vnc к шлюзу (192.168.0.99) на порт 5901 буду переброшен на другую машину (192.168.0.77) на порт vnc. однако потерпел фиаско.
проверил /proc/sys/net/ipv4/ip_forward. стоит 1.
но ничего не работает.

файрвол пока только изучаю, решил изменить строки правил, убрав сетевую карту:
sudo iptables -A FORWARD -p udp --sport 5901 -s 192.168.0.33 -d 192.168.0.77 --dport 5900 -j ACCEPT
sudo iptables -A FORWARD -p tcp --sport 5901 -s 192.168.0.33 -d 192.168.0.77 --dport 5900 -j ACCEPT
то же самое.

далее решил проверить функцию prerouting на своем компе (из руководства взял):
sudo iptables -t nat -A PREROUTING -p tcp --dport 3322 -j REDIRECT --to-ports 21
ожидал перевода с порта 3322 (указываю в gftp) на порт 21 (к нему коннект идет и по опере и по gftp при указании 21), однако снова файрвол послал меня погулять.

и еще такой вопрос: правила начинают сразу же действовать после ввода?

на всякий случай приведу цепочку forward:
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 10.5.49.0/24 192.168.0.0/24
ACCEPT all -- 192.168.0.0/24 10.5.49.0/24
ACCEPT all -- 192.168.0.0/24 anywhere
ACCEPT all -- 10.5.49.0/24 anywhere
ACCEPT all -- 192.168.0.0/24 anywhere
ACCEPT all -- 10.5.49.0/24 anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
LOG all -- anywhere 192.168.0.0/24 LOG level warning
DROP all -- anywhere 192.168.0.0/24
LOG all -- anywhere 10.5.49.0/24 LOG level warning
DROP all -- anywhere 10.5.49.0/24
LOG all -- anywhere 192.168.0.0/24 LOG level warning
DROP all -- anywhere 192.168.0.0/24
LOG all -- anywhere 10.5.49.0/24 LOG level warning
DROP all -- anywhere 10.5.49.0/24
DROP all -- anywhere ALL-SYSTEMS.MCAST.NET
LOG all -- anywhere anywhere LOG level warning
DROP all -- anywhere anywhere
tcp -- 192.168.0.33 192.168.0.77 tcp spt:5900 dpt:5900
tcp -- 192.168.0.33 192.168.0.77 tcp spt:5901 dpt:5900
tcp -- 192.168.0.33 192.168.0.77 tcp spt:5901 dpt:5900
udp -- 192.168.0.33 192.168.0.77 udp spt:5901 dpt:5900
udp -- 192.168.0.33 192.168.0.77 udp spt:5901 dpt:5900
tcp -- 192.168.0.33 192.168.0.77 tcp spt:5901 dpt:5900
tcp -- 192.168.0.33 192.168.0.77 tcp spt:5901 dpt:5900
udp -- 192.168.0.33 192.168.0.77 udp spt:5901 dpt:5900
ACCEPT udp -- 192.168.0.33 192.168.0.77 udp spt:5901 dpt:5900
ACCEPT tcp -- 192.168.0.33 192.168.0.77 tcp spt:5901 dpt:5900
ACCEPT tcp -- 192.168.0.33 192.168.0.77 tcp spt:5901 dpt:5900
ACCEPT udp -- 192.168.0.33 192.168.0.77 udp spt:5901 dpt:5900

смущает, что все мои переадресации идут после строки
DROP all -- anywhere anywhere
может, после нее ничего не рассматривается? тогда как засунуть перед ней?

прошу помочь, кто имел дело с iptables.
заранее спасибо.

0
Xenomorph - 18 Февраль, 2010 - 17:46
Изображение пользователя Xenomorph.

Up. Если не решится - пошлём фтопку.

0
salt - 18 Февраль, 2010 - 23:03
Изображение пользователя salt.

Вот так у меня работает:
#!/bin/bash
iptables -F -t nat
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.100 --dport 5900 -j DNAT --to-destination 192.168.5.149:5900
iptables -A FORWARD -i eth0 -d 192.168.5.149 -p tcp --dport 5900 -j ACCEPT
Результатом является подключение извне к машине 192.168.5.149:5900 через сервер
Тут ещё посмотрите: NAT и iptables (Как раздать интернет через вторую сетевую карту)
И тут: Брандмауэр - шлюз в интернет для локальной сети (iptables)

0
poruchik - 18 Февраль, 2010 - 19:18
Изображение пользователя poruchik.

Лишнее:
--sport 5901
Если подключаешься по ВНЦ, порт назначения правильный, но исходящий открывается другой (если не ошибаюсь, произвольный).

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры