Блог-шпаргалка

Картинка

IPIP туннель на PPPoE. Побеждаем сети

Категория -> network
Обновлено: 2025-11-12

Следующая инструкция, характеризует моё желание заняться чем-нибудь, когда скучно.

В общем в одной филиальной компании, корпоративной сети не было от слова совсем. Эникей, который там работал целых два года, использовал Radmin VPN (не реклама и упаси господь им пользоваться). Можно было конечно замоторить всё это на говно-микротах, но мы же не ищем лёгких путей! Тем более опыт в построении туннелей на линуксах у нас уже имеется!

Закупаем оборудование.

Мой выбор пал на Beelink Mini S + DEXP AT-UH002B. Ставим ОСь, настраиваем интерфейсы на systemd-networkd, вставляем шнурок в сетевую карточку и почему-то получаем хуй, а не интернет. Убедившись, что всё сделано правильно, набираем местного проавйдера и задаём вполне ожидаемый вопрос: - «Сопсна, а что за хуйня?» Девушка на том конце провода, мило отвечает: - «А Вы получаете услугу по PPPoE». Блять! Чуть не обронил я из своих культурных уст. Вооружившись логином и паролем для подключения, погнали колхозить!

Ставим pppoeconf. Запускаем его и что просят диалоговые окна — предоставляем.
Инет появился! настраиваем srcnat (если статика) или маскарад (если динамика или мозгов незватает как сделать правильно).

Создаём скрипт

LOCAL_IF = интерфейс ppp0
LOCAL_IP = локальный IP PPPoE
REMOTE_IP = Внешний IP другого конца туннеля

ip tunnel add ipip-office mode ipip local $LOCAL_IP remote $REMOTE_IP dev $LOCAL_IF ttl=64
ip addr add 192.168.200.1/31 dev ipip-office
ip link set ipip-office mtu 1472 # Стандарт MTU у IPIP = 1480. Тут мы уменьшаем размер из-за PPPoE, служебные данные которого занимают 8 байт от 1500
ip link set ipip-office up

Помещаем скрипт в /etc/ppp/ip-up.d/ipip-office
Делаем исполняемым
Пингуем другой конец и видим, что пошла возня, но мои восторженные и щенячьи визги были слышны на соседней улице не долго, потому как по туннелю мог пройти только пинг и больше ничего. Как оказалось необходимо было ещё познакомиться с MSS (MTU и MSS - разные вещи). В общем для полноты картины в цепочку форвард, таблицы mangle файерволла надо добавить следующее

table ip mangle {
        chain FORWARD {
                type filter hook forward priority mangle; policy accept;
                oifname "ppp0" tcp flags & (syn | rst) == syn tcp option maxseg size 1400-65495 counter tcp option maxseg size set rt mtu
        }

Только после этого трафик начинает ходить нормально. Размер MTU мой Linux маршрутизатор по умолчанию выставил в 1480

Осталось настроить FRR и туннель готов!