Трафик не пересылается через NAT

2

У меня есть маршрутизатор, который обеспечивает доступ к Интернету с помощью NAT, и клиентская коробка Linux (A), которая подключена к этому маршрутизатору по eth0.

Эта коробка Linux также имеет интерфейс WLAN, Wlan0; я хотел бы, чтобы этот блок объявлял беспроводную сеть с использованием этого интерфейса, передавая IP-адреса и перенаправляя трафик из этой сети в другую сеть, предоставленную маршрутизатором шлюза.

Пока у меня есть hostapd и dhcp сервер; второй блок Linux (B) может подключиться к этой новой беспроводной сети и получить IP-адрес. Однако B не может пропинговать вне подсети, разрешать адреса и т. Д.

Вывод ifconfig B:

wlan2     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:192.168.42.10  Bcast:192.168.42.255  Mask:255.255.255.0
          inet6 addr: fe80::12fe:edff:fe1b:2bec/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:177 errors:0 dropped:0 overruns:0 frame:0
          TX packets:757 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:26221 (26.2 KB)  TX bytes:132884 (132.8 KB)

Вывод ifconfig:

eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:192.168.0.12  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:369 errors:0 dropped:0 overruns:0 frame:0
          TX packets:267 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:31272 (30.5 KiB)  TX bytes:33861 (33.0 KiB)

wlan0     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:192.168.42.1  Bcast:192.168.42.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:79 errors:0 dropped:199 overruns:0 frame:0
          TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:18114 (17.6 KiB)  TX bytes:6874 (6.7 KiB)

Вывод iptables -t nat -S на A:

-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE

Вывод iptables -S на A:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT

Любые идеи будут высоко оценены!

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

маршрут -n выход из A:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.42.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan0

Трассировка маршрута взята из B:

$ sudo traceroute -i wlan2 8.8.8.8
[sudo] password for eab: 
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  * * *
 4  * * *

и т.п.

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

Я могу успешно получить доступ к Интернету при подключении к новой беспроводной сети, созданной A с другого устройства, C. B имеет два сетевых адаптера, оба беспроводных, и wlan2 подключен к этой новой беспроводной сети. Я не могу пинговать:

вывод из B:

$ ping -I wlan2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.42.10 wlan2: 56(84) bytes of data.
From 192.168.42.10 icmp_seq=1 Destination Host Unreachable
From 192.168.42.10 icmp_seq=2 Destination Host Unreachable
From 192.168.42.10 icmp_seq=3 Destination Host Unreachable

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

Запуск "route -n" на B дал следующий вывод:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 wlan0
192.168.0.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0
192.168.42.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan2

Отправить отзыв Решение: Запуск "sudo route add default gw 192.168.42.1 wlan2" исправил проблемы с подключением. Оказывается, в Linux разрешено использовать только один шлюз по умолчанию, даже если у вас есть несколько активных сетевых адаптеров, подключенных к нескольким сетям. Выполнение вышеуказанной команды производит следующее:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.42.1    0.0.0.0         UG    0      0        0 wlan2
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.42.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan2

источник

Ответы:

0

Было бы неплохо добавить еще несколько подробностей, в том числе выполнить «route -n» для каждого блока, а также трассировку от «b» до чего-то внешнего. Также,

Тем не менее, я подозреваю, что ваша проблема в том, что вы не включили пересылку пакетов на маршрутизаторе.

Пожалуйста, запустите "cat / proc / sys / net / ipv4 / ip_forward" на A - если это значение равно "0", это может быть [одна из ваших] проблем. Вы можете временно это исправить, введя команду "echo 1> / proc / sys / net / ipv4 / ip_forward" - и навсегда добавив / изменив соответствующую строку в /etc/sysctl.conf на "net.ipv4.ip_forward = 1 "(Используйте sysctl -p /etc/sysctl.conf, чтобы" перезагрузить "этот файл)

davidgo
источник
Я уже отредактировал sysctl.conf для включения пересылки IPv4. Я добавил еще немного информации к первоначальному вопросу.
1
Можете ли вы сделать «маршрут -n» на B? Из вашей трассировки видно, что шлюз по умолчанию либо не существует, либо установлен неправильно.
Давидго
Настройка шлюза по умолчанию исправила мои проблемы с подключением, спасибо! Я не знаю, почему это не было установлено, но я исследую и обновлю этот вопрос с основной проблемой для будущих читателей.