Проблема с 3G модемом (SIM-2G/3G)

Доброго времени суток! столкнулся с проблемой получения IP-адреса на модеме 2G/3G (sim5300e) . С провайдером билайн у нас заключено соглашение, по которому нам выделена отдельная локальная сеть в их подсети. Соответственно за каждой симкартой закреплен свой IP-адрес. Но у билайна есть отличная от других операторов “фишка” - они используют PAP/CHAP аутентификацию с запросом логин/пароля от пользователя (логин и пароль у меня есть). При подключении на 4G модеме в момент подключения в логах появляется заветное “PAP-authentication sucsessed”. При подключениее же на 3G модули такой строчки не появляется. Соответственно в первом случае модем получает свой IP и все хорошо, во втором случае он получает свой IP, который потом меняется на какой то левый IP(динамический). Я ставлю на то, что у 4G модема в списках АТ-команд есть AT+CGAUTH=1,2,“login”,“password” - AT-команда по аутентификации (где вторая цифра - выбор типа аутентификации, но 4G модем нормально аутентифицируется при постановке любой цифры (1 - РАР, 2 - СНАР)). у 3G модема же такой команды нет и я пытаюсь заменить ее командой AT+CSTT=“APN”,“login”,“password”. Модем подхватывает нужный IP (проверка командой AT+CIFSR) но в момент дозвона до оператора этот IP меняется и ppp поднимается уже с другим IP.

в файлах pap-secrets и chap-secrets логин/пароли прописывал (начал с этого, но когда не помогло, стал пихаться глубже)

могу так же отправить прописаные файлы peers и chatscripts и логи с обоих модемов, если нужно

Добрый день. Да, выкладывайте файлы.
А зачем, собственно, записываль логин-пароль в сам модем? Если для 4G - это имеет смысл в режиме работы RNDIS, то на 3G соединение поднимает ppp
То есть - да, надо в /etc/ppp/chap-secrets
Посмотрите:

Дошли руки до очередной попытки настройки модема. скидываю peers и chatscripts
peers:


/dev/ttyACM0

115200

#disable hardware flow control
nocrtscts

# Assumes that your IP address is allocated dynamically by the ISP.
noipdefault
# Try to get the name server addresses from the ISP.
usepeerdns
# Use this connection as the default route.
defaultroute

# Makes pppd "dial again" when the connection is lost.
persist

# Do not ask the remote to authenticate.
noauth



persist
# no limit on failed connections
maxfail 0
lcp-echo-interval 10
lcp-echo-failure 3
holdoff 10

init "/usr/bin/wb-gsm restart_if_broken"

user Er1
connect "/usr/sbin/chat -v -f /etc/chatscripts/Er1"


chatscripts:

ABORT "BUSY"
ABORT "NO ANSWER"
ABORT "NO CARRIER"
ABORT "ERROR"
TIMEOUT 5
"" ATZ
OK AT+COPS=1,2,"25099"
OK at+gsmbusy=0
OK AT+CIPMUX=1
OK AT+CIPRXGET=1
OK AT+CIPQSEND=1
#OK AT+CGDCONT=1,"IP","APN"
#OK AT+CGAUTH=1,2,"login","password"
OK AT+CSTT="APN","login","password"
OK AT+CIICR
OK AT+CIFSR
172.16.32.2
ATD*99#
CONNECT

Вот при таких peers и chatscripts мне, наконец то удалось увидеть в логах такую картину:

Oct 12 09:36:49 wirenboard-AU4KR6PS chat[7929]: send (AT+CSTT=“APN”,“login”,“password”^M)
Oct 12 09:36:50 wirenboard-AU4KR6PS chat[7929]: expect (OK)
Oct 12 09:36:50 wirenboard-AU4KR6PS chat[7929]: ^M
Oct 12 09:36:50 wirenboard-AU4KR6PS chat[7929]: AT+CSTT=“APN”,“login”,“password”^M^M
Oct 12 09:36:50 wirenboard-AU4KR6PS chat[7929]: OK
Oct 12 09:36:50 wirenboard-AU4KR6PS chat[7929]: – got it
Oct 12 09:36:50 wirenboard-AU4KR6PS chat[7929]: send (AT+CIICR^M)
Oct 12 09:36:50 wirenboard-AU4KR6PS chat[7929]: expect (OK)
Oct 12 09:36:50 wirenboard-AU4KR6PS chat[7929]: ^M
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: AT+CIICR^M^M
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: OK
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: – got it
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: send (AT+CIFSR^M)
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: expect (172.16.32.2)
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: ^M
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: AT+CIFSR^M^M
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: 172.16.32.2
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: – got it
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: send (ATD99#^M)
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: expect (CONNECT)
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: ^M
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: ATD
99#^M^M
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: CONNECT
Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: – got it
Oct 12 09:36:51 wirenboard-AU4KR6PS pppd[7901]: Serial connection established.
Oct 12 09:36:51 wirenboard-AU4KR6PS pppd[7901]: Using interface ppp0
Oct 12 09:36:51 wirenboard-AU4KR6PS pppd[7901]: Connect: ppp0 <–> /dev/ttyACM0
Oct 12 09:36:52 wirenboard-AU4KR6PS pppd[7901]: kernel does not support PPP filtering
Oct 12 09:36:52 wirenboard-AU4KR6PS kernel: [ 729.035778] PPP BSD Compression module registered
Oct 12 09:36:52 wirenboard-AU4KR6PS kernel: [ 729.081135] PPP Deflate Compression module registered
Oct 12 09:36:55 wirenboard-AU4KR6PS pppd[7901]: not replacing default route to eth0 [192.168.50.1]
Oct 12 09:36:55 wirenboard-AU4KR6PS pppd[7901]: local IP address 100.109.63.190
Oct 12 09:36:55 wirenboard-AU4KR6PS pppd[7901]: remote IP address 100.109.63.190
Oct 12 09:36:55 wirenboard-AU4KR6PS pppd[7901]: primary DNS address 217.118.66.243
Oct 12 09:36:55 wirenboard-AU4KR6PS pppd[7901]: secondary DNS address 217.118.66.244
Oct 12 09:36:55 wirenboard-AU4KR6PS dnsmasq[879]: reading /etc/resolv.conf
Oct 12 09:36:55 wirenboard-AU4KR6PS dnsmasq[879]: using nameserver 217.118.66.243#53
Oct 12 09:36:55 wirenboard-AU4KR6PS dnsmasq[879]: using nameserver 217.118.66.244#53
Oct 12 09:36:56 wirenboard-AU4KR6PS ntpd[5254]: Listen normally on 7 ppp0 100.109.63.190:123

как мы здесь можем наблюдать, в какой-то момент он подхватывает необходимые нам

Oct 12 09:36:51 wirenboard-AU4KR6PS chat[7929]: 172.16.32.2

но затем при дозвоне, ppp0 поднимается уже с другим ip

ну а вот так вот картина выглядит на 4G модеме:

Тут как раз видно что ntpd начал слушать на 172.16.32.2

Тут у вас реально “APN”? потому как 4g использует gt2.msk

А зачем вот это всё:

OK AT+CIPMUX=1
OK AT+CIPRXGET=1
OK AT+CIPQSEND=1
#OK AT+CGDCONT=1,"IP","APN"
#OK AT+CGAUTH=1,2,"login","password"
OK AT+CSTT="APN","login","password"
OK AT+CIICR
OK AT+CIFSR

?

Насколько я понимаю, что здесь происходит: вы сначала говорите самому модему поднять IP-соединение с провайдеом, а потом около ATD/CONNECT ещё и линуксу на контроллере поднять его же. Зачем?
Chatscript у вас должен быть стандартный, в котором только CGDCONT.

нет там “gt2.msk” и логин/пароль, все верно
когда добавлял на сайт, заменил на стандартные АТ-команды как они прописаны в мануале модема

при прописании только CGDCONT он вообще не поднимает и уходит в циклическую перезагрузку ppp0 (в ppp0 прописано автоподключение)

а при такой картине я хоть на мнгновение вижу необходимый IP в логах

эта команда возвращает IP к которому подключен модем, соответственно она тут прописана только для этого, проверить, подхватывает ли он вообще необходимый IP

P.S команды вообще брал из логов IRZ модема, который с этой симкой поднимает сеть (внутри установлен SIM800) брал его команды и прописывал в WB

Но модем если используется ppp не поднимает соединение. Он просто транспорт.
То есть вы пытаетесь поднять ppp когда оно удже поднято модемом.

Хорошо, этот момент я понял. Тогда как сделать то же самое через ppp? как сделать так, чтоб он обращался к pap-secrets, или я чего то делаю не так?

Добрый день.
вообще - необходимо и достаточно вот так:
https://wirenboard.com/wiki/GSM/GPRS#.D0.91.D1.8B.D1.81.D1.82.D1.80.D1.8B.D0.B9_.D0.B2.D1.8B.D1.85.D0.BE.D0.B4_.D0.B2_.D0.B8.D0.BD.D1.82.D0.B5.D1.80.D0.BD.D0.B5.D1.82
То есть, создать в /etc/ppp/peers/ свой файл.
Пользователя (логин, если используется) указать в нем как user “myusername@realm”
ну и описать его в /etc/ppp/pap-secrets или /etc/ppp/chap-secrets в зависимости от механизма, чаще второй.
Ну и попробовать “вручную.”

Такой вариант был испробован самым первым, действовал все по инструкции, в /etc/ppp/peers создал файл, в нем прописал строчку user Er1
в pap-secrets прописал строчку "Er1" * "pass"
в chap-secrets строчка Er1 * pass *
чтоб он сам выбирал механизм аутентификации. Но при таком сценарии он в принципе не поднимает соединение

А что при этом пишет в логи?
И разве допускается звездочка в качестве имени сервера?

The * means that the password is to be used for ANY host you connect to.

Это прописано в pap-secrets, увидел, что немного не правильно прописал синтаксически, сейчас попробую исправить, по результатам отпишусь.
было: "Er1" * "pass" попробую * pass без логина и кавычек

# Secrets for authentication using CHAP
# client	server	secret			IP addresses
Er1 * pass *

gdata * gdata *
beeline * beeline *
mts * mts *

в chap-secrets прописал, как прописано у Вас для megafon, beeline, mts. Оставлю без изменений

прописал как описывал выше, в логах получаю вот такую картину:

Судя по “LCP terminated by peer” - отказывает оператор.
Запустите соединение вручную с “debug” или просто добавьте debug в конфиг.