Я провожу сетевой эксперимент по пересылке ip-пакетов, но я не знаю, почему это работает.
У меня Linux-машина с двумя сетевыми интерфейсами, eth0 и eth1, оба со статическим IP-адресом (eth0: 192.168.100.1, eth1: 192.168.101.2).
Моя цель проста, я просто хочу переслать ip-пакеты из eth1 с адресатом в подсети 192.168.100.0/24 в eth0 и переслать ip-пакеты из eth0 с адресатом в подсети 192.168.101.0/24 в eth1.
Я включил ip forwarding с помощью:
sysctl -w net.ipv4.ip_forward=1
моя таблица маршрутизации выглядит следующим образом:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Но, когда я пытаюсь пинговать с 192.168.100.25 до 192.168.101.47, это не работает.
Вам необходимо добавить правило пересылки , используя команду iptables
, что-то вроде этого:
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT
см. man iptables
для получения более подробной информации, или поискать в Интернете статьи с инструкциями, например, Как настроить маршрутизатор NAT на компьютере под управлением Linux
Вот Linux IP Masquerade HOWTO , в котором подробно обсуждается эта тема.
Вы также должны убедиться, что у вас нет других правил (например, в цепочке FORWARD
), которые отменяют вышеуказанное правило ACCEPT
. Если есть, вы, вероятно, хотите удалить их.
Вам необходимо добавить маршрут к 192.168.100.25 и 192.168.101.47.
Если ваш сервер пересылки имеет IP-адреса 192.168.100.1 и 192.168.101.1, вы должны добавить в клиент 192.168.100.25
ip route 192.168.101.0/24 via 192.1268.100.1
и в клиент 192.168.101.47
ip route 192.168.100.0/24 via 192.168.101.1
(это работает только с включенной переадресацией, без iptables).