Задачка у меня тут возникла. Давно уже, тащемта, но в этот раз вообще приперло. Итак, есть удаленный объект. Там 3G. Надо туда лазить. Вроде, типично. Но есть и некоторая конкретика. Оборудование давно куплено, менять низзя, оно теоретически работать должно, но что-то как-то не особо.
Там - Mikrotik RB751G-2Hd, в который воткнут "свисток" от МТС. PPP поднимается нормально. Но, первый факап внезапен. Иногда свисток виснет. А именно этот микротик не умеет дергать питание USB. Более того, оно там есть всегда, даже при перезагрузке. Так я пришел к печальному заключению - никакие программно-скриптовые фишки решить проблему не помогут. Да, вот еще что - попытки все это сделать производились четыре года назад. С тех пор я набил немного полезной экспы, и поэтому с нового захода решил проблему люто, бешено. Было разработано устройство под названием "USB щелкун".
Все выложено на гитхаб. Плату не разводил, сляпал на макетке. Короче, совершенно вульгарное решение. Ультрабомжовый микроконтроллер ATtiny13A решает задачу, для которой он все равно оверкилл. Зато быстро и сердито. На плате - два USB A разъема (мама и папа), она вставляется между микротиком и свистком. К тиньке подключен мосфет, через который собственно и происходит вкл/выкл питания свистка.
Но мы идем дальше. Там - серый IP. Платить упоротым опсосам за белый - не канифоль, сооружаем туннель. Тут у меня эрзац-сервер-шлюз под управлением pfSense (такая "узкая" фряха для шлюзов) с белым IP. Туннель тупо L2TP, без изысков, супер-секьюрности не требуется. Он поднимается "на раз-два", по докам для pfSense и микротика соответственно. Надо только поставить метрики (у микротика это route distance) - для дефолтного маршрута ppp mts больше число (ниже приоритет), чем для l2tp, чтобы трафик заворачивался в туннель.
Тут я получаю микротик с локальным адресом, и что хочу, то и ворочу. А на решении следующей задачи я запоролся. Она проста и незатейлива - надо прокинуть один порт таким образом: внешний мир - pfSense - микротик - железка за микротиком. Несколько дней я не мог понять, ГДЕ оно не работает. До последнего грешил на pfSense, а оказалось все куда банальнее. Пакеты дропались на микротике, потому что я когда настраивал правило доступа к микротику из туннеля (input через l2tp), за каким-то хреном прописал в Src. Address локальную сеть. А когда pfSense мутит свое натовое колдунство, для микротика в итоге ситуация выглядит так, что в него через интерфейс l2tp лезут из внешнего мира, т.е. файрволл микротика видит реальный Src. Address удаленного клиента и дропает. Да, убрал Src. Address из правила, и все бодро забегало.