LINUX.ORG.RU
ФорумAdmin

Умный маскарадинг

 ,


1

1

На рабочем месте недоступен проводной интернет, поэтому используется 4G-модем.

Есть 4 рабочих места. Во времена Windows XP, каждый из компьютеров был подключен по Ethernet к 5-типортовому свичу. Свич, как известно, не выдаёт IP-адреса, поэтому на каждый компьютер я вбил вручную 192.168.1.[1-4] вот здесь. Шлюз оставался пустым, так как не стояло задачи раздавать интернет, а только локальная файлообменная сеть.

К компьютеру 192.168.1.1 подключен тот самый 4G-модем. На компьютере 192.168.1.2 сейчас стоит полностью обновлённая Windows 7, и поэтому я туда вбил шлюз 192.168.1.1. На остальных двух компах система не обновлена, так что там шлюз по-прежнему не указан.

Я попытался поменять свич на роутер. Возникли проблемы с тем самым компом, в который вставлен модем. Почему-то шлюз роутера (который ведёт в никуда, так как Ethernet-кабель не вставлен в соответствующий разъём) становился главнее шлюза модема. Соответственно, не работал интернет. Попытался починить - интернет заработал, но компьютер «выпал» из локальной сети. В общем, я вернул обратно свитч.

Я вот думаю. Купить роутер с USB-портом, и вставить туда 4G-модем. А в настройках роутера указать, чтобы интернет раздавался только на два первых компа.

Подключил к последнему, не занятому порту свича, Raspberry Pi (он у меня на работе записывает видео с веб-камеры при помощи motioneye). На нём поднял dnsmasq с таким конфигом:

interface=eth0
dhcp-range=eth0,192.168.1.2,192.168.1.8,72h

IP-адреса прекрасно раздаются. Наверное, это глупо - делать роутер из RPi, учитывая, что больше 30 мегабит из него не выжать (у меня 3 модель, в 4 мдели уже пофиксили). Но ведь файловый обмен идёт не через RPi, а непосредственно между компами - RPi раздаёт им только адреса.

Теперь я хочу раздать интернет. Причём по-умному. Вот как я это делаю сейчас:

sudo sysctl net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Интернет из ppp0 раздаётся вообще во все сетевые интерфейсы: eth0, wlan0, и во все IP-адреса на этих интерфейсах. А мне надо, чтобы 192.168.1.4 и 192.168.1.5 не получали интернет.

P. S. Ещё было бы здорово какую-нибудь веб-морду, как на настоящем роутере. Но это уже из области фантастики - мне было бы достаточно настроить «умный маскарадинг», и ничего больше. В веб-морде я бы хотел отрубать и давать интернет, ставя галочки. Может быть самба-шару можно было бы конфигурировать там же, ну и motioneye.

что больше 30 мегабит из него не выжать

Проверил только что на 5 потоках с помощью iperf3. Выдает 300 мегабит в обе стороны.

Radjah ★★★★★ ()

А мне надо, чтобы 192.168.1.4 и 192.168.1.5 не получали интернет.

Заблокируй через filter FORWARD

Kolins ()

P. S. Ещё было бы здорово какую-нибудь веб-морду, как на настоящем роутере.

https://github.com/billz/raspap-webgui

Чел делал, ещё зумер наколхозил к нему (чтобы пикал когда инет падает), часы, датчики и кнопки. Можно зумер и кнопки оставить.

fehhner ★★★★★ ()
Ответ на: комментарий от Kolins

Заблокируй через filter FORWARD

Мне кажется, можно просто указать destination, раз ему на 1 тачку только

iptables -t nat -A POSTROUTING -o ppp0 -d 192.168.1.3 -j MASQUERADE

fehhner ★★★★★ ()

отрубать и давать интернет, ставя галочки.

Если GPIO свободно, одну кнопку присобачить - минутное дело. Сможешь без веб панели нажимать. Ну и диод, чтобы горел когда работает - задача обычно при первом знакомстве в начальном уроке разбирается.

fehhner ★★★★★ ()
Ответ на: комментарий от fehhner

Можно и так, только -s 192.168.1.3. Но ему в любом случае фильтры надо будет настроить.

Kolins ()
Ответ на: комментарий от Kolins

Но ему в любом случае фильтры надо будет настроить.

Если нет желания долго разбираться, можно поставить ufw (cli), или gufw (gui) - Uncomplicated way to manage your Linux firewall.

fehhner ★★★★★ ()
Ответ на: комментарий от Kolins

Удваиваю оратора.
Маскарад оставь общий, а ограничивай в секции FORWARD:

iptables -A FORWARD -i eth0 -o ppp0 -s 192.168.1.2 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -s 192.168.1.3 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j DROP

Novator ★★★★ ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей