# Проброс rdp через iptables

## ntsite

Доброе время суток всем!

Столкнулся с такой проблемой. Необходимо сделать проброс rpd через iptable, но почему то не получается.

Вот информация:

Ядро: 2.6.34-gentoo-r6 (SMP)

eth0: 192.168.1.230/24, 10.10.10.250/24

eth1: 192.168.88.40/24

ppp0: 85.15.69.142

Ну и вот собственно правило в iptables

```
IPT=/sbin/iptables

EXT_IF=ppp0

EXT_IP=85.15.69.142

EXT_PORT=3389

INT_IP=192.168.1.2

INT_PORT=3389

$IPT -t nat -A PREROUTING -d $EXT_IP -i $EXT_IF -p tcp -m tcp --dport $EXT_PORT -j DNAT --to-destination $INT_IP:$INT_PORT
```

При попытки подключения с интернетом rpd-клиентом ответа нет... Попробовал ради интереса изменить порт на 80, все нормально работает, а вот rdp не хочет  :Sad: 

Подскажите пожалуйста с чем это может быть связанно?

--add

Пробовал с локалки, тоже самое, почему то не работает... Терминал работает, т.е. прямое подключение на конкретную машину. А вот через iptables нет.

----------

## ntsite

Решил попробовать вообще работает ли это правило. Изменил его:

```
IPT=/sbin/iptables 

EXT_IF=ppp0 

EXT_IP=85.15.69.142 

EXT_PORT=6900

INT_IP=85.15.69.142 

INT_PORT=80 

$IPT -t nat -A PREROUTING -d $EXT_IP -i $EXT_IF -p tcp -m tcp --dport $EXT_PORT -j DNAT --to-destination $INT_IP:$INT_PORT
```

На клиентской машине в браузе ввел ссылку 85.15.69.142:6900 - все работает... А вот rdp не хочет. Так же попробовал radmin, тоже самое, не работает  :Sad: 

----------

## ntsite

Ощущение, что русская ветка совсем загнулась  :Sad:  Еще год назад мало кто тут появлялся  :Sad:  А у меня был большой разрыв с работой unix систем, все уже забыл  :Sad: 

----------

## Bers-trayan

а у тебя правило для FORWARD есть для этого порта?

----------

## ntsite

Вот мои правила:

```
#!/bin/sh                                       

# Generic IPTables script, accept all by default

# path to your iptables executable              

IPT=/sbin/iptables                              

$IPT -F               

$IPT -t nat -F        

$IPT -P INPUT DROP    

$IPT -P OUTPUT ACCEPT 

$IPT -P FORWARD DROP  

export LAN=eth0       

export WAN=ppp0       

export Lo=lo          

ADM="10.10.10.240"

$IPT -I INPUT 1 -i ${LAN} -j ACCEPT

$IPT -I INPUT 1 -i lo -j ACCEPT    

$IPT -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

$IPT -A INPUT -p TCP --dport 80 -i ${WAN} -j ACCEPT 

$IPT -A INPUT -p TCP --dport 21 -i ${WAN} -j ACCEPT 

EXT_IF=ppp0        

EXT_IP=85.15.69.142

EXT_PORT=3389      

INT_IP=192.168.1.2 

INT_PORT=3389      

$IPT -A INPUT -p TCP --dport 3389 -i ${WAN} -j ACCEPT

$IPT -t nat -A PREROUTING --dst $EXT_IP -p tcp -m tcp --dport $EXT_PORT -j DNAT --to-destination $INT_IP:$INT_PORT

$IPT -A FORWARD -d $INT_IP -p tcp -m tcp --dport $INT_PORT -j ACCEPT

$IPT -t nat -A POSTROUTING -d $INT_IP -p tcp -m tcp --dport $INT_PORT -s 192.168.1.230/24 -j SNAT --to-source 192.168.1.230

$IPT -A INPUT -p UDP -i ${LAN} -d 0/0 --dport 3127 -j DROP 

$IPT -A INPUT -p UDP -i ${LAN} -d 0/0 --dport 123 -j ACCEPT

$IPT -A INPUT -p UDP -i ${WAN} -d 0/0 --dport 123 -j ACCEPT

$IPT -I FORWARD -i ${LAN} -d 10.10.10.0/255.255.255.0 -j DROP  

$IPT -A FORWARD -i ${LAN} -s 10.10.10.0/255.255.255.0 -j ACCEPT

$IPT -A FORWARD -i ${WAN} -d 10.10.10.0/255.255.255.0 -j ACCEPT

echo -n "FW: accept connection MASQUERADE internet ADM: "

for i in $ADM;                                           

do                                                       

 echo -n "$i "                                           

$IPT -t nat -A POSTROUTING -o ${WAN} -s $i -j MASQUERADE 

done                                                     

echo ""                                                  

echo -n "FW: accept connection squid internet ADM: "                            

for i in $ADM;                                                                  

do                                                                              

 echo -n "$i "                                                                  

    $IPT -t nat -A PREROUTING -p tcp --dport 80 -s $i -j REDIRECT --to-port 3128

done                                                                            

echo ""                                                                         

echo 1 > /proc/sys/net/ipv4/ip_forward                              

for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
```

В общем в таком раскладе не работает все равно... Тут я уже грешу на маршрутизацию... У меня такая ситуация, сейчас сетка используется 192.168.1.0/24, но я планирую перейти на 10.10.10.0/24. Потому в iptables - это вылезает.

Сейчас немного опишу что у меня имеется на данный момент.

Есть eth0 (смотрит в локалку) 192.168.1.230

eth1 (смотрит на ADSL модем в режиме бриджа) 192.168.88.40

И есть ppp0 85.15.69.142

Конфиги сети такие:

```
config_eth0=(       

  "192.168.1.230/24"

#  "10.10.10.250/24"

)                   

config_eth1=(              

  "192.168.88.40/24"       

)                          

                           

routes_eth1=(              

  "default gw 192.168.88.1"

config_ppp0=( "ppp" )             

  link_ppp0="eth1"                

  plugins_ppp0=( "pppoe" )        

  username_ppp0='логин'        

  password_ppp0='пароль'        

pppd_ppp0=(                       

            "debug"               

            "defaultroute"        

            "updetach"            

#           "mru 1492"            

#           "mtu 1400"            

            "lcp-echo-failure 10" 

            "lcp-echo-interval 60"

            ) 
```

При поднятии ppp0 выполняется такая команда

```
route add default ppp0                       

route add -net 192.168.0.0/16 gw 192.168.88.1
```

В итоге:

```
gate init.d # route -n                                                       

Kernel IP routing table                                                      

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

85.15.64.119    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0 

192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0 

192.168.88.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1 

192.168.0.0     192.168.88.1    255.255.0.0     UG    0      0        0 eth1 

127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo   

0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0 

0.0.0.0         192.168.88.1    0.0.0.0         UG    0      0        0 eth1 
```

Возможно в роутах зарыта собака...  :Sad: 

---add

Кстати, я перепутал в правилах iptables везде стоит ppp0

Вот еще информация

```
188.168.9.36:20950                          =       3       144 S---   ppp0

85.15.69.142:3389                           =       0         0 ----   ppp0

188.168.9.36:20950                          =       3       144 S---   eth0

192.168.1.3:3389                            =       0         0 ----   eth0
```

Делал прогой IPTraf

----------

## dmpogo

А кто у нас 192.168.88.1  ?

----------

## ntsite

192.168.88.1 - это шлюз пройвайдера. Т.е. у них есть вн сетка, вн адреса.. Я помню когда то у меня была проблема с маршрутизацией.

----------

## Bers-trayan

попробуй добавить правило разрешающее установившиеся соединения 

```
$IPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
```

у меня без этого правила тоже не пускал к rdp

----------

## smk

Вы уж извините, но правила по-умолчанию у Вас порт 3389 и закрывают. Цепочка INPUT

 *Quote:*   

> 
> 
> $IPT -P INPUT DROP  

 

Т.е. По аналогии надо добавить:

```
 $IPT -A INPUT -p TCP --dport 3389 -i ${WAN} -j ACCEPT 
```

----------

## ntsite

smk, у меня стоял ACCEPT на порт 3389.

В общем сейчас отпишу как все есть и приблизительные причины проблемы...

Начнем еще раз с того какие у меня интерфейсы, IP и само собой роуты, ну и на последок правила iptables.

eth0 - 192.168.1.230 (смотрит в локалку)

eth1 - 192.168.88.40 шлюз 192.168.88.1 (с такими настройками я вижу внутреннюю сеть провайдера - модем в режиме бриджа)

ppp0 - 85.15.69.142 (внешний IP, PPPoE)

Вот настройки /etc/conf.d/net

```
config_eth0=(       

  "192.168.1.230/24"

)                   

config_eth1=(              

  "192.168.88.40/24"       

)                          

                           

routes_eth1=(              

  "default gw 192.168.88.1"

)                        

config_ppp0=( "ppp" )

  link_ppp0="eth1"

  plugins_ppp0=( "pppoe" )

  username_ppp0='login'

  password_ppp0='password'

pppd_ppp0=(

            "debug"

            "defaultroute"

            "updetach"

            "lcp-echo-failure 10"

            "lcp-echo-interval 60"

            )
```

При поднятии ppp0 выполняется такая команда (необходимо, чтобы ходил в интернет через через ppp0 и проходили пакеты с локалки во внутреннюю сеть провайдера):

```
route add default ppp0                       

route add -net 192.168.0.0/16 gw 192.168.88.1
```

Вот что в результате # route -n

Kernel IP routing table                                                      

```
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

85.15.64.119    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0 

192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0 

192.168.88.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1 

192.168.0.0     192.168.88.1    255.255.0.0     UG    0      0        0 eth1 

127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo   

0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0 

0.0.0.0         192.168.88.1    0.0.0.0         UG    0      0        0 eth1 
```

Ну и вот собственно проблема. Пример приведу на машинке, к которой пытаюсь подключиться (rdp - сервер).

# ping ter

```
PING ter.rmk.lan (192.168.1.3) 56(84) bytes of data.          

64 bytes from 192.168.1.3: icmp_req=1 ttl=128 time=8.59 ms    

64 bytes from 192.168.1.3: icmp_req=2 ttl=128 time=0.399 ms   

64 bytes from 192.168.1.3: icmp_req=3 ttl=128 time=0.398 ms   

64 bytes from 192.168.1.3: icmp_req=4 ttl=128 time=0.384 ms   

^C                                                            

--- ter.rmk.lan ping statistics ---                           

4 packets transmitted, 4 received, 0% packet loss, time 3004ms

rtt min/avg/max/mdev = 0.384/2.442/8.590/3.549 ms
```

# traceroute ter

```
traceroute to ter (192.168.1.3), 30 hops max, 60 byte packets

 1  * * *                                                    

 2  * * *                                                    

 3  * * *                                                    

 4  * * *                                                    

 5  * * *                                                    

 6  * * *                                                    

 7  * * *                                                    

 8  * * *                                                    

 9  * * *                                                    

10  * * *                                                    

11  * * *                                                    

12  * * *                                                    

13  * * *                                                    

14  * * *                                                    

15  * * *                                                    

16  * * *                                                    

17  * * *                                                    

18  * * *                                                    

19  * * *                                                    

20  * * *

21  * * *

22  * * *

23  * * *

24  * * *

25  * * *

26  * * *

27  * * *

28  * * *

29  * * *

30  * * *
```

Отсюда уже видно, что что то не так у меня с маршрутизацией... В принципе изначально надо решить эту проблему, а потом уже смотреть на правила iptables.

----------

## smk

Тогда сразу бы сказали, что проблемы с маршрутизацией подсетей для ppp0. 

По теме - решал свои проблемы с подключением по ppp скриптом в /etc/ppp/if-up.d/60-routes.sh :

```

#!/bin/sh

# This script is run by pppd after the link is established.

# It executes all the scripts available in /etc/ppp/ip-up.d directory,

# with the following parameters:

# $1 = interface name (e.g. ppp0)

# $2 = tty device

# $3 = speed

# $4 = local IP address

# $5 = remote IP address

# $6 = ipparam (user specified parameter, see man pppd)

# pppd ip-up script for all-to-tunnel routing

## Direct tunnelled packets to the tunnel server

#route add -host <pptp_server> gw <gateway_ip> dev <default_nw_iface>

## direct all other packets into the tunnel

#route del default dev eth0

#ip route flush dev eth0

#route del default gw

#route add defaul dev $1

#route add default gw $4

route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.50.64.2 dev eth0

route add -net 80.70.225.96 netmask 255.255.255.224 gw 10.50.64.2 dev eth0

route del default

route add default gw $4 dev $1

#route del -net 0.0.0.0 netmask 0.0.0.0

route del 80.70.225.49 gw 0.0.0.0
```

Где у меня eth0 -интерфейс провайдера, подсеть 10.0.0.0/16 , шлюз 10.50.64.2 

ppp0 c динамическим IP , с локальной маршрутизацией для людей с этой же подсети. 

Последнее правило - удаляет лишний маршрут, образующийся просле подключения ppp, у Вас может его не быть. Попробуйте сообразить что нибуть в том же духе.

----------

## ntsite

Немного покрутил сегодня сервак, выявил такую ерунду.

Вот с такими правилами у меня все работает:

```
EXT_IF=eth0        

EXT_IP=10.10.10.250

EXT_PORT=3389      

INT_IP=111.111.111.111

INT_PORT=3389      

$IPT -t nat -A PREROUTING -d $EXT_IP -i $EXT_IF -p tcp -m tcp --dport $EXT_PORT -j DNAT --to-destination $INT_IP:$INT_PORT
```

Адрес 111.111.111.111 (внешний, на реальный rdp сервер), на него пробрасывает и соединение устанавливается.

А вот с моего внешнего 85.15.69.142 (ppp0) не хочет пробрасывать на внутренний IP адрес...

Подскажите куда смотреть, может я что то не верно сделал с правилами? Или же роуты не те.

----------

## K13

Два маршрута по умолчанию в одном контексте маршрутизации с одной метрикой не есть правильно...

----------

## ntsite

Роуты я подправил, сейчас вот так:

```
gate squid # route -n                                                        

Kernel IP routing table                                                      

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

85.15.64.119    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0 

10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0 

192.168.88.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1 

127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo   

0.0.0.0         85.15.64.119    0.0.0.0         UG    0      0        0 ppp0 
```

В общем проблема в том, что с вн сети я могу пробросить порт на инетовский rdp-сервер, а с внешней на мой внутренний не пропускает.

----------

## smk

Покажите теперь правила, при которых не работает проброс во внутреннюю сеть. 

# iptables -L -v 

PS: ppp0 у меня работал нестабильно и периодически рвался из-за того, что соединение устанавливается через ethernet с MTU 1500, и в результате нужно было фрагментировать пакеты на интерфейсе ppp0 следующей командой:

iptables -I FORWARD -o ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

----------

## ntsite

Вот

```
gate ~ #  iptables -L -v                                                       

Chain INPUT (policy ACCEPT 82415 packets, 111M bytes)                          

 pkts bytes target     prot opt in     out     source               destination

                                                                               

 1336  164K ACCEPT     all  --  lo     any     anywhere             anywhere   

                                                                               

40271 2757K ACCEPT     all  --  eth0   any     anywhere             anywhere   

                                                                               

 5505  530K ACCEPT     tcp  --  ppp0   any     anywhere             anywhere   

        tcp dpt:ssh                                                            

    0     0 ACCEPT     tcp  --  ppp0   any     anywhere             anywhere   

        tcp dpt:http                                                           

    0     0 DROP       tcp  --  ppp0   any     anywhere             anywhere   

        tcp dpt:ftp                                                            

    0     0 ACCEPT     tcp  --  ppp0   any     anywhere             anywhere   

        tcp dpt:ms-wbt-server                                                  

    0     0 DROP       udp  --  eth0   any     anywhere             anywhere   

        udp dpt:3127                                                           

    0     0 ACCEPT     udp  --  eth0   any     anywhere             anywhere   

        udp dpt:ntp                                                            

   36  2736 ACCEPT     udp  --  ppp0   any     anywhere             anywhere   

        udp dpt:ntp                                                             

                                                                                

Chain FORWARD (policy DROP 0 packets, 0 bytes)                                  

 pkts bytes target     prot opt in     out     source               destination 

                                                                                

    0     0 DROP       all  --  eth0   any     anywhere             10.10.10.0/2

4                                                                               

80129 5832K ACCEPT     all  --  eth0   any     10.10.10.0/24        anywhere    

                                                                                

 8418 9075K ACCEPT     all  --  ppp0   any     anywhere             10.10.10.0/2

4                                                                               

                                                                                

Chain OUTPUT (policy ACCEPT 142K packets, 115M bytes)                           

 pkts bytes target     prot opt in     out     source               destination 
```

И вот еще

```
gate ~ # iptables -L -n -v -t nat                                               

Chain PREROUTING (policy ACCEPT 93903 packets, 6109K bytes)                     

 pkts bytes target     prot opt in     out     source               destination 

                                                                                

    0     0 DNAT       tcp  --  ppp0   *       0.0.0.0/0            85.15.69.142

        tcp dpt:3389 to:10.10.10.241:3389                                       

   98  5096 REDIRECT   tcp  --  *      *       10.10.10.113         0.0.0.0/0   

        tcp dpt:80 redir ports 3128                                             

  629 32088 REDIRECT   tcp  --  *      *       10.10.10.240         0.0.0.0/0   

        tcp dpt:80 redir ports 3128                                             

                                                                                

Chain OUTPUT (policy ACCEPT 2838 packets, 205K bytes)                           

 pkts bytes target     prot opt in     out     source               destination 

                                                                                

                                                                                

Chain POSTROUTING (policy ACCEPT 2838 packets, 205K bytes)                      

 pkts bytes target     prot opt in     out     source               destination 

                                                                                

    7   398 MASQUERADE  all  --  *      ppp0    10.10.10.113         0.0.0.0/0  

                                                                                

75477 4528K MASQUERADE  all  --  *      ppp0    10.10.10.240         0.0.0.0/0
```

----------

## smk

Обратите внимание, пакеты в первое правило DNAT-а не доходят. 

Помоему Вы перемудрили с синтаксисом что-то. Правило у Вас выглядит так:

    0     0 DNAT       tcp  --  ppp0   *       0.0.0.0/0            85.15.69.142        tcp dpt:3389 to:10.10.10.241:3389    

У меня рабочее правило выглядит так (где eth1 провайдер со внешним айпи, а 172.16.0.2 моя внутрянняя подсеть): 

    3   144 DNAT       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:4000 to:172.16.0.2

----------

## ntsite

Это взято с рабочего конфига... Т.е. у человека тоже gentoo, и тоже самое правило. И я к нему могу подключиться. А вот ко мне нельзя. Конечно все правила я у него не видел, там их достаточно много, у меня скажем так минимум.

Этим же правилом я могу пробросить с вн на внешний rdp-сервер, но и им же с внешнего на внутренний не могу  :Sad: 

----add

Исправил на такое

```
$IPT -t nat -A PREROUTING -i $EXT_IF -p tcp -m tcp --dport $EXT_PORT -j DNAT --to-destination $INT_IP
```

Получилось:

```
Chain PREROUTING (policy ACCEPT 780 packets, 47683 bytes)                      

 pkts bytes target     prot opt in     out     source               destination

                                                                               

    1    48 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0  

        tcp dpt:3389 to:10.10.10.240
```

Все равно не подключается  :Sad:  Уже даже и не знаю на что смотреть... Ладно бы с вн сети не работало данное правило, так с внутренней все работает и пробрасывает.

----------

## K13

Предлагаю следующий порядок поиска проблемы, запустить снифер на внутреннем интерфейсе (eth0), пробовать подключаться, проверить:

- наличие пакетов идущих на машину 10.10.10.241

- наличие пакетов от машины 10.10.10.241

аналогично запустить снифер на интерфейсе ppp0 посмотреть что "бегает" через него, т.о. можно определить на каком участке возникает трабла

----------

## ntsite

Вот что показывает iptraf

```
188.168.9.36:10293                          =       3       144 S---   ppp0

85.15.69.142:3389                           =       0         0 ----   ppp0

188.168.9.36:10293                          =       3       144 S---   eth0

10.10.10.240:3389                           =       0         0 ----   eth0
```

Если честно, я не знаю каким снифером лучше смотреть что на каких интерфейсах происходит...  :Sad: 

----------

## K13

Судя по статистике, с машинки 188.168.9.36 пришло три пакета с syn флагом, отнатилось на правильный адрес и ушло через внутренний интерфейс на правильный адрес, а вот назад от машины 10.10.10.240 ничего не пришло...

Стоит проверить маршрутную информацию на этой машине для внешнего адреса 188.168.9.36.

----------

## ntsite

Т.е. на виндовой машине? Хм, внутри сети оно все замечательно работает... Тут я немного не понял  :Sad: 

----------

## K13

Приложите вывод route print с этой машины, возможно трафик блокируется установленным на виндовой машине firewall.

----------

## ntsite

К сожалению сейчас это сделать не смогу, т.к. у нас рабочий день кончился уже как 3 часа назад и я уже не на работе, а достучаться не могу... как раз сабж по этой проблеме  :Smile: 

Но могу сказать в свое оправдание, что с локалки без проблем цепляется и так же без проблем цепляется, когда модем воткнут в локальный сервер rdp и на нем поднято pppoe..

----------

## ntsite

Ну собственно я уже на работе, потому могу показать нужную информацию.

Подключаемся мы к машинке с внутренним адресом 10.10.10.240

Вот ее конфиг:

```
Ethernet adapter Подключение по локальной сети:

   DNS-суффикс подключения . . . . . : rmk.lan

   Описание. . . . . . . . . . . . . : Гигабитное сетевое подключение Intel(R) 8

2566DM-2

   Физический адрес. . . . . . . . . : 00-1C-C0-14-F1-01

   DHCP включен. . . . . . . . . . . : Да

   Автонастройка включена. . . . . . : Да

   IPv4-адрес. . . . . . . . . . . . : 10.10.10.240(Основной)

   Маска подсети . . . . . . . . . . : 255.255.255.0

   Аренда получена. . . . . . . . . . : 21 октября 2010 г. 9:10:54

   Срок аренды истекает. . . . . . . . . . : 23 октября 2010 г. 9:10:42

   Основной шлюз. . . . . . . . . : 10.10.10.250

   DHCP-сервер. . . . . . . . . . . : 10.10.10.250

   DNS-серверы. . . . . . . . . . . : 10.10.10.250

   Основной WINS-сервер. . . . . . . : 10.10.10.250

   NetBios через TCP/IP. . . . . . . . : Включен
```

У меня поднять DHCP сервер, и DNS... DNS отвечает:

gate ~ # host am                   

```
am.rmk.lan has address 10.10.10.240
```

Далее роуты:

```
IPv4 таблица маршрута

===========================================================================

Активные маршруты:

Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика

          0.0.0.0          0.0.0.0     10.10.10.250     10.10.10.240     20

       10.10.10.0    255.255.255.0         On-link      10.10.10.240    276

     10.10.10.240  255.255.255.255         On-link      10.10.10.240    276

     10.10.10.255  255.255.255.255         On-link      10.10.10.240    276

        127.0.0.0        255.0.0.0         On-link         127.0.0.1    306

        127.0.0.1  255.255.255.255         On-link         127.0.0.1    306

  127.255.255.255  255.255.255.255         On-link         127.0.0.1    306

        224.0.0.0        240.0.0.0         On-link         127.0.0.1    306

        224.0.0.0        240.0.0.0         On-link      10.10.10.240    276

  255.255.255.255  255.255.255.255         On-link         127.0.0.1    306

  255.255.255.255  255.255.255.255         On-link      10.10.10.240    276

===========================================================================

Постоянные маршруты:

  Отсутствует
```

Ну и вот, что говорит nmap на сервере:

```
gate ~ # nmap -v -A am

Starting Nmap 5.21 ( http://nmap.org ) at 2010-10-22 09:28 VLAST    

Initiating ARP Ping Scan at 09:28                                   

Scanning am (10.10.10.240) [1 port]                                 

Completed ARP Ping Scan at 09:28, 0.14s elapsed (1 total hosts)     

Initiating Parallel DNS resolution of 1 host. at 09:28              

Completed Parallel DNS resolution of 1 host. at 09:28, 0.02s elapsed

Initiating SYN Stealth Scan at 09:28                                

Scanning am (10.10.10.240) [1000 ports]                             

Discovered open port 80/tcp on 10.10.10.240  

Discovered open port 135/tcp on 10.10.10.240 

Discovered open port 3389/tcp on 10.10.10.240

Discovered open port 139/tcp on 10.10.10.240 

Discovered open port 445/tcp on 10.10.10.240 

Discovered open port 3306/tcp on 10.10.10.240
```

Стоит 7ка, дополнительных файерволов не ставил. Грубо говоря каспер. Ну он даже ни единого звука не издает при попытке подключения с внешки.

----------

## K13

Похоже с настройками порядок, остается установить снифер на Windows машину и посмотреть как себя чувствуют пакеты от соответствующих адресов и куда они уходят.

----------

## ntsite

Вот сделал наоборот, проброс с внутренней сети... все работает...

```
96.123.10.1:3389                            =      73     26536 -PA-   ppp0

85.15.69.142:59102                          =      66     26398 --A-   ppp0

10.10.10.250:3389                           =      67     26416 -PA-   eth0

10.10.10.240:59102                          =      66     26506 --A-   eth0
```

Внешний IP изменил, он не реальный. Но до этого стоял реальный и как видно все работает. С внешнего интерфейса по каким то причинам не работает  :Sad: 

Попробовал использовать Wireshark. Слушал на единственном интерфейсе с адресом 10.10.10.240 с параметром фильтра portmap.port == 3389 - ни единого пакета при подключении... Такое ощущение, что шлюз не форвардит пакет во внутреннюю сеть. Либо каким то правилом что то закрыто... Хотя с другой стороны, iptraf показывает, что уходит, но на клиентскую машину по этому порту ничего не приходит.

В общем я уже даже и не знаю в чем трабла может быть  :Sad: 

----------

## ntsite

В общем проверил я таким образом... Глупо, но эффективно!

В правилах iptables я поменял местами внутренний интерфейс с внешним во всех правилах. И сделал таким образом как бы интернет внутренней, а локальную - интернетом. При попытки соединения с rdp сервером с интернета, все заработало... Вернул обратно, с локалки работает а с инета нет.

В общем я так понял у меня не верно настроен iptables... Он не форвардит пакеты или же закрывает порты...

----------

## K13

Возможно, попробуйте временно убрать запрещающие правила для пакетов из локалки.

----------

## ntsite

Тут убирать то если честно нечего  :Smile:  Скорей добавлять правила нужно...

Вот сам скрипт:

```
#!/bin/sh

IPT=/sbin/iptables

$IPT -F        

$IPT -t nat -F 

$IPT -P INPUT ACCEPT  

$IPT -P OUTPUT ACCEPT 

$IPT -P FORWARD ACCEPT

export LAN=eth0

export WAN=ppp0

export Lo=lo   

ADM="10.10.10.240"

$IPT -I INPUT 1 -i ${LAN} -j ACCEPT                                  

$IPT -I INPUT 1 -i lo -j ACCEPT                                      

$IPT -A INPUT --match state --state ESTABLISHED,RELATED --jump ACCEPT

$IPT -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

$IPT -A INPUT -p TCP --dport 80 -i ${WAN} -j DROP   

$IPT -A INPUT -p TCP --dport 21 -i ${WAN} -j DROP   

EXT_IF=ppp0        

EXT_IP=85.15.69.142

EXT_PORT=3389      

INT_IP=10.10.10.240

INT_PORT=3389      

$IPT -A INPUT -p TCP --dport 3389 -i ${WAN} -j ACCEPT

$IPT -t nat -A PREROUTING -d $EXT_IP -i $EXT_IF -p tcp -m tcp --dport $EXT_PORT -j DNAT --to-destination $INT_IP:$INT_PORT

$IPT -A INPUT -p UDP -i ${LAN} -d 0/0 --dport 3127 -j DROP 

$IPT -A INPUT -p UDP -i ${LAN} -d 0/0 --dport 123 -j ACCEPT

$IPT -A INPUT -p UDP -i ${WAN} -d 0/0 --dport 123 -j ACCEPT

$IPT -I FORWARD -i ${LAN} -d 10.10.10.0/24 -j DROP  

$IPT -A FORWARD -i ${LAN} -s 10.10.10.0/24 -j ACCEPT

$IPT -A FORWARD -i ${WAN} -d 10.10.10.0/24 -j ACCEPT

echo -n "FW: accept connection MASQUERADE internet ADM: 

for i in $ADM;                                          

do                                                      

 echo -n "$i "                                          

$IPT -t nat -A POSTROUTING -o ${WAN} -s $i -j MASQUERADE

done                                                    

echo ""                                                 

echo -n "FW: accept connection squid internet ADM: "                            

for i in $ADM;                                                                  

do                                                                              

 echo -n "$i "                                                                  

    $IPT -t nat -A PREROUTING -p tcp --dport 80 -s $i -j REDIRECT --to-port 3128

done                                                                            

echo ""                                                                         

echo 1 > /proc/sys/net/ipv4/ip_forward                              

for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
```

Вот в принципе и все...

----------

## ntsite

В общем все странно  :Smile:  Получилось добиться нужного эффекта, но скажем так странным способом...

Предлагаю посмотреть мои правила для iptables... Я покажу ключевое правило от которого у меня все заработало. Быть может умные люди подскажут, что я делаю не так...

```
#!/bin/sh

IPT=/sbin/iptables

$IPT -F INPUT             

$IPT -F OUTPUT            

$IPT -F FORWARD           

$IPT -F POSTROUTING -t nat

$IPT -F PREROUTING -t nat 

$IPT -F OUTPUT -t nat     

$IPT -P INPUT ACCEPT 

$IPT -P OUTPUT ACCEPT

$IPT -P FORWARD DROP 

export LAN=eth0

export WAN=ppp0

export Lo=lo   

ADM="10.10.10.240"

$IPT -I INPUT 1 -i ${LAN} -j ACCEPT                                         

$IPT -I INPUT 1 -i lo -j ACCEPT                                             

$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT                

$IPT -A FORWARD -i ${LAN} -m state --state RELATED,ESTABLISHED -j ACCEPT    

$IPT -A FORWARD -i ${WAN} -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

$IPT -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT           

$IPT -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

$IPT -A INPUT -p TCP --dport 80 -i ${WAN} -j DROP   

$IPT -A INPUT -p TCP --dport 21 -i ${WAN} -j ACCEPT 

EXT_IF=ppp0                                          

EXT_IP=85.15.69.142                                  

EXT_PORT=3389                                        

INT_IP=10.10.10.241                                  

INT_PORT=3389                                        

$IPT -A INPUT -p TCP --dport 3389 -i ${WAN} -j ACCEPT

$IPT -t nat -A PREROUTING -d $EXT_IP -i $EXT_IF -p tcp -m tcp --dport $EXT_PORT -j DNAT --to-destination $INT_IP:$INT_PORT

$IPT -A INPUT -p UDP -i ${LAN} -d 0/0 --dport 3127 -j DROP 

$IPT -A INPUT -p UDP -i ${LAN} -d 0/0 --dport 123 -j ACCEPT

$IPT -A INPUT -p UDP -i ${WAN} -d 0/0 --dport 123 -j ACCEPT

$IPT -I FORWARD -i ${LAN} -d 10.10.10.0/24 -j DROP  

$IPT -A FORWARD -i ${LAN} -s 10.10.10.0/24 -j ACCEPT

$IPT -A FORWARD -i ${WAN} -d 10.10.10.0/24 -j ACCEPT

$IPT -I FORWARD -o ${WAN} -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

$IPT -t nat -A POSTROUTING -o ${LAN} -s 85.15.69.143 -j MASQUERADE

echo -n "FW: accept connection MASQUERADE internet ADM: "

for i in $ADM;                                          

do                                                      

 echo -n "$i "                                          

$IPT -t nat -A POSTROUTING -o ${WAN} -s $i -j MASQUERADE

done                                                    

echo ""                                                 

echo -n "FW: accept connection squid internet ADM: "                            

for i in $ADM;                                                                  

do                                                                              

 echo -n "$i "                                                                  

    $IPT -t nat -A PREROUTING -p tcp --dport 80 -s $i -j REDIRECT --to-port 3128

done                                                                            

echo ""                                                                         

echo 1 > /proc/sys/net/ipv4/ip_forward                              

for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
```

Заработало все собственно благодаря этому правилу

```
$IPT -t nat -A POSTROUTING -o ${LAN} -s 85.15.69.143 -j MASQUERADE
```

Странно это однако  :Smile:  В общем подскажите знающие люди, что я делаю не так...

----------

## K13

Возможно RDP порт доступен только для локальных адресов...

----------

## ntsite

Но это странно! У моего знакомого все работает без маскарада... А у меня нет...

----------

## K13

Я уже предлагал снифер поставить на windows машину и посмотреть куда деваются пакеты входящие/исходящие

----------

## fank

 *Quote:*   

> for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

 

убери эту строчку или внимательно разберись с маршрутизацией

----------

