Как перенаправить порт сервера с физического компьютера на VPN-клиент в SoftEther?
В обычной сети маршрутизатор будет иметь страницу "Настройки NAT", на которой мы будем перенаправлять некоторые внешние порты на устройства локальной сети. Например, если у вас есть сеть 192.168.1.0 и вы хотите выставить свой HTTP-сервер на компьютере 192.168.1.6:4000, вы должны войти в маршрутизатор (например, pfSense) и создать правило пересылки, которое практически выполняет: "WAN:80 -> 192.168.1.6:4000".
Мой текущий статус выглядит следующим образом:
(80) WAN_IP |== HOST MACHINE ==| <----> |== SoftEther (in Host Machine) ==| <---(internet)---> (6000) |== My box: 192.168.30.17 ==|
Я запускаю приложение на порту 6000 на своем компьютере (192.168.30.17, подключен к виртуальному концентратору: "VPN") и хочу получить доступ к приложению с помощью WAN_IP:80.
Как я могу выполнить эту пересылку в SoftEther? Сервер Ubuntu, и я предпочитаю инструкции для vpncmd
, если возможно.
1 ответ
Создайте виртуальный интерфейс между хост-машиной и виртуальным концентратором:
VPN_SERVER:$ sudo ./vpncmd localhost /server /cmd BridgeCreate VPN /DEVICE:ens2 /TAP:yes
Проверьте, что ваш новый виртуальный интерфейс (
tap_ens2
) создано:VPN_SERVER:$ ifconfig | grep Ethernet ens2 Link encap:Ethernet HWaddr de:1a:18:12:e0:01 tap_ens2 Link encap:Ethernet HWaddr 5e:b4:a9:d3:82:50
Назначьте соответствующий IP для вашего интерфейса:
VPN_SERVER:$ ifconfig tap_ens2 192.168.30.5 # any available IP
Проверьте, что вы можете связаться с вашим vpn-клиентом с хост-компьютера (при условии, что вы запустили веб-сервер на клиенте через порт 6000 с
python -m SimpleHTTPServer 6000
):VPN_SERVER:$ curl 192.168.30.17:6000 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html> <title>Directory listing for /</title> <body> <h2>Directory listing for /</h2> <hr> <ul> <li><a href="test.txt">test.txt</a> </ul> <hr> </body> </html>
Создайте
iptables
правила (запустите этот скрипт на VPN_SERVER с привилегиями root):#!/bin/bash brname=tap_ens2 # the interface connected to our private lan braddr=192.168.30.5 # interface IP assigned externally iface=ens2 # the interface connected to public internet # Run as root. [[ $(whoami) = "root" ]] || { sudo $0 "$@"; exit 0; } # Make sure that the IP forwarding is enabled echo 1 > /proc/sys/net/ipv4/ip_forward # Cleanup the iptables echo "Cleaning up NAT rules in iptables..." iptables -F -t nat echo "Adding forwarding rules" iptables -A FORWARD -i ${brname} -s ${braddr}/24 -m conntrack --ctstate NEW -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A POSTROUTING -t nat -j MASQUERADE fwd(){ # usage: fwd 1234 to 192.168.1.4:3000 local ext_port=$1 local internal=$3 # IP:Port iptables -t nat -A PREROUTING -i $iface -p tcp --dport $ext_port -j DNAT --to $internal } ## forward the desired ports fwd 2233 to 192.168.30.17:6000
Проверьте это с вашим публичным IP:
ANYWHERE:$ curl WAN_IP:2233