LINUX.ORG.RU

Пустить порт с VPN в сеть

 ,


0

1

Есть Сервер в Италии К нему коннектится роутер, создаётся подключение PPTP (ppp0) с IP 10.0.0.2 Как сделать так чтобы вебморда роутера на 10.0.0.2:80 была видна по внешнему IP в италии? на МОЙ_ИП_ВДС:8888

Делаю так:

iptables -t nat -A PREROUTING -p tcp -d МОЙ_ИП_ВДС --dport 8888 -j DNAT --to-destination 10.0.0.2:80
Что делаю не так? Вот мой IPTABLES
# Generated by iptables-save v1.6.0 on Fri Feb  8 18:51:09 2019
*filter
:INPUT ACCEPT [9917:2211313]
:FORWARD ACCEPT [6534:2277660]
:OUTPUT ACCEPT [8596:1836047]
:f2b-ssh - [0:0]
:f2b-sshd - [0:0]
-A INPUT -p tcp -m tcp --dport 8888 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22 -j f2b-ssh
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -p tcp -m multiport --dports 22 -j f2b-ssh
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
-A FORWARD -i ppp* -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o ppp* -j ACCEPT
-A FORWARD -i lo -o ppp* -j ACCEPT
-A FORWARD -i ppp* -o lo -j ACCEPT

COMMIT
# Completed on Fri Feb  8 18:51:09 2019
# Generated by iptables-save v1.6.0 on Fri Feb  8 18:51:09 2019
*nat
:PREROUTING ACCEPT [893:116197]
:INPUT ACCEPT [546:90782]
:OUTPUT ACCEPT [26:1547]
:POSTROUTING ACCEPT [67:3484]
-A PREROUTING -d МОЙ_ИП_VDS -p tcp -m tcp --dport 8888 -j DNAT --to-destination 10.0.0.2:80
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Feb  8 18:51:09 2019

Сначала не в тему:
1. ppp* не даст желаемого результата. В ipables правильно ppp+
2. у вас фильтр и так разрешен

По теме, вопросы. У вас на 10.0.0.2:80 кто-то слушает? Если да то с «Сервер в Италии» 10.0.0.2:80 открывается?

anc ★★★★★ ()

Есть Сервер в Италии

Небось, ещё и в Ареццо? :)

Как сделать так чтобы вебморда роутера на 10.0.0.2:80 была видна по внешнему IP в италии? на МОЙ_ИП_ВДС:8888

Самый простой способ это haproxy или nginx tcp proxy. В данном случае, может, и самый правильный.

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

У вас на 10.0.0.2 defroute «Сервер в Италии» т.е. через pptp в инет гуляем?
Если да, то предполагаю проблема в fw на 10.0.0.2. Так как в ваших правилах все верно.
Если нет, то на «Сервер в Италии» добавить маскарадинг для пакетов улетающих на 10.0.0.2:80.

Зы Для диагностики можно запустить tcpdump на сервере и клиенте, и посмотреть куда пакетики долетают/не-долетают.

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

Нет, сервер в Италии используется как маршрутизатор для того чтобы роутер который коннектиться по vpn - 10.0.0.2:80 было видно по внешнему Ипу 8888 А как правильно прописать маскарадиег для 10.0.0.2:80 ?

bart212k ()
Ответ на: комментарий от turtle_bazon

Проверил тоже самое с компьютером, а не роутером без включенного firewall работает. Дело значит в IPTABLES роутера. вот оно (Сильно палками не кидайте это openwrt сам такое сочинил) https://yadi.sk/i/XK94IAWbIVnk7g

Видимо что-то мешает... Мне надо чтобы через pptp могли видеть вебморду на LAN

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

Нет, сервер в Италии используется как маршрутизатор для того чтобы роутер который коннектиться по vpn - 10.0.0.2:80 было видно по внешнему Ипу 8888
На VDS(сервер в Италии) инет на eth0. Роутер который конектиться по vpn тоже имеет свой инет..

Что бы не гадать правильно ли я вас понял, покажите с owrt выхлоп ip r s при включенном vpn (только реальные ip, в выхлопе замаскируйте)

А как правильно прописать маскарадиег для 10.0.0.2:80 ?

Для начала подойдет так (причесать можно позже):

iptables -A POSTROUTING -p tcp -d 10.0.0.2 --dport 80 -j MASQUERADE

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

c Роутера OPENWRT


root@SmartBox_WRT:~# ip r s
default via 192.168.8.1 dev eth2  proto static
10.0.0.1 dev pptp-pptp  proto kernel  scope link  src 10.0.0.2
XX.XX.X.XX(ВНЕШНИЙ ИП ВДС) via 192.168.8.1 dev eth2  proto static
192.168.8.0/24 dev eth2  proto kernel  scope link  src 192.168.8.100
192.168.10.0/24 dev br-lan  proto kernel  scope link  src 192.168.10.1

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

Но почему-то не работает. Пингую с другого клиента pptp с IP 10.0.0.3 пингую роутер IP 10.0.0.2 - пинг не идёт, включил TCPDUMP на роутере openwrt


20:05:25.640000 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 1, seq 11, length 40
20:05:30.650000 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 1, seq 12, length 40
20:05:35.640000 IP 10.0.0.3 > 10.0.0.2: ICMP echo request, id 1, seq 13, length 40

Т.е пакетики идут, но их кто-то убивает... А можно ли посмотреть кто? как понять, у tcpdump может быть есть такая функция?

Тоже самое пробую открыть с сервера порт :8888 вижу:

20:05:56.530000 IP 37-190-12-X.dynamic.spd-mgts.ru.53082 > 10.0.0.2.www: Flags [S], seq 490022601, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:05:56.530000 IP 37-190-12-X.dynamic.spd-mgts.ru.53083 > 10.0.0.2.www: Flags [S], seq 2024569301, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:05:56.780000 IP 37-190-12-X.dynamic.spd-mgts.ru.53085 > 10.0.0.2.www: Flags [S], seq 3928012124, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:06:02.540000 IP 37-190-12-X.dynamic.spd-mgts.ru.53082 > 10.0.0.2.www: Flags [S], seq 490022601, win 8192, options [mss 1460,nop,nop,sackOK], length 0
20:06:02.540000 IP 37-190-12-X.dynamic.spd-mgts.ru.53083 > 10.0.0.2.www: Flags [S], seq 2024569301, win 8192, options [mss 1460,nop,nop,sackOK], length 0

Тут явно проблема с настройками Firewall, openwrt... Но уже что только не пробывал не получается... Спасайте народ.

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

Ничего не понимаю. подключаю компьютер win7(без fw) по VPN к серверу в Италии, пробую открыть на сервере порт 8888 - всё работает! Без добавления дополнительного маскарада.

Делаю тоже самое с роутером OPENWRT - не работает. Добавил правило маскарада на Сервер в Италии и о чудо, заработало!!!! УРА! Спасибо Вам!

Но не понятно, как такое может быть, вот IPTABLES с сервера в Италии:

# Generated by iptables-save v1.6.0 on Wed Feb 13 07:59:32 2019
*filter
:INPUT ACCEPT [36:3231]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [39:3952]
:f2b-ssh - [0:0]
:f2b-sshd - [0:0]
-A INPUT -p tcp -m tcp --dport 8888 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22 -j f2b-ssh
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -p tcp -m multiport --dports 22 -j f2b-ssh
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
-A FORWARD -i ppp+ -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o ppp+ -j ACCEPT
-A FORWARD -i lo -o ppp+ -j ACCEPT
-A FORWARD -i ppp+ -o lo -j ACCEPT
-A f2b-ssh -s 109.121.152.21/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 51.77.220.166/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 45.55.243.106/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 200.116.182.117/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 79.7.217.174/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 51.38.49.138/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 68.183.133.21/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 165.227.25.45/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -j RETURN
-A f2b-ssh -j RETURN
-A f2b-sshd -s 109.121.152.21/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 51.77.220.166/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 45.55.243.106/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 200.116.182.117/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 79.7.217.174/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 51.38.49.138/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 68.183.133.21/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 165.227.25.45/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -j RETURN
-A f2b-sshd -j RETURN
COMMIT
# Completed on Wed Feb 13 07:59:32 2019
# Generated by iptables-save v1.6.0 on Wed Feb 13 07:59:32 2019
*nat
:PREROUTING ACCEPT [34:5710]
:INPUT ACCEPT [34:5710]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 80.XX.XX.XX/32 -p tcp -m tcp --dport 8888 -j DNAT --to-destination 10.0.0.2:80
-A PREROUTING -d 80.XX.XX.XX/32 -p tcp -m tcp --dport 8889 -j DNAT --to-destination 10.0.0.3:80
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -d 10.0.0.2/32 -p tcp -m tcp --dport 80 -j MASQUERADE
COMMIT
# Completed on Wed Feb 13 07:59:32 2019
Чудес же не бывает, хотелось бы разобраться

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

Ничего не понимаю. подключаю компьютер win7(без fw) по VPN к серверу в Италии, пробую открыть на сервере порт 8888 - всё работает! Без добавления дополнительного маскарада.

Вот этого не понял. Поясните плиз по подробнее, на каком сервере порт 8888, откуда куда заходите и т.д.
Хотя посмею предположить, при поднятии pptp на win7 у вас defgw через «Сервер в Италии» (емнип там галочка была) и тогда работать будет и без маскарада.

Как я понимаю с помощью этого правила, я захожу на сервер как бы как 10.0.0.1, поэтому и пускает видимо так.. А не как внешний IP адрес..

Да все верно.

Пояснения:
У вас на owrt defgw 192.168.8.1 (default via 192.168.8.1 dev eth2 proto static) При правиле dnat на «сервер в италии» "-A PREROUTING -d МОЙ_ИП_VDS -p tcp -m tcp --dport 8888 -j DNAT --to-destination 10.0.0.2:80" подменяется адрес:порт назначения с МОЙ_ИП_VDS:8888 на 10.0.0.2:80, но исходящий адрес остается тот же, например 1.1.1.1. 10.0.0.2 получает пакет с адреса 1.1.1.1 и отвечает, но вот ответ улетает через defgw owrt 192.168.8.1. Т.е. клиент 1.1.1.1 отправил пакет на МОЙ_ИП_VDS но вот ответ от него не получил.
Для того что бы все заработало простой способ использовать snat. Получилась следующая схема. 1.1.1.1 отправляет пакет на МОЙ_ИП_VDS:8888, правило dnat меняет адрес:порт назначения на 10.0.0.2:80, а правило MASQUERADE меняет исходящий адрес 1.1.1.1 на 10.0.0.1. Ответ от 10.0.0.2 уйжет в соответствии с таблицей маршрутиризации на 10.0.0.1 где произойдет обратное преобразование, и пакет улетит с МОЙ_ИП_VDS:8888 на 1.1.1.1.
Недостаток все соединения в логах на 10.0.0.2 будут от 10.0.0.1.
Если вам на 10.0.0.2 нужно знать реальные ip клиентов, то можно использовать pbr но эта схема сложнее.

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

Да Вы правы на win7 когда я включаю pptp, def gateway становится сервер в Италиии. Именно поэтому и работало! Теперь ясно. Спасибо ещё раз Вам, Вы очень помогли, и спасибо что объяснили. Пойду вики читать)

bart212k ()