Как разделить одно интернет-соединение из LAN в другую LAN?

[1126718]В этом сценарии, единственная гарантия, которую вы можете получить, это то, что B либо не скопирует файл, либо скопирует префикс файла. В не имеет возможности узнать, куда записывается файл, поэтому он будет прочитан до (текущего) конца файла, а затем остановлен.

Обычный способ избежать этой ошибки - скопировать файл под временным именем, а затем переименовать его:

В потребителе договориться о том, чтобы не копировать временные файлы. В вашем сценарии это можно сделать, сделав его точечным файлом - используйте [1127247]dest=$(TMPDIR=/резервное копирование mktemp .XXXXXXXX)[1127248] выше. Проще вызвать [1127249]rsync[1127250] вместо [1127251]cp[1127252], так как [1127253]rsync[1127254] использует эту стратегию по умолчанию:

На шаге B убедитесь, что эти временные файлы исключены, например:

Если вы не хотите полагаться на файлы точек, вы можете использовать каталог ступеней. Перемещение файла из одного каталога в другой является атомарным до тех пор, пока эти два каталога находятся в одной файловой системе.

2
10.06.2015, 11:44
2 ответа

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

В вашем rasperry pi выполните следующие действия:

  1. загрузите модуль iptables 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 { {1}} 

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

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

     route del default 
    route add default 1.2.3.4 
     

    Когда 1.2.3.4 - это IP-адрес вашей сетевой карты raspberri pi wifi.

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

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

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

Подробнее об этом можно узнать здесь: http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_: Ch14 : _Linux_Firewalls_Using_iptables # Masquerading_.28Many_to_One_NAT.29

0
27.01.2020, 22:54

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

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

0
27.01.2020, 22:54

Теги

Похожие вопросы