Переадресация IP с одного интерфейса на другой в Debian 7


3

Фон

Debian 7, который я запускаю, имеет следующие интерфейсы

wlan3 == Internet connection  85.5.48.64/24
wlan2 == act as an AP (hostapd) 192.168.5.1/24

Я запускаю следующие настройки на терминале

sudo iptables -t nat -A POSTROUTING -o wlan3 -j MASQUERADE
sudo iptables -A FORWARD -i wlan3 -o wlan2 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan2 -o wlan3 -j ACCEPT

проблема

Но wlan2интерфейс не может получить доступ к Интернету.

root@arm:/etc# ping -I wlan2 google.com
PING google.com (173.194.34.78) from 192.168.5.1 wlan2: 56(84) bytes of data.
From 192.168.5.1 icmp_seq=1 Destination Host Unreachable
From 192.168.5.1 icmp_seq=2 Destination Host Unreachable
From 192.168.5.1 icmp_seq=3 Destination Host Unreachable

Может кто-нибудь сказать мне, в чем проблема и как я могу ее решить?

Связанные настройки и выходы

root@arm:/etc# uname -a
Linux arm 3.14.4-armv7-x6 #1 SMP Tue May 20 15:29:16 CEST 2014 armv7l GNU/Linux

root@arm:/etc# sysctl -p
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 1
net.ipv4.conf.eth0.rp_filter = 0
sysctl: cannot stat /proc/sys/net/ipv4/conf/eth1/rp_filter: No such file or directory
net.ipv4.conf.lo.rp_filter = 0

root@arm:/etc# ip route
default via 85.5.48.1 dev wlan3 
85.5.48.0/24 dev wlan3  proto kernel  scope link  src 85.5.48.110 
192.168.5.0/24 dev wlan2  proto kernel  scope link  src 192.168.5.1 

root@arm:/etc# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         supercore.backb 0.0.0.0         UG    0      0        0 wlan3
85.5.48.0       *               255.255.255.0   U     0      0        0 wlan3
192.168.5.0     *               255.255.255.0   U     0      0        0 wlan2

root@arm:/etc# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

 root@arm:/etc# cat /etc/network/interfaces 
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto wlan2
iface wlan2 inet static
    address 192.168.5.1
    network 192.168.5.0
    netmask 255.255.255.0

auto wlan3

root@arm:/etc# iptables-save
# Generated by iptables-save v1.4.14 on Wed Jun  4 08:39:05 2014
*nat
:PREROUTING ACCEPT [2634:425297]
:INPUT ACCEPT [1992:263181]
:OUTPUT ACCEPT [7:488]
:POSTROUTING ACCEPT [1:84]
-A POSTROUTING -o wlan3 -j MASQUERADE
-A POSTROUTING -o wlan3 -j MASQUERADE
-A POSTROUTING -o wlan3 -j MASQUERADE
COMMIT
# Completed on Wed Jun  4 08:39:05 2014
# Generated by iptables-save v1.4.14 on Wed Jun  4 08:39:05 2014
*filter
:INPUT ACCEPT [4705:642335]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [31:4015]
-A FORWARD -i wlan3 -o wlan2 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan2 -o wlan3 -j ACCEPT
-A FORWARD -i wlan2 -o wlan3 -j ACCEPT
-A FORWARD -i wlan3 -o wlan2 -j ACCEPT
-A FORWARD -i wlan2 -o wlan3 -j ACCEPT
-A FORWARD -i wlan3 -o wlan2 -j ACCEPT
-A FORWARD -i wlan2 -o wlan3 -j ACCEPT
-A FORWARD -i wlan3 -o wlan2 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan2 -o wlan3 -j ACCEPT
-A FORWARD -i wlan3 -o wlan2 -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Wed Jun  4 08:39:05 2014

root@arm:/etc# ifconfig 
br0       Link encap:Ethernet  HWaddr 42:42:30:df:a0:d0  
          inet6 addr: fe80::4042:30ff:fedf:86d0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:106 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:31581 (30.8 KiB)

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:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:560 (560.0 B)  TX bytes:560 (560.0 B)

mon.wlan2 Link encap:UNSPEC  HWaddr 64-01-02-18-03-6B-00-00-00-00-00-00-00-00-00-00  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24415 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:5163458 (4.9 MiB)  TX bytes:0 (0.0 B)

wlan2     Link encap:Ethernet  HWaddr 64:02:47:a8:24:80  
          inet addr:192.168.5.1  Bcast:192.168.5.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3210 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3236 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:166955 (163.0 KiB)  TX bytes:230200 (224.8 KiB)

wlan3     Link encap:Ethernet  HWaddr 64:02:47:14:18:be  
          inet addr:85.5.64.110  Bcast:85.5.64.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:40520 errors:0 dropped:0 overruns:0 frame:0
          TX packets:218 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5549564 (5.2 MiB)  TX bytes:27413 (26.7 KiB)

root@arm:/etc# cat /etc/hostapd.conf 
interface=wlan2
driver=nl80211
ssid=test_network
hw_mode=g
channel=1
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_passphrase=mypassword
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP

root@arm:/etc# cat /etc/dhcp/dhcpd.conf 
option domain-name "mydomain.org";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.5.0 netmask 255.255.255.0 {
  range 192.168.5.10 192.168.5.20;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.5.255;
option domain-name-servers 192.168.5.1;
  option routers 192.168.5.1;
option domain-name-servers 8.8.4.4;
}

root@arm:/etc# hostapd -v
hostapd v2.2-devel

Устройства Wi-Fi используют AR9271чипсет и ath9k_htcдрайвер

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

root@arm:~#  tcpdump -i wlan2 -n icmp
[  569.446472] device wlan2 entered promiscuous mode
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan2, link-type EN10MB (Ethernet), capture size 65535 bytes
16:54:31.260589 IP 192.168.5.10 > 83.5.146.49: ICMP echo request, id 3867, seq 17, length 64
16:55:54.175933 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 1, length 64
16:55:55.185028 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 2, length 64
16:55:56.192626 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 3, length 64
16:55:57.200836 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 4, length 64
16:55:58.208679 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 5, length 64
16:55:59.216827 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 6, length 64
16:56:00.224792 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 7, length 64
16:56:01.232757 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 8, length 64
16:56:02.241485 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 9, length 64
16:56:03.249084 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 10, length 64
16:56:04.256561 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 11, length 64
16:56:05.264404 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 12, length 64
16:56:06.272613 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 13, length 64
16:56:07.281494 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 14, length 64
16:56:08.288482 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 15, length 64
16:56:09.296661 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 16, length 64
16:56:10.304534 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 17, length 64
^C
18 packets captured
18 packets received by filter
0 packets dropped[  687.418762] device wlan2 left promiscuous mode
 by kernel
root@arm:~#  tcpdump -i wlan3 -n icmp
[  699.226867] device wlan3 entered promiscuous mode
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan3, link-type EN10MB (Ethernet), capture size 65535 bytes
16:56:22.402374 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 29, length 64
16:56:23.408142 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 30, length 64
16:56:24.416259 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 31, length 64
16:56:25.424743 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 32, length 64
16:56:26.435974 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 33, length 64
16:56:27.439971 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 34, length 64
16:56:28.448028 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 35, length 64
16:56:29.456024 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 36, length 64
^C
8 packets captured
8 packets received by filter
0 packets dropped [  706.608520] device wlan3 left promiscuous mode
by kernel
root@arm:~# 

В первом фрагменте имена интерфейсов меняются местами. Подумайте об этом (я не обладаю достаточной кармой, чтобы сделать это незначительное редактирование самостоятельно).
kostix

Итак, что это было за исправление?
kostix

Я имел в виду первый фрагмент в вопросе. Проблема с подключением все еще остается
Angs

Я заметил, что у вас там есть мостовой интерфейс. Что он там делает?
Jornane

он был создан hostapd ранее. Я удалил его, но ничего не изменилось.
Ангс

Ответы:


1

Не совсем ответ, но две подсказки не подходят для формата комментария:

  • Когда вам pingэто нравится, пакет не пересекает FORWARDцепочку и проходит прямо через OUTPUTцепочку, так что вы на самом деле не тестируете FWIW настройки брандмауэра.

    Другая проблема, которая может возникнуть по той же причине (хотя я не совсем уверена), заключается в том, что, поскольку пакет генерируется на локальном хосте, а не пересылается, маскарадинг не применяется к нему, и поэтому он предположительно будет уничтожен Ядро в тот момент, когда стек будет отправлять его через wlan3- потому что для этой сети пакет, имеющий адрес источника в частной подсети, будет «марсианским», и отправка таких пакетов явно запрещена для маршрутизаторов . В любом случае, даже если этот пакет будет отправлен, он будет уничтожен 85.5.48.1шлюзом по той же причине.

    Чтобы доказать или опровергнуть эту гипотезу, используйте tcpdumpна исходящем интерфейсе:

    1. Бегать

      # tcpdump -i wlan3 -n icmp
      
    2. Пропингуйте, как раньше, и посмотрите, увидите ли вы какие-либо эхо-запросы ICMP на проводе, и если да, то какие адреса они содержат в своих заголовках IP.

  • У вашей настройки брандмауэра есть политика для его FORWARDцепочки ACCEPT. Если это нормально для вашей настройки, нет смысла добавлять явные правила к этой цепочке, так как все равно разрешено.

    С другой стороны, вы можете рассмотреть возможность установки этой политики в DROP. Большинство установок имеют политики для INPUTи FORWARDустанавливают, DROPа затем разрешают только явные виды трафика.

    Но учтите, что в вашем случае отсутствие правил (с ACCEPTполитиками) - это нормально, пока вы работаете с переадресацией. После этого подумайте над ужесточением настроек.


спасибо за ответ и информацию. Я добавил вывод tcpdump как РЕДАКТИРОВАТЬ по этому вопросу. Я пинг 8.8.8.8 с другого компьютера, который подключен к интерфейсу wlan2 (hostapd), но я не получил никакого ответа. Я не могу ни просматривать веб-страницы. Как вы думаете, это точка доступа (маршрутизатор, к которому подключен debian), которая убивает переадресацию IP или есть какие-то новые предложения?
Angs

1
Tcpdump на интерфейсе wlan3 указывает, что ядро ​​пересылает эхо-запросы ICMP, но не транслирует их. Ожидаемый результат на wlan3 будет 85.5.64.110 -> 8.8.8.8. Поведение здесь не отличается от простого включения IP forwardin с помощью sysctl. (возможно в этом проблема ..?)
Невин Уильямс

1
Если вы можете, покажите tcpdump с -v для отображения счетчиков TTL пакета. Это может дать понимание.
Невин Уильямс

@NevinWilliams, сегодня я включил устройство, и вот настройки pastebin.com/eB7G3XRT (такие же, как и выше). Вот tcpdump выводит pastebin.com/W0QfxqHD. Я отправляю ping на 192.168.5.1, затем на 8.8.8.8 с другого компьютера (192.168.5.10). На этот раз wlan3 вообще не показывает icmp. Я не знаю, что отличается в этот раз. В качестве дополнительной информации, вот файл .config из ядра. Paste.ubuntu.com/7520069
Angs

0

Я бы начал со стирания обоих ваших правил таблицы FORWARD

sudo iptables -A FORWARD -i wlan3 -o wlan2 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan2 -o wlan3 -j ACCEPT

просто соблюдайте простое правило NAT

sudo iptables -t nat -A POSTROUTING -o wlan3 -j MASQUERADE

Теперь давайте заставим это работать; после этого мы можем придумать, возможно, лучшие правила для защиты сети wlan3


Спасибо, Пэт, я определила таблицу, как вы предложили, но она не решает проблему
Angs

Вы добавляете это правило в полностью «открытый» модуль iptables? Я имею в виду; Вы уверены, что нет предыдущих правил, препятствующих нормальной маршрутизации в вашем ящике?
Пэт

Я проверяю, что при загрузке iptables-save показывает чистую таблицу pastebin.com/9ZZDDUYt, затем добавляю новое правило.
Angs

1
тогда похоже, что ваш ящик не маршрутизирует свои интерфейсы. у вас включена переадресация IP? Вы уверены, что / proc / sys / net / ipv4 / ip_forward = 1 при выполнении ваших тестов?
Пэт

sysctl -p показывает тот же вывод, что и в вопросе. показывает, что IP-пересылка включена. Знаете ли вы, что может привести к блокировке пересылки IP или как я могу отладить его?
Angs

0

В таких проблемах очень легко что-то упустить, но вот что привлекло мое внимание:

В / etc / network / interfaces вы не определили шлюз по умолчанию для wlan2. Шлюз по умолчанию для wlan2должен совпадать с самим IP-адресом, поскольку блок пересылки будет маршрутизатором.

auto wlan2
iface wlan2 inet static
    address 192.168.5.1
    network 192.168.5.0
    netmask 255.255.255.0
    gateway 192.168.5.1

РЕДАКТИРОВАТЬ: Я только что заметил, что wlan3не имеет шлюза на выходе ip route. Пропустил это раньше. wlan3также должен быть настроен со шлюзом, либо через DHCP, либо вручную. Этот шлюз будет маршрутизатором для этой сети, о котором мы не говорим.

Можете ли вы проверить, работает ли следующее?

ping -I wlan3 google.com

Если это не так, ваш ящик не настроен правильно для доступа в Интернет, и, следовательно, NAT также не будет работать.


Спасибо Йёрн. Я добавил строку шлюза в / etc / network / interfaces, но это не решает проблему.
Angs

Я пропустил, что wlan3также нет шлюза, взятого из вывода ip route. Я добавил эту информацию в ответ.
Jornane

0

Из того, что вы показываете, нет никаких проблем, учитывая, что Интернет подключен к wlan3ожидается, что

ping -I wlan2 google.com

не будет работать, в зависимости от версии ping, -Iлибо означает отправку пакета из определенного интерфейса, либо использует адрес интерфейсов в качестве адреса источника.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.