передача установки iptables между двумя интерфейсами Ethernet

Я хочу создать шлюз на Linux, который имеет 2 интерфейса eth0 и eth1.

Eth1 создается lte модемом и после того как lte модем присоединяет к сети и получает IP-адрес. Затем dhcp сервер выполняется на шлюзе для обеспечения этого IP-адреса (пример: 10.20.30.6) к ПК, подключенному к eth0 локальной сети. затем eth0 присвоен с IP-адресом 10.20.30.1

Теперь самому eth1 не присваивают никакой IP-адрес.

Теперь я хотел бы передать все пакеты, полученные от ПК на eth0 интерфейса LAN к eth1 интерфейсу глобальной сети.

Любезно предложите меня IP правила таблиц, которые я должен использовать для создания этой передачи.

Любезно отметьте из-за ограничения lte модема, режим моста не может использоваться и не из-за ограничения архитектуры, которая будет создана, режим NAT также не может использоваться.

2
задан 1 August 2015 в 23:42
1 ответ

Куда вы собираетесь, вам не нужны iptables.

Насколько я понимаю, вы хотите иметь шлюз пересылает IP-пакеты между двумя интерфейсами, при этом шлюз не выполняет NAT для пересылаемых пакетов. Вы можете сделать это без каких-либо правил iptables.

Мне не хватает знаний о LTE. Так что, если возникнут какие-либо оговорки, касающиеся LTE, я не смогу вам с ними помочь. В моем ответе по большей части предполагается, что eth0 и eth1 работают с обычным IPv4 через Ethernet.

Прежде всего вам необходимо убедиться, что пересылка включена:

echo 1 >/proc/sys/net/ipv4/ip_forward

Пакеты прибывают из Интернета поступит на eth1 . Но отправителю этих пакетов может потребоваться выполнить запросы ARP для 10.20.30.6 , который не назначен вашему шлюзу. Таким образом, ваш шлюз не будет отвечать на эти запросы ARP, если вы не включите проксирование ARP:

echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp

После отправки ответа ARP остальная часть обработки входящих пакетов происходит с использованием обычной пересылки IP-пакетов, никакой магии не требуется.

Пакеты от ПК к шлюзу не требуют каких-либо уловок, чтобы прибыть на шлюз через eth0 . Сложная часть состоит в том, как заставить их уйти через интерфейс eth1 .

Вам нужен маршрут по умолчанию . Но шлюзом для этого маршрута, вероятно, будет 10.20.30.1 , который вы только что назначили для eth0 на настраиваемом вами шлюзе. Однако, если вы знаете MAC-адрес исходного шлюза, вы можете заставить его работать, не требуя реального IP-адреса шлюза.

Сначала вы придумываете IP-адрес шлюза-заполнителя (должен быть адрес RFC 1918, которого у вас нет. нужно общаться иначе). В качестве примера я предполагаю 10.1.2.3 :

ip neigh add 10.1.2.3 lladdr xx:xx:xx:xx:xx:xx dev eth1
ip route add 10.1.2.3 dev eth1
ip route add default via 10.1.2.3

Поскольку 10.1.2.3 создается как постоянная запись в кэше ARP на вашем шлюзе, запросы ARP не будут отправляться для этого адреса. Это означает, что не будет проблемой, что следующий шлюз не узнает ваш выбранный IP-адрес-заполнитель.

1
ответ дан 3 December 2019 в 12:45

Теги

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