LINUX.ORG.RU
ФорумAdmin

3proxy + домашний сервер с двумя 4G модемами

 , ,


0

2

Помогите, пожалуйста, разобраться в проблеме с соединением (не ходит трафик через интерфейс модема). Есть домашний сервер (debian 11) со статикой и настроенным доступом с любого устройства. Также есть 2 кастомных модема 16 категории (T77W968). Для начала хочу хотя бы один настроить, но в идеале сделать на 2.

Подключил модем, вставил симку, настроил в ModemManager APN и устройство в системе определилось и в интерфейсах появилось.

Вывод ModemManager:

  Status   |           unlock retries: sim-pin2 (3)
           |                    state: connected
           |              power state: on
           |              access tech: lte
           |           signal quality: 61% (cached)

Вывод ifconfig: основной интерфейс со статикой

enp13s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.39  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::aaa1:59ff:feea:fc95  prefixlen 64  scopeid 0x20<link>
        ether a8:a1:59:ea:fc:95  txqueuelen 1000  (Ethernet)
        RX packets 153067  bytes 102917775 (98.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 150795  bytes 76429499 (72.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

интерфейс модема

wwan0: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.34.251.4  netmask 255.255.255.248  broadcast 10.34.251.7
        ether 8a:45:d2:6d:a1:51  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 3856 (3.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Конфиг 3proxy

# Запускаем сервер от пользователя proxy3
# (возможно в вашей ОС uid и gid пользователя proxy3
# будут другими. Для их определения воспользуйтесь командой id proxy3)
setgid 115
setuid 110
#
# Пропишите правильные серверы имен посмотрев их
# на своем сервере в /etc/resolv.conf
nserver 10.205.171.68
nserver 10.205.171.77
#
# Оставьте размер кэша для запросов DNS по умолчанию
nscache 65536
#
# Равно как и таймауты
timeouts 1 5 30 60 180 1800 15 60
#
# Если несколько IP на одном сервере, указываем тот,
# через который будем ходить во внешний мир.
# Иначе эту строку игнорируем
#external 10.34.251.4
# Тоже самое, только указываем IP, который надо слушать
# Если проигнорировать, то прокси слушает все адреса на сервере
#internal <YOURSERVERIP>
#
# Указываем на расположение файла с пользователями и паролями
users $/etc/3proxy/.proxyauth
#
# укажите режим запуска как deamon
daemon
#
# путь к логам и формат лога, к имени лога будет добавляться дата создания
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"

rotate 30

dnspr
maxconn 64

#
# Включаем авторизацию по логинам и паролям
auth strong
#
# Конфигурация http(s) proxy
# Запускаем анонимный (-a) HTTP-proxy на порту (-p) 3128 и
# c отключенной NTLM-авторизацией (-n)
proxy -n -p3128 -a -i192.168.2.39 -e10.34.251.4

flush

route -n

root@guzlik:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.1     0.0.0.0         UG    0      0        0 enp13s0
0.0.0.0         10.34.251.5     0.0.0.0         UG    700    0        0 wwan0
10.34.251.0     0.0.0.0         255.255.255.248 U     700    0        0 wwan0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 pterodactyl0
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-7961dd8c1fc0
172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-5d884c1ae632
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 enp13s0

ip route show

root@guzlik:~# ip route show
default via 192.168.2.1 dev enp13s0 
default via 10.34.251.5 dev wwan0 proto static metric 700 
10.34.251.0/29 dev wwan0 proto kernel scope link src 10.34.251.4 metric 700 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.18.0.0/16 dev pterodactyl0 proto kernel scope link src 172.18.0.1 
172.19.0.0/16 dev br-7961dd8c1fc0 proto kernel scope link src 172.19.0.1 linkdown 
172.20.0.0/16 dev br-5d884c1ae632 proto kernel scope link src 172.20.0.1 
192.168.2.0/24 dev enp13s0 proto kernel scope link src 192.168.2.39

логи 3proxy

1727622911.730 DNSPR.53 00000 - 0.0.0.0:0 0.0.0.0:0 0 0 0 Accepting_connections_[11163/2772666112]
1727622911.730 PROXY.3128 00000 - 192.168.2.39:3128 10.34.251.4:0 0 0 0 Accepting_connections_[11163/2772596480]
1727622946.342 PROXY.3128 00004 - 192.168.2.1:65331 0.0.0.0:0 0 0 0 CONNECT_accounts.google.com:443_HTTP/1.1
1727622946.531 PROXY.3128 00004 - 192.168.2.1:65332 0.0.0.0:0 0 0 0 GET_http://ip-api.com/json_HTTP/1.1
1727622947.394 PROXY.3128 00004 - 192.168.2.1:65334 0.0.0.0:0 0 0 0 CONNECT_accounts.google.com:443_HTTP/1.1
1727622949.928 PROXY.3128 00004 - 192.168.2.1:65335 0.0.0.0:0 0 0 0 CONNECT_accounts.google.com:443_HTTP/1.1
1727622954.544 PROXY.3128 00013 admin 192.168.2.1:65333 208.95.112.1:80 0 0 0 GET_http://ip-api.com/json_HTTP/1.1
1727622956.296 PROXY.3128 00004 - 192.168.2.1:65338 0.0.0.0:0 0 0 0 CONNECT_optimizationguide-pa.googleapis.com:443_HTTP/1.1
1727622957.814 PROXY.3128 00004 - 192.168.2.1:65339 0.0.0.0:0 0 0 0 CONNECT_accounts.google.com:443_HTTP/1.1
1727622962.668 PROXY.3128 00013 admin 192.168.2.1:65336 208.95.112.1:80 0 0 0 GET_http://ip-api.com/favicon.ico_HTTP/1.1
1727622962.741 PROXY.3128 00013 admin 192.168.2.1:65337 2.19.221.101:443 0 0 0 CONNECT_store.steampowered.com:443_HTTP/1.1

Маршрут для проводного интернета: default via 192.168.2.1 table int

  • ip шлюза Правило для проводного интернета: from 192.168.2.39 table int
  • ip сетевой карты Маршрут для первого модема: default via 10.34.251.4 table m1
  • внутренний ip модема Правило для первого модема: from 10.34.251.4 lookup m1

P.S Если запускать прокси на обычном интерфейсе - все работает, трафик не идет только через модем

Советы отсюда -> два 3G-модема одновременно + 3proxy, как отроутить подскажите и отсюда -> 3proxy + Raspberry Pi 4 + LTE-модем = коннект есть, а страницы не открываются... уже пробовал.



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

создание мобильных проксей вообще тема сложная и нигде не документированная. А ты ещё выбрал сразу хардмод, используя LTE модули.

Ты сначала построй прокси на usb свистках, типа 3372 , а потом пробуй свои LTE чипы.

А ты даже не знаешь как раскидать потоки от ПО в юзерспейсе в разные сетевые интерфейсы... Куда тут строить прокси.

А на LTE чипах тебе ещё предстоит бороться с исчезанием инета и динамичным серым ip, в отличие от 3372 модемов.

Далее, допустим, ты таки все настроишь, что будет если выдернуть модем и воткнуть обратно? Твоя система должна его распознать и поднять весь фарш роутинга , ты готов писать хуки на эти события?

Говорю, тема сложная и для опытных инженеров. Документации в сети ноль.

Bers666 ★★★★★
()

Если у вас автоматом прописывается:

default via 10.34.251.5 dev wwan0 proto static metric 700

то зачем вы прописываете:

default via 10.34.251.4 table m1

Или адреса не различаете? Плюс, такую маршрутизацию сначала проверяют командами с сервера, типа ″ping -I ip-адрес″, ″wget --bind-address=ip-адрес″ или ″curl --interface ip-адрес″.

Ну и вобще, прописывать динамический адрес в конфиг 3proxy неправильно. Вам нужно прописать любой статический серый ip-адрес на статический интерфейс, чтобы он был всегда, этот адрес прописать в конфиг 3proxy и в ″ip rule″, потом сделать SNAT/MASQURADE для пакетов через интерфес модема. А в таблицу ″m1″ добавить ″unreachable″ маршрут с большой метрикой, чтобы когда модема нет, 3proxy получал ошибку установления соединения.

mky ★★★★★
()

Если задача завернуть весь трафик из 3proxy в модем, то можно создать правило маршрутизации по uid. Что-то вроде

ip rule add uidrange 110-110 lookup m1
ip route add default via 10.34.251.4 table m1
GLaDOS
()
Ответ на: комментарий от Bers666

по итогу как раз таки мой хардкор мод оказался самым оптимальным ввиду возможности выполнения AT команд. я разработал алгоритм, который на основе полученных по REST данным понимает какой модем словил теневой бан гугла и меняет у него вышку, дабы сменилась подсеть. а серый ip вообще никак не мешает, я все автоматизировал до такой степени, что я вообще не нужен для администрирования своих проксей кроме как для оплаты тарифов

infirmitive
() автор топика