LINUX.ORG.RU
ФорумAdmin

Проброс порта openwrt


0

1

Всем привет. Очень сильно туплю:(, нужна помощь.

1. Есть удаленная машина c openvpn сервером, которая поднимает tun, дает только одному пользователю статик айпи и на этом все, больше 1 пользователя не подключиться. Доступа к этой удаленной машине нет, конфиг опенвпн поменять на столько проблема что приходится пилить костыли. После соединения внпсерверу выдает айпишник вида 192.168.100.1, клиенту соответственно 192.168.100.2.

2. Надо прицепить к этому впн 2 машины. ( Даже проще, достаточно прокинуть для локальных компьютеров один порт с 192.168.100.1)

3. Есть роутер с OpenWrt. Для начала поднимаю на нем 2 впн сервера с подобными конфигами:

dev tun
port 1196
ifconfig 192.168.106.1 192.168.106.2
secret /etc/openvpn/1.key
comp-lzo
keepalive 10 12000

и

dev tun
port 1197
ifconfig 192.168.107.1 192.168.107.2
secret  /etc/openvpn/2.key
comp-lzo
keepalive 10 12000

Соединения поднимаются и начинаем танцы с бубном для прокидывания с одного tun на другой.

Мысль 1: создать бридж.

root@OpenWrt:/# brctl show
bridge name     bridge id               STP enabled     interfaces
br-lan          8000.f8d111c484e3       no              eth0
root@OpenWrt:/# brctl addif  br-lan tun0
brctl: bridge br-lan: Invalid argument
Похоже бридж на tun создать нельзя(гугл вроде подтверждает).

Мысль 2: пробросить порт.

Добавляю в /etc/config/firewall:

config zone
        option name tun0
        option network 'tun0'
        option input ACCEPT
        option output ACCEPT
        option forward REJECT
config zone
        option name tun1
        option network 'tun1'
        option input ACCEPT
        option output ACCEPT
        option forward REJECT
и пробрасываю порт
config redirect
       option src              tun1
       option src_ip   192.168.106.1
       option src_port         3389
       option dest_ip  192.168.107.2
       option dest_port        3389
       option proto    tcp
       option target DNAT
Т.е. впн клиент1(192.168.106.2) -> сервер:192.168.106.1:3389 forward впн клиент2:192.168.107.2:3389
#iptables -L
zone_tun1_forward (0 references)
target     prot opt source               destination
ACCEPT     tcp  --  192.168.106.1        192.168.107.2       tcp spt:3389 dpt:3389
forwarding_tun1  all  --  anywhere             anywhere
zone_tun1_REJECT  all  --  anywhere             anywhere
Очевидное смущение вызывает 0 references. Но как побороть не знаю.

В идеале бы завернуть порт на внутренний интерфейс LAN роутера....



Последнее исправление: brim (всего исправлений: 1)
Ответ на: комментарий от flant

Поднял бы...

Доступа к этой удаленной машине нет, конфиг опенвпн поменять на столько проблема что приходится пилить костыли.

brim
() автор топика
Ответ на: комментарий от ukr_unix_user

там что то типа

dev tun
port 1196
ifconfig 192.168.106.1 192.168.106.2
secret /etc/openvpn/1.key
comp-lzo
keepalive 10 12000
оно выдает маску на .252

Как прописать тогда маршрут? если я соединился к маршрутизатору 2 клиентами 192.168.106.2 и 192.168.107.2. соответственно на маршрутизаторе поднимаются

tun0 192.168.106.1/255.255.255.252
tun1 192.168.107.1/255.255.255.252
Как тогда роуить?

brim
() автор топика
Ответ на: комментарий от brim

чето я туплю по страшному по ходу:)) имелось виду маршрут на локальной машине типа(где впн клиент получает 192.168.106.2?):

route add 192.168.107.0 mask 255.255.255.0 192.168.106.1
оно прописано, с 2 сторон)

brim
() автор топика
Ответ на: комментарий от brim

какая разница какую маску он присваивает?!

если на сервере нет ограничений по ip на клиенте прописать роут на 192.168.100.1 и разрешить форвард на OpenWrt

ukr_unix_user ★★★★
()
Ответ на: комментарий от ukr_unix_user

Не думаю что так работать будет. 1. у меня на теством подключении не взлетело(ну тут я явно сижу туплю))) 2. на этом удаленном сервере 2 интерфейса. один со своим шлюзом. второй tun, который просто поднимается с 192.168.100.1/255.255.255.252 Собственно даже если до него и долетит с 192.168.100.2 с другой подсети, то отвечать он будет на свой первый и единственный шлюз. А маршруты я на нем прописать не могу. Или я не прав?

brim
() автор топика
Ответ на: комментарий от ukr_unix_user

Подробнее: я не закручиваю еще на это удаленный сервер, я кручу тестовое соединение. поднимаю на роутере опенвпн сервер

dev tun
port 1196
ifconfig 192.168.106.1 192.168.106.2
secret /etc/openvpn/1.key
comp-lzo
keepalive 10 12000

и

dev tun
port 1197
ifconfig 192.168.107.1 192.168.107.2
secret  /etc/openvpn/2.key
comp-lzo
keepalive 10 12000
и успешно к нему цепляюсь с 2 машин. (для простоты эксперимента обе клиентские машины слушают 3389 Далее 1. Прописал на клиентах соответственные роуты. прописал форвард config forwarding option src tun0 option dest tun1 Не работает. 2. Попытался пробросить порт (1 сообщение) не работает.

brim
() автор топика
Ответ на: комментарий от brim

Если у вас на роутере тестовый сервер, зачем вы пишите в /etc/config/firewall, а не прямо правила с помощью команды iptables? Зачем вам DNAT понадобился, если два интерфейса, у всех разные ip-адреса?

И главное, как «3.» связано с «2.»? Как тестовый openvpn-сервер поможет подключить к удалённой машине где нельзя править конфиги два vpn-клиента?

mky ★★★★★
()
Ответ на: комментарий от mky

Если у вас на роутере тестовый сервер, зачем вы пишите в /etc/config/firewall, а не прямо правила с помощью команды iptables?

На роутере в прямом смысле роутер tp-link, с OpenWrt на борту, пишу в конфиге, перезагружаю правила. Вроде ничего криминального.

Зачем вам DNAT понадобился, если два интерфейса, у всех разные ip-адреса?

Долбаюсь как могу)))

Как тестовый openvpn-сервер поможет подключить к удалённой машине где нельзя править конфиги два vpn-клиента?

Тут вроде все просто, роутер поднимает впн с удаленным сервером, а дальше или порт пробрасывает на другой tun|tap|lan(lan - лучшее решение) или все (вариант с бриджем не подходит). Занимаюсь тестово по простой причине, что занимать единственный впн канал не могу.

brim
() автор топика
Ответ на: комментарий от brim

пишу в конфиге, перезагружаю правила. Вроде ничего криминального.

Да, но в выводе iptables -L какая-то фигня. Покажите полный список правил (iptables -L -n -v или iptables-save). Скорее всего у вас просто закрыты пакеты в FORWARD.

mky ★★★★★
()
Ответ на: комментарий от mky

root@OpenWrt:/# iptables -L -n -v

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
57626 3953K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate RELATED,ESTABLISHED 
53704 3652K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    1    60 syn_flood  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 
 4197  347K input_rule  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
 4197  347K input      all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate RELATED,ESTABLISHED 
  754 43466 forwarding_rule  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
  754 43466 forward    all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    4   240 reject     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
59099 4734K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate RELATED,ESTABLISHED 
53704 3652K ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0           
    4   272 output_rule  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    4   272 output     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain forward (1 references)
 pkts bytes target     prot opt in     out     source               destination         
  750 43226 zone_lan_forward  all  --  br-lan *       0.0.0.0/0            0.0.0.0/0           
    0     0 zone_wan_forward  all  --  eth1   *       0.0.0.0/0            0.0.0.0/0           

Chain forwarding_lan (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain forwarding_rule (1 references)
 pkts bytes target     prot opt in     out     source               destination         
  754 43466 nat_reflection_fwd  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain forwarding_tun0 (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain forwarding_tun1 (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain forwarding_wan (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain input (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 4197  347K zone_lan   all  --  br-lan *       0.0.0.0/0            0.0.0.0/0           
    0     0 zone_wan   all  --  eth1   *       0.0.0.0/0            0.0.0.0/0           

Chain input_lan (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain input_rule (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain input_tun0 (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain input_tun1 (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain input_wan (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain nat_reflection_fwd (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain output (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    4   272 zone_tun0_ACCEPT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    4   272 zone_tun1_ACCEPT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    4   272 zone_lan_ACCEPT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 zone_wan_ACCEPT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain output_rule (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain reject (5 references)
 pkts bytes target     prot opt in     out     source               destination         
    9   432 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with tcp-reset 
    8   480 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable 

Chain syn_flood (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    1    60 RETURN     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 limit: avg 25/sec burst 50 
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           ]

brim
() автор топика
Ответ на: комментарий от brim

Chain zone_lan (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 4197  347K input_lan  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
 4197  347K zone_lan_ACCEPT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain zone_lan_ACCEPT (3 references)
 pkts bytes target     prot opt in     out     source               destination         
    4   272 ACCEPT     all  --  *      br-lan  0.0.0.0/0            0.0.0.0/0           
 4197  347K ACCEPT     all  --  br-lan *       0.0.0.0/0            0.0.0.0/0           

Chain zone_lan_DROP (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      br-lan  0.0.0.0/0            0.0.0.0/0           
    0     0 DROP       all  --  br-lan *       0.0.0.0/0            0.0.0.0/0           

Chain zone_lan_REJECT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 reject     all  --  *      br-lan  0.0.0.0/0            0.0.0.0/0           
   13   672 reject     all  --  br-lan *       0.0.0.0/0            0.0.0.0/0           

Chain zone_lan_forward (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       192.168.223.251      192.168.107.2       tcp spt:3389 dpt:3389 
  750 43226 zone_wan_ACCEPT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
   13   672 forwarding_lan  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
   13   672 zone_lan_REJECT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain zone_tun0 (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 input_tun0  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 zone_tun0_ACCEPT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain zone_tun0_ACCEPT (2 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain zone_tun0_DROP (0 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain zone_tun0_REJECT (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain zone_tun0_forward (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 zone_lan_ACCEPT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 forwarding_tun0  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 zone_tun0_REJECT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain zone_tun1 (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 input_tun1  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 zone_tun1_ACCEPT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain zone_tun1_ACCEPT (2 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain zone_tun1_DROP (0 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain zone_tun1_REJECT (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain zone_tun1_forward (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 forwarding_tun1  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 zone_tun1_REJECT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain zone_wan (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:68 
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 8 
    0     0 input_wan  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 zone_wan_REJECT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain zone_wan_ACCEPT (2 references)
 pkts bytes target     prot opt in     out     source               destination         
  737 42554 ACCEPT     all  --  *      eth1    0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  eth1   *       0.0.0.0/0            0.0.0.0/0           

Chain zone_wan_DROP (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      eth1    0.0.0.0/0            0.0.0.0/0           
    0     0 DROP       all  --  eth1   *       0.0.0.0/0            0.0.0.0/0           

Chain zone_wan_REJECT (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 reject     all  --  *      eth1    0.0.0.0/0            0.0.0.0/0           
    0     0 reject     all  --  eth1   *       0.0.0.0/0            0.0.0.0/0           

Chain zone_wan_forward (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 forwarding_wan  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 zone_wan_REJECT  all  --  *      *       0.0.0.0/0            0.0.0.0/0   
brim
() автор топика
Ответ на: комментарий от brim

/etc/config/firewall

config defaults                                        
        option syn_flood        1                      
        option input            ACCEPT                 
        option output           ACCEPT                 
        option forward          REJECT                 
# Uncomment this line to disable ipv6 rules            
#       option disable_ipv6     1                      
config zone                                            
        option name tun0                               
        option network 'tun0'                          
        option input ACCEPT                            
        option output ACCEPT                           
        option forward REJECT                          
                                                       
config zone                                            
        option name tun1                               
        option network 'tun1'                          
        option input ACCEPT                            
        option output ACCEPT                           
        option forward REJECT                          
                                                       
config zone                                            
        option name             lan                    
        option network          'lan'                  
        option input            ACCEPT                 
        option output           ACCEPT                 
        option forward          REJECT                 
                                                       
config zone                                            
        option name             wan                    
        option network          'wan'                  
        option input            REJECT                 
        option output           ACCEPT                 
        option forward          REJECT                 
        option masq             1                      
        option mtu_fix          1                      
                                                       
config forwarding                                      
        option src              lan                    
        option dest             wan                    
                                                       
config forwarding                                      
        option src      tun0                           
        option dest     lan                            

#это была попытка пробросить порт на лан
#192.168.223.251--лан роутера, 192.168.107.2 поднятый впн
config redirect                                        
       option src              lan                     
       option src_ip   192.168.223.251                 
#       option src_mac  00:11:22:33:44:55              
       option src_port         3389                    
#       option src_dport        3389                   
       option dest_ip  192.168.107.2                   
       option dest_port        3389                    
       option proto    tcp                             
       option target DNAT                              

Очень сильно извиняюсь за такую портянку. Из фаервольного конфига убрал все что касается dhcp и igmp.

brim
() автор топика
Ответ на: комментарий от brim

Вы как-то не правильно пишите DNAT. Правило:

 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  —  *      *       192.168.223.251      192.168.107.2       tcp spt:3389 dpt:3389 
означает пакеты с адреса 192.168.223.251:3389 на адрес 192.168.107.2:3389. Но 192.168.223.251 это адрес маршрутизатора с openwrt, а вам нужен доступ с копьютеров на компьютер за тунелем.

src_ip это тот адрес, от которого будет устанавливатся соединение. Вроде, вам нужно со всех компьютеров обеспечить попадание на 192.168.107.2:3389, когда комп обращается к 192.168.223.251:3389. Это опция «src_dip 192.168.223.251», а не src_ip. Можно и вобще не указывать не src_ip ни src_dip, достаточно «src lan». Наверное, и src_port не нужен, ведь доступ с любых компов с любых портов, а src_dport как раз нужно.

На 192.168.107.2 нужно запустить перехватчик пакетов (tcpdump или wireshark), чтобы видить, приходят ли вобще пакеты на порт 3389.

mky ★★★★★
()
Ответ на: комментарий от mky

mky спасибо вам большое, дело сдвинулось при использовании wireshark'a. (Вот тут я конечно, эпично не догадался). 1. openvpn на роутер поднимался из lan подсети. Варешарк показал что пакеты то на 192.168.107.2 приходят, но с той машины с которой цепляюсь. т.е. пакеты идут с 192.168.223.210 (моя машина), а не 192.168.107.1 2. поменял настройки роутера на: лан 192.168.222.251 wan 192.168.223.251

соответственно воткнул одну машину в лан, расшарил подключения на openwpn на wan. Подцепился openwpn. 3. дал маршрут на openvpn машине. 192.168.223.0 mask 255.255.255.0 192.168.107.1. И полетело.

Осталось сообразить как пробросить так порт (маскардингом?), чтобы не светил айпи подсети.

brim
() автор топика
Ответ на: комментарий от brim

чтобы не светил айпи подсети

Если я правильно понял, вам хочется чего-то такого:

config redirect
        option src              lan
        option dest             tun0
        option dst_ip           192.168.107.2
        option src_dip          192.168.107.1
        option target           SNAT

Но, может это не нужно в той конфигурации, когда маршрутизатор будет подключатся к удалённому серверу с закрытой конфигурацией, ведь для 192.168.100.2 всё работает (или уже есть SNAT на сервере или 192.168.100.2 получает нужные маршруты).

mky ★★★★★
()
Ответ на: комментарий от mky
config redirect
        option src              lan
        option dest             tun0
        option dst_ip           192.168.107.2
        option src_dip          192.168.107.1
        option target           SNAT

Почему то так не работает. Обращаюсь на 192.168.107.2, пакеты все равно приходят от моего айпи, а не от 192.168.107.1))

brim
() автор топика
Ответ на: комментарий от brim

Смотрите вывод «iptables -t nat -L -n -v», может там какое правило срабатывает раньше, чем это SNAT правило.

Да, и 192.168.107.1 это tun0 или tun1 ?

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.