У меня есть маршрутизатор, который обеспечивает доступ к Интернету с помощью 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