Как разделить одно подключение к Интернету из локальной сети в другую?

хочу, чтобы мой Mac получал доступ к Интернету

У меня есть малиновый Pi, подключенный к маршрутизатору (Router1) с подключением к Интернету в en0 , с IP 192.168.1.110 , однако у меня есть Wii-порт моего RPi ( wlan0 ), подключенный к другому маршрутизатору (Router2) с IP 172.31.198.123 (другая сеть LAN ).

Теперь мой Macbook подключен к Router2 (например, с IP 172.31.198.100 ), и я хочу добраться до Интернета через мой малиновый Pi (возможно, настроить VPN-сервер или что-то подобное на Pi).

Только когда я en0 свой кабель ( en0 ), могу ли я 172.31.198.123 ping через 172.31.198.123 с моего Mac. В противном случае Pi будет использовать en0 и я не могу выполнить ping через 172.31.198.123 .

Может ли кто-нибудь сказать мне, как это сделать?

 auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.110 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 auto wlan0 allow-hotplug wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf auto wlan1 allow-hotplug wlan1 iface wlan1 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf ~$ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="XXXX-WiFi" key_mgmt=NONE } - auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.110 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 auto wlan0 allow-hotplug wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf auto wlan1 allow-hotplug wlan1 iface wlan1 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf ~$ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="XXXX-WiFi" key_mgmt=NONE } 

Любая машина с несколькими сетевыми интерфейсами должна иметь несколько маршрутов, в частности, вам нужно иметь три на три rpi и два на Mac, то есть одну перед каждой подсетью и маршрут по умолчанию. (предполагая, что вы просто используете второй маршрутизатор в качестве моста, который выглядит так)

Теперь вот интересный вопрос: почему маршруты не настроены автоматически? Я подозреваю, что первая проблема заключается в том, что router2 запускает сервер dhcp и что rpi использует этот сервер dhcp (который, хотя технически не является проблемой, создает королевский беспорядок, если вы точно не знаете, что вы делаете) и что ваша сетевая конфигурация инструмент, который вы используете rpi, является лучшим типом клиента (используйте только лучшую сеть), и вы пытаетесь использовать его как двойной клиент (одновременно подключенный к двум или более сетям, не пересылайте пакеты между интерфейсами) или как маршрутизатор (одновременно подключенный к двум или более сетям, пересылка пакетов между интерфейсами). Если вы пытаетесь подключить Mac к Интернету через rpi, вам нужно указать rpi в качестве шлюза по умолчанию для mac и включить пересылку пакетов.

Я думаю, что ваш лучший подход – маскировка (более известный как динамический NAT) с использованием iptables.

В вашем pasperry pi сделайте следующее:

  1. загрузите модуль NAT iptables: modprobe iptable_nat (этот шаг может завершиться неудачно, если модуль уже modprobe iptable_nat , поэтому старайтесь продолжать в любом случае)
  2. Включить переадресацию ip: echo 1 > /proc/sys/net/ipv4/ip_forward
  3. Настройте правило маскировки в своих iptables:

     iptables -A POSTROUTING -t nat -o wlan0 -s 172.31.198.0/24 -d 0/0 -j MASQUERADE 
  4. Добавьте следующие правила, чтобы убедиться, что iptables не удалит эти пакеты на более ранней стадии фильтрации:

     iptables -A FORWARD -t filter -o wlan0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -t filter -i wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT 

Теперь вам нужно сделать так, чтобы трафик, направляющийся в Интернет, добирался до малины pi для дальнейшей маршрутизации. У вас есть 2 варианта для этого:

  1. В маршрутизаторе (router2) определите IP-адрес малины pi (на карте Wi-Fi) в качестве GW по умолчанию.
  2. Измените GW по умолчанию на mac на IP-адрес малины. Вы можете сделать это со следующими командами:

     route del default route add default 1.2.3.4 

    Когда 1.2.3.4 является IP-адресом вашего сетевого адаптера raspberri pi wifi.

    Вы можете сохранить его как сценарий, чтобы вы могли запускать его каждый раз, когда вы подключаетесь к этой сети.

Естественно, по возможности вариант 1 лучше. Он направит все устройства, подключенные к нему, в Интернет (но, как вы сказали в комментариях, это может быть не то, что вы хотите), и у него нет недостатка в определении статического маршрута на вашем mac (вам также может понадобиться для его удаления при подключении к другим сетям).

Выполняя это, вы должны сообщить своему устройству rasppi пересылать все пакеты, поступающие с маршрутизатора2, в Интернет, изменяя свой ip-адрес src в заголовке на один из внешних сетевых адаптеров в малине pi. Когда ответ придет для этих соединений, малина pi будет знать, куда их перенаправить. Это, вкратце, процесс маскировки.

Вы можете посмотреть более подробную информацию об этом здесь: http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_: Ch14 : _Linux_Firewalls_Using_iptables # Masquerading_.28Many_to_One_NAT.29