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

Soft Ether, 2 внешних адреса и кривые руки

 , , ,


0

3

Итак, задачка - требуется поднять SFVPN таким образом чтоб на нём было 2 хаба с разными внешними IP адресами. Есть VPS под openvz со следующими параметрами:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/void 
    inet 127.0.0.2/32 scope host venet0
    inet XXX.XXX.XXX.XXX/32 brd XXX.XXX.XXX.XXX scope global venet0:0
    inet YYY.YYY.YYY.YYY/32 brd YYY.YYY.YYY.YYYscope global venet0:1
3: tap_soft2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
    link/ether 00:ac:75:5f:b7:b4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.1/24 brd 192.168.8.255 scope global tap_soft2
4: tap_soft: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
    link/ether 00:ac:ec:8a:ce:29 brd ff:ff:ff:ff:ff:ff
    inet 192.168.7.1/24 brd 192.168.7.255 scope global tap_soft

Есть dnsmasq:

# interface=tap_soft

dhcp-range=tap_soft,192.168.7.50,192.168.7.60,12h
dhcp-option=tap_soft,3,192.168.7.1

# interface=tap_soft2

dhcp-range=tap_soft2,192.168.8.50,192.168.8.60,12h
dhcp-option=tap_soft2,3,192.168.8.1

В правилах iptables сидит:

-A POSTROUTING -s 192.168.8.0/24 -j SNAT --to-source XXX.XXX.XXX.XXX
-A POSTROUTING -s 192.168.7.0/24 -j SNAT --to-source YYY.YYY.YYY.YYY

Сам sfvpn при запуске дергает ifconfig tap_soft 192.168.7.1 и tap_soft2 192.168.8.1.

Оба хаба настроены в Local Bridge на интерфейсы tap_soft и tap_soft2 соответственно.

А теперь объясните где я накосячил, как это починить и почему я всё ещё не делаю бэкапы. Или расскажите как реализовать эту херню на openvpn.

☆☆

Последнее исправление: StReLoK (всего исправлений: 1)

Так что при подключении происходит? И что еще в правилах есть(по умолчанию все разрешено)? Форвардинг включен? И в dnsmasq есть опция DHCPDARGS .

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

Подключиться клиентом к серверу получается, даже внутренний адрес получает. Но вот пинги не идут вообще никуда, хотя адреса как бы и резолвятся. DNS у клиентов указаны ручками, хотя надо бы приделать их к dnsmasq.

*raw
:PREROUTING ACCEPT [85437:123812808]
:OUTPUT ACCEPT [23147:2348618]

*nat
:PREROUTING ACCEPT [4:210]
:POSTROUTING ACCEPT [4:233]
:OUTPUT ACCEPT [4:233]
-A POSTROUTING -s 192.168.7.0/24 -j SNAT --to-source YYY.YYY.YYY.YYY
-A POSTROUTING -s 192.168.8.0/24 -j SNAT --to-source XXX.XXX.XXX.XXX

*mangle
:PREROUTING ACCEPT [85437:123812808]
:INPUT ACCEPT [85436:123812768]
:FORWARD ACCEPT [1:40]
:OUTPUT ACCEPT [23147:2348618]
:POSTROUTING ACCEPT [23148:2348658]

*filter
:INPUT ACCEPT [85436:123812768]
:FORWARD ACCEPT [1:40]
:OUTPUT ACCEPT [23147:2348618]
StReLoK ☆☆
() автор топика
Ответ на: комментарий от StReLoK

Но вот пинги не идут вообще никуда, хотя адреса как бы и резолвятся. DNS у клиентов указаны ручками, хотя надо бы приделать их к dnsmasq.

Может резолвятся не через туннель. посмотри вот тут как конфиг dnsmasq оформлен: http://www.prianichnikov.info/2015/06/softether-vpn-debian.html

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

А кстати кто у тебя клиенты машины под linux/win? Помнится мне, тоже трафик не шел если в качестве клиента был linux. А на винде все работало. Так и не смог это победить. Правда серверная часть была не в моем распорежении. Не получилось тогда качественно проанализировать.

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

Если в качестве клиента linux. То надо после подключения руками роутинг ковырнуть оно само не умеет маршут задавать. Или может уже умеет... давно не сталкивался. И еще форвардинг вкл. на клиенте. http://askubuntu.com/questions/666484/setting-up-softether-vpn-client

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

Он проверял под Linux. До веселья с двумя айпи у него все работало. И у меня тоже...

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

И то и то. А для подключения с линукса я свой костыль накорябал:

#!/bin/bash

DEFGATEWAY=$(ip route show default | awk '/default/ {print $3}')

# Server IP
REMOTEIP=                

# Server ip in subnet
VPNSERVLOCAL=

# Interface
DEFIF=enp3s0

# VPN profile
PROFILE=

# VPN interface 
VPNIF=vpn_se

function start(){
                sudo vpnclient start > /dev/null
                sudo vpncmd localhost /client /cmd accountconnect $PROFILE > /dev/null
                sudo dhclient $VPNIF > /dev/null

                sudo ip route add $REMOTEIP via $DEFGATEWAY dev $DEFIF proto static
                sudo ip route del default
                sudo ip route add default via $VPNSERVLOCAL dev $VPNIF
                echo "Connected"
                }

function stop() {
                sudo vpncmd localhost /client /cmd accountdisconnect $PROFILE > /dev/null
                sudo ip route del default
                sudo ip route add default via $DEFGATEWAY
                sudo ip addr flush dev $VPNIF > /dev/null
                sudo vpnclient stop > /dev/null
                sudo dhclient $DEFIF > /dev/null
                echo "Disconnected"
                }

case $1 in
        'start')
                start
        ;;
        'stop')
                stop
        ;;
        *)
                echo "start | stop"
esac

Но resolv.conf надо защитить от изменений, а то dhclient его пожуёт.

StReLoK ☆☆
() автор топика
Ответ на: комментарий от ving2

Не стал даже тыкать, последний раз тестил это давно и там скорость серьёзно так падала, процентов 50% или около того. Но если мегабитов изначально много может и больше в процентах получится. С моими 100 мбит это очень фиговый вариант. Про косяк - правила iptables просто не работали, хотя после того как очистил все и забил по новой они полетели. Мистика какая-то.

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