IP-маскарадування, правило для переадресації пакетів між Інтерфейсами (на багатоходовому мережевому пристрої)


0

Преамбула

Це питання може розглядатися як подальше посилання

Налаштування

  • Система: Вбудована система Linux із запуском ядра з підтримкою netfilter та iptables.
  • Кількість інтерфейсів: 2
  • eth0: Підключено до NAT, який має доступ до Інтернету.
  • wlan0: Режим AP, налаштований на статичний IP (192.168.10.1), до якого клієнти можуть підключитися

Об'єктивна

Забезпечити доступ до Інтернету (через eth0) для бездротових клієнтів, що підключаються до AP (через wlan0).

Конфігурація IP та вихід маршруту

wlan0     
    inet addr:192.168.10.1  
    Bcast:192.168.10.255  
    Mask:255.255.255.0

eth0:
    inet addr:10.102.8.93
    Bcast:10.102.11.255
    Mask:255.255.252.0

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.102.8.1      0.0.0.0         UG    0      0        0 eth0
10.102.8.0      0.0.0.0         255.255.252.0   U     0      0        0 eth0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan0

Спробувані кроки (за допомогою сценарію, посиланого на посилання )

EXTIF="eth0"
INTIF="wlan0"
echo "   External Interface:  $EXTIF"
echo "   Internal Interface:  $INTIF"

echo "   Enabling forwarding.."
echo "1" > /proc/sys/net/ipv4/ip_forward

echo "   Enabling DynamicAddr.."
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

echo "   Clearing any existing rules and setting default policy.."
$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT 
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT 
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD 
$IPTABLES -t nat -F

echo "   FWD: Allow all connections OUT and only existing and related ones IN"
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
#$IPTABLES -A FORWARD -j LOG

echo "   Enabling SNAT (MASQUERADE) functionality on $EXTIF"
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

Спостереження

З допомогою вищезазначених кроків я можу пінг-вузол, підключений до мережі, 10.102.X.Xвід будь-якого з бездротових клієнтів, підключених до AP (через wlan0, який знаходиться в 192.168.X.Xдіапазоні), але бездротові клієнти не мають підключення до Інтернету.

Питання

Щодо питання про відсутність Інтернету, я здогадуюсь, що система пересилає пакети, що дістаються до wlan0, з адресою призначення в діапазоні 10.102.X.Xдо eth0, але вона не пересилає пакети, що дістаються до wlan0 з адресою призначення, будь-яку іншу, ніж 10.102.X.Xдо eth0. Будь ласка, дайте нам знати ваші міркування, якщо я повинен додати якесь інше правило, щоб досягти цього.


Чи можете ви від одного з бездротових клієнтів пінг 8.8.8.8?
MariusMatutiae

Ваша пропозиція цінна. Я вмію пінг до 8.8.8.8. Чи означає це, що настройки DNS відсутні для моїх клієнтів WiFi?: Як отримати що
Вівек Маран

Це залежить. Як призначити IP-адреси бездротовим клієнтам?
MariusMatutiae

Я запускаю сервер DHCP в AP. Мені не зрозуміло в IP, що я повинен використовувати для "опції серверів доменних імен", щоб пересилати запити DNS до NAT, до якого підключеноeth0
Vivek Maran,

Так, але який сервер DHCP? dnsmasq? isc-dhcp-сервер?
MariusMatutiae

Відповіді:


1

Вам не вистачає DNS для вашої мережі Wi-Fi. Додайте у файл /etc/dhcpd.confтакий рядок, як

  option domain-name-servers 8.8.4.4, 8.8.8.8;

серед усіх optionрядків, після чого перезавантажте сервер dhcp, і ви закінчите. Більш нічого.


Вибач що турбую. Але питання в тому, який IP-сервер DNS я повинен використовувати? Чи не використання загальнодоступних серверів DNS Google не сповільнить запити?
Vivek Maran

Ви можете використовувати свій локальний DNS провайдера, якщо знаєте IP
emirjonb

Гаразд, дякую, що я впорався з цим питанням. Можливо, я можу спробувати використати вихід cat /etc/resolv.conf |grep -i nameserver|head -n1|cut -d ' ' -f2доdhcpd.conf
Vivek Maran

@ Vivek27 Ні, не варто цього робити: так, як я описав, це правильний спосіб зробити це.
MariusMatutiae

@Marius, Через деякі проблеми з налаштуваннями я не пробував рішення. Мені просто цікаво дізнатися про те, що не так у запропонованому способі, тобто читати IP-адресу сервера DNS з файлу resv.conf, відповідного файлу eth0та використовуючи для нього wlan0. Роз’яснення, які мені потрібні у запропонованому вами методі, є: 1. Чи запити DNS не стануть повільнішими? 2. Скажімо, якщо ми хочемо виробити це рішення, яка гарантія того, що IP-адреси сервера DNS не зміниться. Отже, чи не було б краще, якщо ми завжди отримуємо IP-адреси сервера DNS динамічно через сервер DHCP, до якого eth0підключено.
Вівек Маран
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.