8

Мой компьютер оснащен двумя сетевыми интерфейсами - wlan0 и eth0. Я хочу использовать WiFi порт в качестве точки доступа на wlan0. Поэтому я использую средство hostapd, и оно работает правильно в режиме маршрутизации в локальной сети. Пользователи могут подключаться к такой созданной точке доступа, и DHCP работает правильно в обоих сегментах. ПК с hostapd не имеет брандмауэров и / или правил iptables (iptables и брандмауэры отключены). Я хочу использовать только встроенный межсетевой экран в маршрутизатор ADSL.

Мой сетевой конфиг выглядит следующим образом

......ПК с hostapd ................. кабельное соединение ..................ADSL роутер

..... wlan0 .............. eth0 ..... <----------------------- -------> ........... 192.168.0.1 ...................... <---> Интернет 192.168.10.1 ... 192.168.0.7 .............................. добавлена статическая маршрутизация к 192.168.10.Икс

ifconfig на ПК:

eth0      Link encap:Ethernet  HWaddr 00:12:3F:F2:31:65  
       inet addr:192.168.0.7  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::212:3fff:fef2:3165/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2169539 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1008097 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:3056198487 (2.8 GiB)  TX bytes:72727161 (69.3 MiB)
      Interrupt:16 

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
      RX packets:3398 errors:0 dropped:0 overruns:0 frame:0
      TX packets:3398 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:495444 (483.8 KiB)  TX bytes:495444 (483.8 KiB)

mon.wlan0 Link encap:UNSPEC  HWaddr 00-14-A5-04-94-3C-90-F0-00-00-00-00-00-00-00-00  
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:151 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:17092 (16.6 KiB)  TX bytes:0 (0.0 b)

wlan0     Link encap:Ethernet  HWaddr 00:14:A5:04:94:3C  
      inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
      inet6 addr: fe80::214:a5ff:fe04:943c/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1502 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 b)  TX bytes:279392 (272.8 KiB)

Я совершенно нуб в iptables. Так кто-нибудь может мне помочь настроить простой конфиг NAT iptables для него на ПК? Я хочу, чтобы все пользователи подключались к сети через hostapd (сеть 192.168.10.X) иметь доступ к и из Интернета? Я не хочу фильтровать трафик, только только NAT.


ХОРОШО, СПАСИБО. Но я не могу подключиться к интернету из сегмента WiFi. Клиент, подключенный к WiFi, имеет адрес 192.168.10.48 (через DHCP). Внутренний трафик, который я могу заметить на порту eth0 с этого адреса:

16:50:14.671587 ARP, Request who-has 192.168.0.48 tell 192.168.0.1, length 46

Обратите внимание - адрес 192.168.0.48, а не 192.168.10.48. Так что маскарад швы на работу.

Боже не могу пинговать до 192.168.0.1 - порт ADSL роутера. Это было возможно раньше.

А как насчет доступа из интернета к пользователям WIFI? Конечно, я настрою маршрутизатор ADSL, перенаправляя пулы определенных IP-портов из Интернета на определенный IP-адрес такого пользователя WiFi.

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

systemstl показывает, что iptables - это:

iptables.service          loaded active exited

Но, конечно, я бегу:

systemctl enable iptables.service
systemctl start iptables.service

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

Работает! Но я должен добавить вручную каждый раз, когда я загружаю компьютер (из сценария запуска):

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Это нормальная ситуация?

2 ответа2

6

В простейшем виде:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Это позволит всем пользователям WiFi доступ к Интернету.

Конечно, предполагая, что ваша другая настройка маршрутизации уже выполнена, а именно:

  1. Переадресация включена в ядре

    sysctl net.ipv4.ip_forward=1
    
  2. Пересылка включена в iptables:

    iptables -P FORWARD ACCEPT
    iptables -F FORWARD
    

Используйте tcpdump -nn -i eth0 для отслеживания трафика на eth0 в случае возникновения проблем, чтобы увидеть, правильно ли он получает NAT, ответ возвращается и т.д.

РЕДАКТИРОВАТЬ: «Я должен добавить вручную каждый раз, когда я загружаю компьютер (из сценария запуска)...» Это зависит от того, какой дистрибутив Linux у вас есть. К сожалению, почти в каждом дистрибутиве есть свой собственный инструмент брандмауэра - в конце концов они называют только iptables но по какой-то причине авторы считают, что запутывание работы iptables - это то, что хотят пользователи.

Чтобы ответить на ваш вопрос - скорее всего ваш брандмауэр может быть настроен на автоматическое добавление этого правила NAT. Точный путь, однако, варьируется между дистрибутивами Linux без веской причины. Грустно, но правда.

5

Я написал брандмауэр на все случаи жизни. Пожалуйста, прочтите README и СЦЕНАРИЙ перед его использованием. Я включил необходимые правила для HOSTAP

Основные части:

HostAP

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

HostAP требует, чтобы строки ниже оба были ПРИНЯТЫ для функционирования

iptables -A INPUT -j ACCEPT >> /dev/null 2>&1 
iptables -A OUTPUT -j ACCEPT >> /dev/null 2>&1

https://github.com/diveyez/fw.sh

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .