Як я можу встановити вікно Linux як маршрутизатор для пересилання ip пакетів?


25

Я роблю мережевий експеримент щодо переадресації 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 переадресацію за допомогою:

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, це не працює.

Відповіді:


23

Вам потрібно додати правило переадресації, використовуючи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 маскарад HOWTO, який детально обговорює цю тему.

Ви також повинні переконатися, що у вас немає інших правил (наприклад, у FORWARDланцюжку), які переважають вищевказане ACCEPTправило. Якщо вони є, ви, ймовірно, хочете їх видалити.


Я не знаю чому, але все одно не працює. Я додав і те, iptables -A FORWARD -i eth0 -o eth1 -j ACCEPTі iptables -A FORWARD -i eth1 -o eth0 -j ACCEPTмої таблиці. І моя політика INPUT, OUTPUT і FORWARD - це все ACCEPT.
Ішу Фанг

Є багато речей, які можна налаштувати неправильно. Наприклад, IP хоста слід вказати як "шлюз IP" на хостах у "внутрішній" мережі, щоб вони знали, що якщо IP не входить у діапазон їх "локальної" мережі, пакети потрібно надіслати на ваш шлюзова машина. Це схоже на звичайну установку, коли маршрутизатор ADSL зареєстрований як шлюз для хостів у локальній мережі
Сергій

Коли я використовую tracerouteсвій хост, він показує, що пакет переходить до "маршрутизатора" (192.168.100.1), але далі він не йде.
Ішу Фанг

1
@UniMouS: Здається, я забув про річ MASQUERADE - я відредагував свою відповідь і додав нові посилання на статті.
Сергій

2

Потрібно додати маршрут як до 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).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.