В обычной сети маршрутизатор будет иметь страницу "Настройки 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 Server ==| <----> (6000) |== My box: 192.168.30.17 ==|

Я запускаю приложение на порту 6000 на моем компьютере (192.168.30.17, подключен к виртуальному концентратору: "VPN") и хочу получить доступ к приложению с помощью WAN_IP: 80.

Как я могу выполнить эту пересылку в SoftEther? Сервер Ubuntu, и я предпочитаю инструкции для vpncmd , если это возможно.

1 ответ1

0
  1. Создайте виртуальный интерфейс между хост-машиной и виртуальным концентратором:

    VPN_SERVER:$ sudo ./vpncmd localhost /server /cmd BridgeCreate VPN /DEVICE:ens2 /TAP:yes
    
  2. Убедитесь, что ваш новый виртуальный интерфейс (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
    
  3. Назначьте соответствующий IP для вашего интерфейса:

    VPN_SERVER:$ ifconfig tap_ens2 192.168.30.5 # any available IP
    
  4. Проверьте, что вы можете связаться с вашим 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>
    
  5. Создайте правила 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
    
  6. Проверьте это с вашим публичным IP:

    ANYWHERE:$ curl WAN_IP:2233
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .