Проброс портов через туннель WireGuard

Тема в разделе "Вопросы и решение проблем", создана пользователем Harry, 21 апр 2025.

  1. Harry

    Harry New Member

    Регистрация:
    21 апр 2025
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Пол:
    Мужской
    Помогите настроить конфигурацию.
    Необходимо реализовать проброс портов через туннель WireGuard.

    Имеется домашняя сеть. В ней находится компьютер с IP-адресом 192.168.100.31. К этому компьютеру должен быть обеспечен доступ из внешнего мира по RDP (порт 3389). Выход в интернет осуществляется через локальный IP-адрес.

    Для решения задачи был арендован VPS, на котором развернута RouterOS. Туннель WireGuard работает исправно. Проброс портов к компьютеру в домашней сети реализован в два этапа:

    1. От интерфейса eth1 маршрутизатора Router_VPS до интерфейса WG_Home маршрутизатора Router_Home.
    2. От интерфейса WG_Home маршрутизатора Router_Home до компьютера Comp.

    Для отправки ответов от компьютера Comp через туннель WireGuard было создано правило SNAT (ответы через WG-интерфейс).

    Тем не менее, схема не функционирует. Предполагаю, что ответный трафик не направляется через туннель, и Router_Home пытается отправить его через шлюз по умолчанию.

    Config_VPS
    # 2025-04-21 14:15:47 by RouterOS 7.18.2
    # system id = dqpf9OiY8kO
    #
    /interface ethernet
    set [ find default-name=ether1 ] disable-running-check=no
    /interface wireguard
    add listen-port=51820 mtu=1400 name=WG_VPS
    /port
    set 0 name=serial0
    /interface wireguard peers
    add allowed-address=0.0.0.0/0 interface=WG_VPS name=peer_WG_VPS public-key=\
    "pc9mAy6qKIG53NC+I2L1dDjM57e7thCvzvxJEs/Skhk="
    /ip address
    add address=192.168.254.1/24 interface=WG_VPS network=192.168.254.0
    /ip dhcp-client
    add interface=ether1
    /ip dns
    set servers=8.8.8.8
    /ip firewall nat
    add action=dst-nat chain=dstnat comment=\
    "RDP-Forwarding to local Router through WireGuard" dst-address=\
    123.123.123.123 dst-port=3389 in-interface=ether1 protocol=tcp \
    to-addresses=192.168.254.2
    /ip route
    add comment="route to local LAN via WireGuard" disabled=no distance=1 \
    dst-address=192.168.100.0/24 gateway=192.168.254.2 routing-table=main \
    scope=30 suppress-hw-offload=no target-scope=10
    /ip service
    set telnet disabled=yes
    set ftp disabled=yes
    set www disabled=yes
    set api disabled=yes
    set api-ssl disabled=yes
    /system clock
    set time-zone-name=Europe/Berlin
    /system note
    set show-at-login=no
    /system ntp client
    set enabled=yes
    /system ntp client servers
    add address=time.nist.gov
    add address=time.windows.com
    /tool sniffer
    set file-name=vps_rdp_test
    /tool traffic-monitor
    add interface=WG_VPS name=tmon1
    add interface=WG_VPS name=tmon2 traffic=received

    Config_Home
    # 2025-04-21 14:15:38 by RouterOS 7.17.2
    # system id = pCAbm6a8i9M
    #
    /interface bridge
    add name=bridge1LAN
    /interface ethernet
    set [ find default-name=ether1 ] disable-running-check=no name=ether1WAN
    set [ find default-name=ether2 ] disable-running-check=no name=ether2LAN
    /interface wireguard
    add listen-port=21263 mtu=1400 name=WG_HOME
    /ip pool
    add name=dhcp_pool0 ranges=192.168.100.100-192.168.100.199
    add name=dhcp_pool1 ranges=192.168.100.101-192.168.100.200
    /ip dhcp-server
    add address-pool=dhcp_pool1 interface=bridge1LAN name=dhcp1
    /port
    set 0 name=serial0
    set 1 name=serial1
    /routing table
    add fib name=via-wg
    /interface bridge port
    add bridge=bridge1LAN interface=ether2LAN
    /interface wireguard peers
    add allowed-address=0.0.0.0/0 endpoint-address=123.123.123.123 endpoint-port=\
    51820 interface=WG_HOME name=peer_WG_HOME persistent-keepalive=25s \
    public-key="dzjxXEU1afPWfgjUr0dBa6IhDc0gKVQQ2IHTpj27tzA="
    /ip address
    add address=192.168.178.2/24 interface=ether1WAN network=192.168.178.0
    add address=192.168.100.1/24 interface=bridge1LAN network=192.168.100.0
    add address=192.168.254.2/24 interface=WG_HOME network=192.168.254.0
    /ip dhcp-client
    add disabled=yes interface=ether1WAN
    /ip dhcp-server network
    add address=192.168.100.0/24 gateway=192.168.100.1
    /ip dns
    set servers=192.168.178.1
    /ip firewall nat
    add action=src-nat chain=srcnat comment="All Local clients to Internet" \
    out-interface=ether1WAN to-addresses=192.168.178.2
    add action=dst-nat chain=dstnat comment=\
    "RDP-Forwarding WG_HOME to 192.168.100.31" dst-port=3389 in-interface=\
    WG_HOME protocol=tcp to-addresses=192.168.100.31
    add action=masquerade chain=srcnat comment="SNAT replies via WG" \
    out-interface=WG_HOME src-address=192.168.100.0/24
    /ip route
    add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.178.1 \
    routing-table=main scope=30 suppress-hw-offload=no target-scope=10
    /ip service
    set telnet disabled=yes
    set ftp disabled=yes
    set www disabled=yes
    set api disabled=yes
    set api-ssl disabled=yes
    /routing rule
    add action=lookup dst-address=123.123.123.123/32 src-address=192.168.100.31/32 \
    table=via-wg
    /system clock
    set time-zone-name=Europe/Berlin
    /system note
    set show-at-login=no
    /system ntp client
    set enabled=yes
    /system ntp client servers
    add address=time.nist.gov
    add address=time.windows.com
     

    Вложения:

    Последнее редактирование: 21 апр 2025
  2. karton

    karton New Member

    Регистрация:
    21 мар 2025
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Пол:
    Мужской
    Зачем делать цепочку из двух dst-nat если можно сразу перенаправить на узел в домашней сети?
    То есть на VPS написать такое правило NAT:
    /ip firewall nat
    add action=dst-nat chain=dstnat comment=\
    "RDP-Forwarding to local PC through WireGuard" dst-address=\
    109.205.178.36 dst-port=3389 in-interface=ether1 protocol=tcp \
    to-addresses=192.168.100.31

    Ну а чтобы ответы шли через WG то на этом же маршрутизаторе написать ещё и src-nat:
    /ip firewall nat
    add action=src-nat chain=srcnat \
    dst-address= 192.168.100.31 dst-port=3389 protocol=tcp \
    to-addresses=192.168.254.1
     
  3. Harry

    Harry New Member

    Регистрация:
    21 апр 2025
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Пол:
    Мужской
     
  4. Harry

    Harry New Member

    Регистрация:
    21 апр 2025
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Пол:
    Мужской
    Спасибо. Так я тоже пробовал. Не работает
     
  5. karton

    karton New Member

    Регистрация:
    21 мар 2025
    Сообщения:
    18
    Симпатии:
    0
    Баллы:
    1
    Пол:
    Мужской
    Так а в чём именно проблема не пытались отследить? Также на время тестов лучше отключить виндовый файрвол чтоб не мешался пока
     
  6. Harry

    Harry New Member

    Регистрация:
    21 апр 2025
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Пол:
    Мужской
    Спасибо, дружище за идею. Попробовал еще раз именно с твоими правилами - заработало. Теперь я понял. В чем мой косяк был.
    Я в этом правиле
    /ip firewall nat
    add action=src-nat chain=srcnat \
    dst-address= 192.168.100.31 dst-port=3389 protocol=tcp \
    to-addresses=192.168.254.1
    подставлял в качестве to-addresses= свой ether1, а ты предложил именно туннельный адрес. В общем все работает. Снимаю шляпу
     

Поделиться этой страницей

Share