Маршрутизация с eth0 на eth1 на малине с Jessie Lite не работает

У меня есть несколько Raspberry Pi2, загруженных Jessie lite в сети. Я хочу, чтобы они поделились интернет-соединением ключа 3G, но я не могу заставить его работать.

Вот некоторые детали:

Все RPi находятся в одной сети 10.0.0.x вместе с некоторыми другими устройствами. Я настроил их (и RPi, и устройства) с фиксированным IP-адресом в одной и той же подсети, и это отлично работает, все они могут общаться друг с другом. Мне нужны фиксированные IP-адреса, потому что я хочу иметь возможность транслировать все устройства и получать к ним доступ из Интернета позже.

Только один RPi (адрес eth0 10.0.0.10, назовем его RPi0) имеет подключение к Интернету, которое исходит от ключа Huawei 3G. Ключ создает интерфейс eth1 с автоматическим адресом, который всегда выглядит как 192.168.8.100. Если я попытаюсь принудительно установить IP-адрес вручную, я не смогу получить доступ к Интернету.

Из коробки, когда я подключаю USB-ключ, RPi0 может получить доступ к Интернету и разрешить адреса.

Теперь я хотел бы разрешить всем другим устройствам на 10.0.0.x доступ в Интернет через RPi с USB-ключом. Поэтому я полагаю, что 10.0.0.10 должен работать как шлюз и направлять трафик через eth1. Я следил за многими учебниками, чтобы знать, но я должен что-то упустить, потому что я не могу заставить его работать.

Я включил настройку NAT net.ipv4.ip_forward=1 in /etc/sysctl.conf

Затем я пытаюсь указать правило NAT для всего трафика, который должен проходить через eth1.

sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

не может больше пинговать общедоступные IP-адреса

маршрут выглядит так:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         hi.link         0.0.0.0         UG    247    0        0 eth1
10.0.0.0        *               255.255.255.0   U     202    0        0 eth0
192.168.8.0     *               255.255.255.0   U     247    0        0 eth1

Что я делаю неправильно?

РЕДАКТИРОВАТЬ

ключ автоматически создает порт Ethernet с адресом 192.168.8.100, но адрес шлюза 192.168.8.1 (который должен быть hi.link в таблицах IP). Поэтому я ожидаю, что это сработает, пакеты для Интернета, поступающие от других устройств 10.0.0.x, должны направляться на шлюз. Но это не так.


person Vitomakes    schedule 25.05.2017    source источник
comment
какую команду вы использовали для получения маршрута?   -  person Rho Phi    schedule 25.11.2018
comment
проверить принятый ответ;)   -  person Vitomakes    schedule 28.11.2018
comment
Я имею в виду распечатать маршрут, а не установить маршрут. Вы использовали traceroute ? ваш вывод сильно отличается от вывода этой команды.   -  person Rho Phi    schedule 29.11.2018
comment
У меня больше не работает эта машина, но команда для отображения текущей таблицы маршрутизации должна быть route -n или netstat -r -n   -  person Vitomakes    schedule 29.11.2018


Ответы (1)


ок, получается, что команды для NAT были неверными, рабочий вариант:

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
person Vitomakes    schedule 25.05.2017