Войти

Показать полную графическую версию : Удалённый доступ к Windows через iptables


Gangabass
11-01-2009, 10:25
Необходимо разрешить доступ к одной из Windows машин в локальной сети.
Сеть подключена к Интернету через машину с ASPLinux.

В iptables выставил вот это:
-A PREROUTING -d наш.внешний.ip.адрес -p tcp -m multiport --dport 3389 -j DNAT --to-destination 192.168.0.1
-A POSTROUTING -s 192.168.0.1 -j SNAT --to-source наш.внешний.ip.адрес

-A FORWARD -d 192.168.0.1 -p tcp -m multiport --dport 3389 -j ACCEPT
-A FORWARD -s 192.168.0.1 -j ACCEPT

-A FORWARD -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
-A FORWARD -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

Но это не работает :-(. Подскажите в чём может быть дело? Нужно ли открывать этот порт (3389) в system-config-securitylevel?

BuGfiX
11-01-2009, 11:00
Что выдает iptables -L -n ?
Включен ли порт-форвардинг ? cat /proc/sys/net/ipv4/ip_forward

Gangabass
11-01-2009, 11:33
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 192.168.0.1 multiport dports 3389
ACCEPT all -- 192.168.0.1 0.0.0.0/0
REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x12/0x12 state NEW reject-with tcp-reset
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:143
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:110
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:10000
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:137
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:138
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:139
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:445
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2227
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2228
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Форвардинг включён.

BuGfiX
11-01-2009, 12:47
У Вас все пакеты из FORWARD уходят в RH-Firewall-1-INPUT, и до правил, разрешающих прохождение нужных Вам пакетов, дело не доходит. Уберите строку RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 .

Gangabass
13-01-2009, 03:48
У Вас все пакеты из FORWARD уходят в RH-Firewall-1-INPUT, и до правил, разрешающих прохождение нужных Вам пакетов, дело не доходит. Уберите строку RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 . »
Попробовал -- по прежнему не работает.

Gangabass
13-01-2009, 04:08
На самом деле всё немного сложнее (каюсь, что не посчитал это важным сразу же):

1. К Интернету подключён ADSL-модем. Он и получает внешний IP-адрес.
2. ADSL-модем выдаёт адрес одному из интерфейсов машины-шлюза (eth1, 192.168.1.4)
3. Второй интерфейс машины-шлюза имеет внутренний адрес (192.168.0.22).
4. Нужно организовать удалённый доступ к машине во внутренней сети с адресом 192.168.0.1 (при этом сейчас есть правила, позволяющие ей выходить в Интернет напрямую, в обход прокси сервера).

BuGfiX
13-01-2009, 17:38
Попробуйте сделать на ADSL модеме проброс порта 3389 на рутер, а уже с него на виндовую машину.
Да, и тут:
-A PREROUTING -d наш.внешний.ip.адрес -p tcp -m multiport --dport 3389 -j DNAT --to-destination 192.168.0.1
вместо "наш.внешний.ip.адрес" нужно писать именно адрес одного из интерфейсов, принадлежащих данной машине, а не какой-то другой.

Alan85
13-01-2009, 19:10
Добавь вот это... может поможет
-A OUTPUT -p tcp -m tcp -d 192.168.0.1 --dport 3389 -m state --state NEW -j ACCEPT

BuGfiX
13-01-2009, 20:30
Добавь вот это... может поможет
-A OUTPUT -p tcp -m tcp -d 192.168.0.1 --dport 3389 -m state --state NEW -j ACCEPT »
не поможет. С модема пакеты, адресованные локальной машине, до рутера не доходят, поскольку модем не обрабатывает их никаким образом, разве что дает атлуп )

Gangabass
14-01-2009, 15:25
Попробуйте сделать на ADSL модеме проброс порта 3389 на рутер, а уже с него на виндовую машину.
Да, и тут:
-A PREROUTING -d наш.внешний.ip.адрес -p tcp -m multiport --dport 3389 -j DNAT --to-destination 192.168.0.1
вместо "наш.внешний.ip.адрес" нужно писать именно адрес одного из интерфейсов, принадлежащих данной машине, а не какой-то другой. »
Заработало!!! Спасибо огромное.

Всё дело было не в модеме (он и так был правильно настроен), сработало ваше правило.

-A PREROUTING -d 192.168.1.4 -p tcp -m multiport --dport 3389 -j DNAT --to-destination 192.168.0.1

Вот так это должно выглядеть.

P. S. Отдельное спасибо всем за помощь.




© OSzone.net 2001-2012