Удалённый доступ к Windows через iptables
Необходимо разрешить доступ к одной из 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?
|
Что выдает iptables -L -n ?
Включен ли порт-форвардинг ? cat /proc/sys/net/ipv4/ip_forward
|
Цитата:
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
|
Форвардинг включён.
|
У Вас все пакеты из FORWARD уходят в RH-Firewall-1-INPUT, и до правил, разрешающих прохождение нужных Вам пакетов, дело не доходит. Уберите строку RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 .
|
Цитата:
Цитата BuGfiX
У Вас все пакеты из FORWARD уходят в RH-Firewall-1-INPUT, и до правил, разрешающих прохождение нужных Вам пакетов, дело не доходит. Уберите строку RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 . »
|
Попробовал -- по прежнему не работает.
|
На самом деле всё немного сложнее (каюсь, что не посчитал это важным сразу же):
1. К Интернету подключён ADSL-модем. Он и получает внешний IP-адрес.
2. ADSL-модем выдаёт адрес одному из интерфейсов машины-шлюза (eth1, 192.168.1.4)
3. Второй интерфейс машины-шлюза имеет внутренний адрес (192.168.0.22).
4. Нужно организовать удалённый доступ к машине во внутренней сети с адресом 192.168.0.1 (при этом сейчас есть правила, позволяющие ей выходить в Интернет напрямую, в обход прокси сервера).
|
Попробуйте сделать на ADSL модеме проброс порта 3389 на рутер, а уже с него на виндовую машину.
Да, и тут:
-A PREROUTING -d наш.внешний.ip.адрес -p tcp -m multiport --dport 3389 -j DNAT --to-destination 192.168.0.1
вместо "наш.внешний.ip.адрес" нужно писать именно адрес одного из интерфейсов, принадлежащих данной машине, а не какой-то другой.
|
Добавь вот это... может поможет
-A OUTPUT -p tcp -m tcp -d 192.168.0.1 --dport 3389 -m state --state NEW -j ACCEPT
|
Цитата:
Цитата Alan85
Добавь вот это... может поможет
-A OUTPUT -p tcp -m tcp -d 192.168.0.1 --dport 3389 -m state --state NEW -j ACCEPT »
|
не поможет. С модема пакеты, адресованные локальной машине, до рутера не доходят, поскольку модем не обрабатывает их никаким образом, разве что дает атлуп )
|
Цитата:
Цитата BuGfiX
Попробуйте сделать на 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. Отдельное спасибо всем за помощь.
|
Время: 10:36.
© OSzone.net 2001-