LINUX.ORG.RU
решено ФорумAdmin

Проброс портов через VPN в локальную сеть

 , ,


0

2

Здравствуйте.
Не очень понимаю, как подступиться, новичок в *nix.

На даче стоит камера подключенная к роутеру, который выходит в интернет через сим-карту, для получения внешнего ip-адреса был куплен VPS и установлен Debian 9 и там поднят l2tp-сервер, к которому и подключается роутер huawei.

схема выглядит примерно так:
/internet/----> xxx.xxx.xxx.xxx | VPS Debian 9 | 10.152.2.1<----l2tp---->10.152.2.100 | router huawei | 10.168.8.1 <----LAN----> 10.168.8.20 | camera |



Как прописать проброс порта, например 222 на Debian VPS, чтобы при коннекте с интернета на внешний IP-адрес VPS сервера попадать на 222 порт Camera в локальной сети за роутером huawei? То есть, я чтобы я подключался к xxx.xxx.xxx.xxx:222 и попадал на 10.168.8.20:222
на роутере Huawei проброс портов сделан в соответствующей вкладке и работает.

L2TP сервер на VPS Debian я поднял, роутер Huawei к нему успешно подключается, вот так выглядят интерфейсы:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet ххх.ххх.ххх.ххх  netmask 255.255.255.0  broadcast yyy.yyy.yyy.yyy
        inet6 fa60:6d80:72:3cc1::1  prefixlen 64  scopeid 0x0<global>
        inet6 fc60::450:48ef:fbe1:8661  prefixlen 64  scopeid 0x20<link>
        ether 05:55:55:55:55:55  txqueuelen 1000  (Ethernet)
        RX packets 1499987  bytes 194642545 (185.6 MiB)
        RX errors 0  dropped 14075  overruns 0  frame 0
        TX packets 431797  bytes 117382087 (111.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 4  bytes 336 (336.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 336 (336.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1200
        inet 10.152.2.1  netmask 255.255.255.255  destination 10.152.2.100
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 10621  bytes 923327 (901.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10727  bytes 906912 (885.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


Как прописать проброс порта, например 222 на Debian VPS, чтобы при коннекте с интернета на внешний IP-адрес VPS сервера попадать на 222 порт Camera в локальной сети за роутером huawei?

Вам нужно организовать проброс порта на двух машинах - VPS и роутере. Делается это, как верно Выше заметили, с помощью iptables.

На VPS:

iptables -t nat -A PREROUTING -p tcp -i eth0 -d ххх.ххх.ххх.ххх --dport 222 -j DNAT --to 10.152.2.100:222

где xxx.xxx.xxx.xxx - Внешний IP-адрес вашего VPS.

На роутере:

iptables -t nat -A PREROUTING -p tcp -i ppp0 -d 10.12.2.100 --dport 222 -j DNAT --to 10.168.8.20:222

Ну и, разумеется, файрваллы на VPS и роутере должны пропускать соответствующие пакеты.

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

1. Не совсем верно в части второго правила. Никто не сказал что интерфейс будет ppp0. Да и ТС написал что «на роутере Huawei проброс портов сделан в соответствующей вкладке и работает»
2. Немножко докопаюсь. Двойной nat не обязателен, достаточно с VPS зарулить роут до 10.168.8.20 через тунель. Но учитывая формулировки в запросе ТС даже не стал об этом упоминать.

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

Никто не сказал что интерфейс будет ppp0

Из контекста вроде как следует, что туннель на роутере всего один ;).

Про проброс портов на роутере проглядел :(.

Двойной nat не обязателен, достаточно с VPS зарулить роут до 10.168.8.20 через тунель.

Да, согласен, этот вариант лучше, спасибо. Правда, тогда придется отказаться от «проброса портов в соответствующей вкладке» ;).

Serge10 ★★★★★ ()

а зачем пробрасывать порт ? Если порт на 10.152.2.100 доступен и настроен на хуйвее - тебе достачно прописать роуты так чтобы 10.152.2.100 был доступен во внутреней сети

Jopich1 ()
Ответ на: комментарий от Serge10

Из контекста вроде как следует, что туннель на роутере всего один

Весьма давно (причем настолько давно, что уже и не помню на чем это было и какой тунель поднимался), я столкнулся с проблемой когда при автоматическом назначении имени интерфейс мог оказаться ppp1. Возможно на текущий момент это уже дааавно не актуально, но как говориться «осадочек остался».
С тех пор привык всегда прописывать конкретный интерфейс. :)

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

я столкнулся с проблемой когда при автоматическом назначении имени интерфейс мог оказаться ppp1.

Интересно, никогда не слышал о таком. Спасибо за информацию.

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

Сейчас попытался вспомнить, вроде это было как-то связано с глючным падением туннеля (по ifconfig в системе ppp0 небыло) и последующим рестартом. А туннель был или pptp или pppoe

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

Спасибо большое, про то что двойной NAT не обязателен, я как то не задумывался, маршруты до внутренней сети я естественно прописал :)

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

Благодаря вам все работает и без двойного NATа!

geminis ()
Ответ на: комментарий от Serge10

Вам отдельное спасибо за пример с подробным описанием :) Все работает просто отлично!

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