LINUX.ORG.RU

Не получается firewall для программной точки доступа

 ,


0

1

«Поднял» программную точку доступа на настольном компьютере-

dhcpd.conf:

ddns-update-style none;
option domain-name bsm_TestHostapd;
option domain-name-servers 192.168.0.6 ;

# Организуем сеть на 16 адресов
subnet 192.168.249.0 netmask 255.255.255.240 {
    option routers 192.168.249.1;
    range 192.168.249.2 192.168.249.14;
    option broadcast-address 192.168.249.15;

    default-lease-time 600;
    max-lease-time 7200;
    log-facility local7;
}

hostapd.conf:

interface=wlp2s5
driver=nl80211
ssid=bsm_TestHostapd
hw_mode=g
channel=7
macaddr_acl=0
auth_algs=1
max_num_sta=5
wpa=3
wpa_passphrase=OpenOnePaly4
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP
ignore_broadcast_ssid=0
logger_syslog=-1
logger_syslog_level=3
logger_stdout=-1
logger_stdout_level=2

firewall:

iptables -t nat -A POSTROUTING -o wlp2s5 -j SNAT --to-source 192.168.249.1
iptables -A FORWARD -i wlp2s5 -o enp2s4 -j ACCEPT
iptables -A FORWARD -i enp2s4 -o wlp2s5 -j ACCEPT

echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward 
С ноутбука соединился с программной точкой доступа и получил адрес 192.168.249.2. ping c него на точку доступа выполняется, но выйти в Интернет нет возможности, как и с интерфейса точки доступа.
Информация с компьютера на котором организована программная точка доступа:

ifconfig..
wlp2s5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.249.1  netmask 255.255.255.0  broadcast 192.168.249.255
        inet6 fe80::12fe:edff:fe5e:9280  prefixlen 64  scopeid 0x20<link>
        ether 10:fe:ed:5e:92:80  txqueuelen 1000  (Ethernet)
        RX packets 108  bytes 13202 (12.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 145  bytes 18800 (18.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

iwconfig..
wlp2s5    IEEE 802.11bgn  Mode:Master  Tx-Power=19 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          
route..
Kernel IP routing table
Destination         Gateway            Genmask              Flags Metric Ref    Use Iface
default                vavan-archlinux 0.0.0.0                 UG    0        0        0 enp2s4
192.168.0.0       *                         255.255.255.0     U      0        0        0 enp2s4
192.168.0.0       *                         255.255.255.0     U      203    0        0 enp2s7
192.168.249.0   *                         255.255.255.240 U      0        0        0 wlp2s5

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i wlp2s5 -o enp2s4 -j ACCEPT
-A FORWARD -i enp2s4 -o wlp2s5 -j ACCEPT
-A POSTROUTING -o wlp2s5 -j SNAT --to-source 192.168.249.1

Table filter..
Chain INPUT (policy ACCEPT 7553 packets, 1785K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  wlp2s5 enp2s4  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  enp2s4 wlp2s5  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 6555 packets, 682K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Table nat..
Chain PREROUTING (policy ACCEPT 1856 packets, 185K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 925 packets, 116K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 2990 packets, 313K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 2986 packets, 312K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    4   336 SNAT       all  --  *      wlp2s5  0.0.0.0/0            0.0.0.0/0            to:192.168.249.1

ping -c 3 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=2.95 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.168 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=0.181 ms

--- 192.168.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.168/1.100/2.951/1.308 ms

ping -c 3 192.168.0.2 -I wlp2s5
PING 192.168.0.2 (192.168.0.2) from 192.168.249.1 wlp2s5: 56(84) bytes of data.
From 192.168.249.1 icmp_seq=1 Destination Host Unreachable
From 192.168.249.1 icmp_seq=2 Destination Host Unreachable
From 192.168.249.1 icmp_seq=3 Destination Host Unreachable

--- 192.168.0.2 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2008ms
pipe 3

ping -c 3 lib.ru
PING lib.ru (81.176.66.163) 56(84) bytes of data.
64 bytes from lib.ru (81.176.66.163): icmp_seq=1 ttl=54 time=53.0 ms
64 bytes from lib.ru (81.176.66.163): icmp_seq=2 ttl=54 time=53.0 ms
64 bytes from lib.ru (81.176.66.163): icmp_seq=3 ttl=54 time=57.5 ms

--- lib.ru ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 53.025/54.551/57.584/2.161 ms

ping -c 3 lib.ru -I wlp2s5
PING lib.ru (81.176.66.163) from 192.168.249.1 wlp2s5: 56(84) bytes of data.
From old-server (192.168.249.1) icmp_seq=1 Destination Host Unreachable
From old-server (192.168.249.1) icmp_seq=2 Destination Host Unreachable
From old-server (192.168.249.1) icmp_seq=3 Destination Host Unreachable

--- lib.ru ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 1999ms
pipe 3
Как исправить firewall?


Задействуйте NAT «маскарадинг» (MASQUERADE) и укажите шлюзом на клиентской машине ПК с точкой доступа.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Выполнил. Получил нижеследующее:

route..
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         vavan-archlinux 0.0.0.0         UG    0      0        0 enp2s4
192.168.0.0     *               255.255.255.0   U     0      0        0 enp2s4
192.168.0.0     *               255.255.255.0   U     203    0        0 enp2s7
192.168.249.0   *               255.255.255.0   U     0      0        0 wlp2s5

Table filter..
Chain INPUT (policy ACCEPT 936 packets, 98444 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    5   332 ACCEPT     all  --  wlp2s5 enp2s4  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  enp2s4 wlp2s5  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 105 packets, 8336 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Table nat..
..
Chain POSTROUTING (policy ACCEPT 66 packets, 4464 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    9   756 MASQUERADE  all  --  *      wlp2s5  0.0.0.0/0            0.0.0.0/0           

ping -c 3 192.168.249.2
PING 192.168.249.2 (192.168.249.2) 56(84) bytes of data.
64 bytes from 192.168.249.2: icmp_seq=1 ttl=64 time=2.95 ms
64 bytes from 192.168.249.2: icmp_seq=2 ttl=64 time=3.99 ms
64 bytes from 192.168.249.2: icmp_seq=3 ttl=64 time=7.96 ms

--- 192.168.249.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 2.953/4.970/7.963/2.159 ms

ping -c 3 192.168.249.2 -I wlp2s5
PING 192.168.249.2 (192.168.249.2) from 192.168.249.1 wlp2s5: 56(84) bytes of data.
64 bytes from 192.168.249.2: icmp_seq=1 ttl=64 time=4.53 ms
64 bytes from 192.168.249.2: icmp_seq=2 ttl=64 time=3.68 ms
64 bytes from 192.168.249.2: icmp_seq=3 ttl=64 time=5.65 ms

--- 192.168.249.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 3.683/4.622/5.650/0.807 ms

ping -c 3 lib.ru
PING lib.ru (81.176.66.163) 56(84) bytes of data.
64 bytes from lib.ru (81.176.66.163): icmp_seq=1 ttl=54 time=54.3 ms
64 bytes from lib.ru (81.176.66.163): icmp_seq=2 ttl=54 time=53.4 ms
64 bytes from lib.ru (81.176.66.163): icmp_seq=3 ttl=54 time=53.0 ms

--- lib.ru ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 53.069/53.632/54.352/0.567 ms

ping -c 3 lib.ru -I wlp2s5
PING lib.ru (81.176.66.163) from 192.168.249.1 wlp2s5: 56(84) bytes of data.
From old-server (192.168.249.1) icmp_seq=1 Destination Host Unreachable
From old-server (192.168.249.1) icmp_seq=2 Destination Host Unreachable
From old-server (192.168.249.1) icmp_seq=3 Destination Host Unreachable

--- lib.ru ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 1999ms
pipe 3
На клиентской машине установил default шлюзом 192.168.249.1. ping выполняется лишь на на точку доступа.

bsm
() автор топика
Ответ на: комментарий от kostik87

Сейчас выполняется нижеприведенное:

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

iptables -A FORWARD -i wlp2s5 -o enp2s4 -j ACCEPT
iptables -A FORWARD -i enp2s4 -o wlp2s5 -j ACCEPT
Результат выполнения:
Table filter..
Chain INPUT (policy ACCEPT 4780 packets, 685K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   28  1744 ACCEPT     all  --  wlp2s5 enp2s4  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  enp2s4 wlp2s5  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 987 packets, 123K bytes)
 pkts bytes target     prot opt in     out     source               destination         


Table nat..
Chain POSTROUTING (policy ACCEPT 272 packets, 17816 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   12  1008 MASQUERADE  all  --  *      wlp2s5  0.0.0.0/0            0.0.0.0/0           

bsm
() автор топика
Ответ на: комментарий от bsm
iptables -t nat -A POSTROUTING -o wlp2s5 -j MASQUERADE

Это можно заменить на

iptables -t nat -A POSTROUTING -s NET_ADDR/NET_MASK -j MASQUERADE
Где NET_ADDR/NET_MASK - адрес сети и маска, например 192.168.1.0/24, в которой находятся WIFI адаптеры.

iptables -A FORWARD -i wlp2s5 -o enp2s4 -j ACCEPT
iptables -A FORWARD -i enp2s4 -o wlp2s5 -j ACCEPT

Это выполнят не обязательно, у вас и так политика цепочки FORWARD ACCEPT.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Убрал-

iptables -A FORWARD -i wlp2s5 -o enp2s4 -j ACCEPT
iptables -A FORWARD -i enp2s4 -o wlp2s5 -j ACCEPT
Сделал замену на:
iptables -t nat -A POSTROUTING -s 192.168.249.0/24 -j MASQUERADE
Результат тот же:
Table filter..
Chain INPUT (policy ACCEPT 956 packets, 101K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 6 packets, 424 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 64 packets, 4696 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Table nat..
..
Chain POSTROUTING (policy ACCEPT 18 packets, 1232 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    4   311 MASQUERADE  all  --  *      *       192.168.249.0/24     0.0.0.0/0           

bsm
() автор топика
Ответ на: комментарий от kostik87

ping c клиента на 192168.249.1 идёт, но лишь на него. Файлы /proc/sys/net/ipv4/conf/all/forwarding, /proc/sys/net/ipv4/ip_forward содержат 1.

bsm
() автор топика

iptables -t nat -A POSTROUTING -o wlp2s5 -j SNAT --to-source 192.168.249.1

Итак, если я правильно понимаю, имеем такую цепочку:

(ноутбук) <---> wlp2s5 (точка доступа) enp2s4 <---> (шлюз vavan-archlinux) <---> инет

У ноутбука адрес: 192.168.249.2

У точки доступа на интерфейсе wlp2s5: адрес 192.168.249.2

Тогда всё просто. Роутинг РАБОТАЕТ, но работает только в одну сторону. Когда вы с ноутбука посылаете ping lib.ru пакет с исходным адресом 192.168.249.2 и адресом назначения 81.176.66.163 выходит из ноутбука и приходит на точку доступа, ядро по таблице route-ов перебрасывает пакет на интерфейс enp2s4, откуда он уходит в интернет. Проблема в том, что когда ответ на этот пакет идёт обратно, в какой-то момент «шлюз vavan-archlinux» должен переслать ответ на адрес 192.168.249.2, и вот он не знает, где находится 192.168.249.2, потому что в его route-таблицах такого адреса нет. Эта проблема решается двумя способами: либо надо добавить на vavan-archlinux-е маршрут для подсети 192.168.249.0/24, либо замаскировать эту подсеть на точке доступа, чтобы пакеты сети выглядели как пакеты точки.

Короче: уберите MASQUERADE с интерфейса wlp2s5 и поставьте его на интерфейсе enp2s4:
iptables -t nat -A POSTROUTING -o enp2s4 -j MASQUERADE

anonymous
()
Ответ на: комментарий от anonymous

Выполнил. Не помогло. Как поступить далее?

bsm
() автор топика
Ответ на: комментарий от anonymous

Если на шлюзе запустить tcpdump, а на точке доступа- ping ya.ru, то получим нижеприведенное:

..
08:26:25.368806 IP 192.168.0.12.35021 > 10.10.0.30.domain: 36918+ PTR? 3.134.158.93.in-addr.arpa. (43)
08:26:25.369469 IP 10.10.0.30.domain > 192.168.0.12.35021: 36918 1/2/2 PTR www.yandex.ru. (138)
08:26:25.459207 IP myhost06.ssh > 192.168.0.12.39265: Flags [P.], seq 19256:20092, ack 1, win 320, length 836
08:26:25.459759 IP 192.168.0.12.39265 > myhost06.ssh: Flags [.], ack 20092, win 5227, length 0
08:26:26.345938 IP 192.168.0.12 > www.yandex.ru: ICMP echo request, id 18512, seq 18, length 64
08:26:26.369685 IP www.yandex.ru > 192.168.0.12: ICMP echo reply, id 18512, seq 18, length 64
08:26:26.370275 IP 192.168.0.12.54481 > myhost06.domain: 31429+ PTR? 3.134.158.93.in-addr.arpa. (43)
08:26:26.370314 IP myhost06 > 192.168.0.12: ICMP myhost06 udp port domain unreachable, length 79
08:26:26.370796 IP 192.168.0.12.34754 > 10.10.0.30.domain: 31429+ PTR? 3.134.158.93.in-addr.arpa. (43)
08:26:26.371470 IP 10.10.0.30.domain > 192.168.0.12.34754: 31429 1/2/2 PTR www.yandex.ru. (138)
..
Если же на точке доступа запустим- ping ya.ru -I wlp2s5, то получим нижеприведенное:
..
08:30:59.264233 IP 192.168.0.12.39265 > myhost06.ssh: Flags [.], ack 2844, win 5227, length 0
08:30:59.689042 IP 192.168.0.12.49187 > myhost06.domain: 24633+ PTR? 1.249.168.192.in-addr.arpa. (44)
08:30:59.689102 IP myhost06 > 192.168.0.12: ICMP myhost06 udp port domain unreachable, length 80
08:30:59.689515 IP 192.168.0.12.34081 > 10.10.0.30.domain: 24633+ PTR? 1.249.168.192.in-addr.arpa. (44)
08:30:59.690246 IP 10.10.0.30.domain > 192.168.0.12.34081: 24633 NXDomain* 0/1/0 (79)
08:30:59.690970 IP 192.168.0.12.52883 > myhost06.domain: 23275+ PTR? 1.249.168.192.in-addr.arpa. (44)
08:30:59.690994 IP myhost06 > 192.168.0.12: ICMP myhost06 udp port domain unreachable, length 80
08:30:59.691578 IP 192.168.0.12.34872 > 10.10.0.30.domain: 23275+ PTR? 1.249.168.192.in-addr.arpa. (44)
08:30:59.692275 IP 10.10.0.30.domain > 192.168.0.12.34872: 23275 NXDomain* 0/1/0 (79)
08:30:59.693526 IP 192.168.0.12.55401 > myhost06.domain: 54283+ PTR? 1.249.168.192.in-addr.arpa. (44)
08:30:59.693566 IP myhost06 > 192.168.0.12: ICMP myhost06 udp port domain unreachable, length 80
08:30:59.693978 IP 192.168.0.12.38211 > 10.10.0.30.domain: 54283+ PTR? 1.249.168.192.in-addr.arpa. (44)
08:30:59.694662 IP 10.10.0.30.domain > 192.168.0.12.38211: 54283 NXDomain* 0/1/0 (79)
^C

bsm
() автор топика
Ответ на: комментарий от anonymous

Спасибо всем участвовавшим в обсуждении темы. После изменении в dhcpd.conf строки-

option domain-name-servers 192.168.0.6 ;
на строку-
option domain-name-servers 10.10.0.30;
всё заработало,- я указал не тот адрес DNS. Тема закрыта.

bsm
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.