Некоторая предыстория, чтобы понять мой вопрос:
У меня дома нет фиксированного подключения к Интернету. Доступ в Интернет только через мой мобильный телефон. Я привязываю свой мобильный телефон к любому устройству, которому требуется доступ в Интернет, и это меня устраивает.
Однако некоторым устройствам для правильной работы требуется локальная сеть, поэтому я пытался настроить различные маршрутизаторы, которые я приобрел на протяжении многих лет, чтобы обеспечить сеть Wi-Fi, в которой нет доступа к Интернету, пока мой телефон не будет добавлен в сеть.
Я не возражаю, если мне нужно, чтобы мой компьютер с Linux был включен и привязан для обеспечения доступа в Интернет к локальной сети, но мне нужно, чтобы локальная сеть работала (хотя и без доступа в Интернет) без включения моего ПК.
В следующих примерах моя локальная сеть всегда должна иметь адрес 192.168.1.0/24, а мой маршрутизатор (точка беспроводного доступа с портами eth LAN и одним портом WAN) имеет адрес 192.168.1.1. Когда я привязываю свой телефон к компьютеру, интерфейс usb0 настраивается автоматически.
Что у меня получилось:
Сценарий А:
iptables -A FORWARD -i eth0 -o usb0 -j ACCEPT
iptables -A FORWARD -i usb0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE
Эффект от сценария А:
Сценарий B:
Эффект сценария B:
Сценарий C:
Сценарий A хорош, потому что у моего ПК есть доступ к локальной сети, так как я определенно требовать. Проблема в том, что мой компьютер должен быть включен, чтобы любое устройство могло подключиться к локальной сети, поскольку на моем компьютере работает DHCP-сервер.
Сценарий B хорош, потому что мой компьютер не должен быть включен, чтобы устройства могли подключаться к локальной сети, а когда мой компьютер включен с привязанным телефоном, все устройства в локальной сети имеют доступ в Интернет. Однако у моего ПК нет доступа к локальной сети.
Сценарий C непроверенный - но, учитывая, как работал сценарий B (WAN получил IP-адрес через DHCP-сервер на телефоне), я почти уверен, что это работает.
Мне бы очень хотелось, чтобы что-то вроде сценария B работало, так как я должен иметь возможность настроить свой Linux-компьютер, чтобы он делал что угодно. Я хотел бы узнать больше о маршрутизации с помощью Linux, поэтому я бы предпочел приложить усилия, чтобы выяснить, как это сделать с тем, что у меня есть.
Мое видение:
Phone <-------> [usb0]PC[eth0] <-------> [WAN]Router[LAN] <-------> Devices
192.168.X.0/24 192.168.100.0/24 192.168.1.0/24
Я хочу, чтобы конфигурация маршрутизатора была как можно более минимальной (без специальных маршрутов или чего-то еще), чтобы ее можно было заменить на произвольный маршрутизатор. ПК может быть настолько сложным, насколько это необходимо. На моем компьютере только одна сетевая карта.
Вопрос: Как я могу добиться этого с моим текущим оборудованием?
Я использую MXLinux 18.3 на основе Debian.
Я считаю, что ваш сценарий C будет работать, но поскольку вы предпочитаете изучать конфигурацию Linux, я думаю, что это хорошая идея.
Мой способ сделать это:
На этом этапе каждое устройство, которое будет подключаться к вашей локальной сети по беспроводной сети или через эфир, будет видеть все другие устройства, потому что оно получит IP-адрес от вашего маршрутизатора, и независимо от того, будет ли ваш компьютер включен или выключен - локальная сеть будет работать - просто нет Интернета ( Потому что ПК, выступающий в качестве шлюза, выключен) И когда ваш компьютер будет работать, у него будет доступ в Интернет по телефону и доступ к локальной сети через eth0.
Если ваш компьютер будет настроен как шлюз, тогда, когда он будет включен, он будет доступен для других устройств, и они смогут обмениваться данными с Интернетом.