3proxy не хочет авторизовываться (ubuntu)

AnrDaemon

Продвинутый новичок
Погугли?… Мне лень перепечатывать обе статьи.
 

Активист

Активист
Команда форума
Это не возможно ;) Есть конечно vlan'ы, vpn-ны и тунели. Но это не "два аплинка за натом".
 

Активист

Активист
Команда форума
Это настройка NAT по каналам (через маршрутизацию) имеено маршрутизатора (который имеет множество интерфесов как внутренних, так и внешних), но у автора один интерфейс 192.168.1.37, и все, больше у него ничего нет. И ставить на него проксю просто бессмысленно. Ставить на сервер маршрутизации да, но не на клиента локальной сети.
 

Активист

Активист
Команда форума
Кстати, зачем надо было настраивать DNAT внутрь локальный сети, да еще и маркировать по макам, если можно было просто воткнуть NGINX на каждый из шлюзов в качестве фронта?
 

AnrDaemon

Продвинутый новичок
nginx на МГТСовский DSL модем? Или на GPON?…

Я уже не говорю о том, что nginx не поможет мне отдавать UDP трафик (TS3 тот же).
 
Последнее редактирование:

Активист

Активист
Команда форума
Вообще там странность какая-то, таких проблем не возникает. Криво настроен роутинг и вообще.

1. У вас разные операторы связи, значит и IP-адреса роутеров надо было раскидывать в разные подсети класса C (т.е. один маршрутизатор 192.168.1.1, второй маршрутизатора 192.168.2.1), кроме того, они должны были быть воткнуты в какой-то сервер, который определяет балансировку.

2. Мне не понятно, почему на сервере балансировки два разных маршрута висят на одном eth0? Когда они должны быть разные.
Код:
ip route add default via 192.168.1.1 dev eth0 src 192.168.1.12 table vpn
ip route add default via 192.168.1.2 dev eth0 src 192.168.1.12 table adsl
3. Да и вообще в целом у вас два default маршрута (п.2), для одного интерфеса и src (а такого быть не должно), поэтому правило ip route add должно звучать без default (да и подсети нужно было указывать), например так:
Код:
ip route add $IESK_NET  dev $IESK_IF    src $IESK_IP    table $IESK_TBL
ip route add $RT_NET    dev $RT_IF        src $RT_IP      table $RT_TBL
4. Далее удаляется маршрут по умолчанию, и добавляется маршрут по умолчанию (не резервный), поскольку не известно, был ли заменен маршрут каким либо из PPPD демонов, да и не известно, кто дозвонился последний:
Код:
ip route delete default
ip route add default via $RT_GW
5. Нет ключевого правила from (который как раз и отвечает за правильное направление ответных tcp/ip пакетов), а использовалась зачем-то их маркировка.
Код:
ip rule add from $IESK_IP       table $IESK_TBL
ip rule add from $RT_IP         table $RT_TBL
6. Если эти оба модема были воткнуты в свитч, а в него же сам локальный маршрутизатор, то это было ошибкой.

Поэтому и возникали все эти проблемы.

Вот пример система балансировки с DNAT и NAT, двумя операторами связи, контролем по каналов с переключением (вечный bash скрипт). Сделаны мною для одного офиса бухгалтерии с переброской по DNAT соединений на локальный сервер 1С. Юзерам для внешних соединений даны два хоста: gw-rt.company.ru и gw-iesk.compmay.ru - если по одному не доступно , то юзеры заходят на RDP по другому каналу (из вне). При этом никаких танцев с бубном не было.

Код:
# Переменные
# cat /etc/fw/balance/vars.sh
#!/bin/sh

LOCAL_IF_1="eth0"
LOCAL_IF_2="eth3"

IESK_IF="ppp0"
IESK_IP="`ip addr show $IESK_IF | grep inet | awk '{print $2}'`"
IESK_GW="`netstat -rn | grep $IESK_IF | grep UH | awk '{print $1}'`"
IESK_NET="$IESK_GW/32"
IESK_WEIGHT="1"
IESK_TBL="iesk"

RT_IF="ppp1"
RT_IP="`ip addr show $RT_IF | grep inet | awk '{print $2}'`"
RT_GW="`netstat -rn | grep $RT_IF | grep UH | awk '{print $1}'`"
RT_NET="$RT_GW/32"
RT_WEIGHT="2"
RT_TBL="rt"
Код:
# Скрип автозагрузки ( post-up.d )
# cat /etc/fw/balance/routing.sh
#!/bin/sh
sleep 10
. /etc/fw/balance/vars.sh
echo "1" > /proc/sys/net/ipv4/ip_forward

ip route add $IESK_NET    dev $IESK_IF    src $IESK_IP    table $IESK_TBL
ip route add $RT_NET    dev $RT_IF        src $RT_IP    table $RT_TBL

ip route add default via $IESK_GW    table $IESK_TBL
ip route add default via $RT_GW        table $RT_TBL

ip route add $IESK_NET    dev $IESK_IF    src $IESK_IP
ip route add $RT_NET    dev $RT_IF        src $RT_IP

ip route delete default
#ip route add default via $IESK_GW
ip route add default via $RT_GW


ip rule add from $IESK_IP    table $IESK_TBL
ip rule add from $RT_IP        table $RT_TBL


ip route add 127.0.0.0/8        dev lo            table $RT_TBL
ip route add 192.168.0.0/24        dev eth0        table $RT_TBL
ip route add $IESK_NET            dev $IESK_IF        table $RT_TBL

ip route add 127.0.0.0/8        dev lo            table $IESK_TBL
ip route add 192.168.0.0/24        dev eth0        table $IESK_TBL
ip route add $RT_NET            dev $RT_IF        table $IESK_TBL
Код:
# Скрипт тестирования линков
# cat /etc/fw/balance/check.sh
#!/bin/sh

. /etc/fw/balance/vars.sh

OLDIF1=0
OLDIF2=0

. /etc/fw/balance/routing.sh

while true; do
    ping -c 3 -s 100 $IESK_GW -I $IESK_IF > /dev/null
    if [ $? -ne 0 ]; then
        echo "Failed IESK!"
        NEWIF1=0
    else
        NEWIF1=1
    fi

    ping -c 3 -s 100 $RT_GW -I $RT_IF > /dev/null
    if [ $? -ne 0 ]; then
        echo "Failed RT!"
        NEWIF2=0
    else
        NEWIF2=1
    fi

    if (( ($NEWIF1 != $OLDIF1) || ($NEWIF2 != $OLDIF2) )); then
    echo "Changing routes"

    if (( ($NEWIF1==1) && ($NEWIF2==1) )); then
        echo "Both channels"
        ip route delete default
        ip route add default scope global \
            nexthop via $IESK_GW dev $IESK_IF weight $IESK_WEIGHT \
            nexthop via $RT_GW dev $RT_IF weight $RT_WEIGHT

    elif (( ($NEWIF1==1) && ($NEWIF2==0) )); then
        echo "First channel"
        ip route delete default
        ip route add default via $IESK_GW dev $IESK_IF

    elif (( ($NEWIF1==0) && ($NEWIF2==1) )); then
        echo "Second channel"
        ip route delete default
        ip route add default via $RT_GW dev $RT_IF
    fi

    else
        echo "Not changed"
    fi

    OLDIF1=$NEWIF1
    OLDIF2=$NEWIF2
    sleep 3
done
 

AnrDaemon

Продвинутый новичок
Ну смешно же… Первая строчка первой статьи - мне не нужна никакая нафиг балансировка.
Единственная задача - правильно маршрутизировать входящий, и только входящий, трафик.
Всё работает. Уже… эн лет. Без всей этой вот непонятно зачем приведённой зубодробиловки.
(Да, можно было запилить VLAN'ы. Но мне было откровенно лень настолько усложнять сеть.)
 

Активист

Активист
Команда форума
Дк, тут балансировка так чисто, в довесок. Входящие соедениния (в т.ч. и POSTROUTE - работают по умолчанию верно). Тут ошибки в настройки ip route в целом (поэтому вам и пришлось кастылить через маркировку). Понятно, что работает и трогать не будете, но вот верный конфиг )))

PS: если не нужны исходящие соединения, то вообще можно не указывать default gw ))
 

AnrDaemon

Продвинутый новичок
Код:
$ ip r s table all type unicast
default via 192.168.1.1 dev mac0  table vpn_nln  src 192.168.1.12
default via 192.168.1.2 dev mac0  table adsl_mtu  src 192.168.1.12
default via 192.168.1.1 dev mac0  metric 100
192.168.1.0/27 dev mac0  proto kernel  scope link  src 192.168.1.12
192.168.19.0/28 dev mac1  proto kernel  scope link  src 192.168.19.1
Деф.гв. один.
 

Активист

Активист
Команда форума
Буквально "все что пришло от IP шлюза засунуть в соотвествующую таблицу с кешем маршрутизации"
ip rule add from $IESK_IP table $IESK_TBL
ip rule add from $RT_IP table $RT_TBL

Вот это отправляет через нужный gw трафик, что в таблице кеша
ip route add default via $IESK_GW table $IESK_TBL
ip route add default via $RT_GW table $RT_TBL

PS
ip route show cache
На роутере показывает текущую таблицу кеша маршрутов
 

AnrDaemon

Продвинутый новичок
Спасибо, высплюсь - попробую ещё раз осилить твою стенку.
 
Сверху