Я устанавливаю домашний маршрутизатор Gentoo Linux со следующей конфигурацией:
eth0
: подключен к WAN (управляется systemd-networkd)wlan0
: точка доступа для локальной сети (управляемая hostapd)
Я использую dnsmasq
качестве DNS и DHCP-сервера для компьютеров локальной сети.
Текущая проблема: я могу подключиться к маршрутизатору, но без подключения к Интернету от клиентов.
Немного информации:
- Клиентский сервер имен: IP-адрес маршрутизатора.
- Пинг с роутера на google.com нормальный.
- Пинг с клиентских машин на роутер нормальный.
- Пинг с клиентских машин на google.com всегда истекает (но имя домена разрешено)
- Маршрутизатор:
iptables -t {filter,nat,mangle,raw} -L
показывает, что все цепочки во всех таблицах имеют политикиACCEPT
- Маршрутизатор:
iptables -t nat -L
показывает ожидаемый результатiptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- Подтверждено
sys.net.ipv4.ip_forward = 1
Я протестировал вышеописанное на разных клиентских компьютерах, и эти клиентские машины были протестированы на совместимость с другими точками доступа Wi-Fi.
Я понятия не имею, как решить эту проблему, похоже, что я следую обычной процедуре, но доступ в Интернет с клиента просто не работает. Будем весьма благодарны за любые подсказки о том, что проверить дальше, или за идею о том, как решить эту проблему!
РЕДАКТИРОВАТЬ:
Проблема здесь выглядит примерно так: трафик не пересылается через NAT. Тем не менее, я действительно подтвердил sys.net.ipv4.ip_forward = 1
.
Возьмите роутер как A
и клиент как B
ifconfig
на B
:
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether xx:xx:xx:xx:xx:xx
inet6 fe80::xxxx:xxxx:xxxx:xxxx%en0 prefixlen 64 scopeid 0x4
inet 192.168.1.62 netmask 0xffffff00 broadcast 192.168.1.255
nd6 options=1<PERFORMNUD>
media: autoselect
status: active
ifconfig
на A
:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet xx.xx.xx.154 netmask 255.255.254.0 broadcast xx.xx.xx.255
inet6 fe80::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>
ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
RX packets 251116 bytes 22652889 (21.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11731 bytes 979877 (956.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16 memory 0xdf100000-df120000
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.199 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>
ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
RX packets 12867 bytes 1090816 (1.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1272 bytes 306689 (299.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
iptables -S
на A
:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
iptables -S -t nat
на A
:
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE
ping -n google.com
на A
:
PING google.com (216.58.192.206) 56(84) bytes of data.
64 bytes from 216.58.192.206: icmp_seq=1 ttl=57 time=1.29 ms
64 bytes from 216.58.192.206: icmp_seq=2 ttl=57 time=1.52 ms
[continued]
ping -n google.com
на B
:
PING google.com (216.58.192.206): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
[continued]
traceroute -i en0 8.8.8.8
на B
:
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 52 byte packets
1 192.168.1.199 (192.168.1.199) 2.054 ms 2.033 ms 2.018 ms
2 * * *
3 * * *
4 * * *