Следующая инструкция, характеризует моё желание заняться чем-нибудь, когда скучно.
В общем в одной филиальной компании, корпоративной сети не было от слова совсем. Эникей, который там работал целых два года, использовал 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 и туннель готов!