LINUX.ORG.RU
ФорумAdmin

Помогите понять работу iptables

 ,


0

1

Привет. Есть на сервере VPN Wireguard, в docker запущен DNS сервер pi-hole. Наружу проброшены порты 53 и 80 из докера, что бы DNS был доступен и его админка. Мне нужно что бы днс и админка были доступны только внутри VPN сети. Сейчас VPN отключен. Делаю с своего локалхоста

dig -t A ya.ru @<pi-hole-server-ip>

он отвечает нормально, резолвит адрес. Но я не понимаю почему, в правилах все кроме VPN и SSH закрыто вроде. При этом делаю на самом серваке куда я по ssh подключился

dig -t A ya.ru @<wireguard-interface-ip>
dig -t A ya.ru @<pi-hole-server-ip>
dig -t A ya.ru @127.0.0.1

не овечает. Одновременно такое

curl http://<pi-hole-server-ip>:80

один раз ответило и затихло когда вызывал с своего локалхоста, при этом изнутри сервера не отвечало никогда. Помогите разобраться в правилах, я только начал вникать как они работают и вероятно не понимаю чего то. Сами правила.

# Generated by iptables-save v1.8.7 on Thu Aug 10 08:30:46 2023
*filter
:INPUT DROP [195:10870]
:FORWARD DROP [26:1870]
:OUTPUT ACCEPT [6821:537827]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A INPUT -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp ! --dport 56777 -j DROP
-A INPUT -i eth0 -p udp -m udp ! --dport 51820 -j DROP
-A INPUT -i eth0 -p tcp -m tcp --dport 56777 -m recent --update --seconds 60 --hitcount 6 --name SSH --mask 255.255.255.255 --rsource -j DROP
-A INPUT -i eth0 -p tcp -m tcp --dport 56777 -m recent --set --name SSH --mask 255.255.255.255 --rsource -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 51820 -j ACCEPT
-A INPUT -i wg0 -j ACCEPT
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o br-a34535bd1500 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-a34535bd1500 -j DOCKER
-A FORWARD -i br-a34535bd1500 ! -o br-a34535bd1500 -j ACCEPT
-A FORWARD -i br-a34535bd1500 -o br-a34535bd1500 -j ACCEPT
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wg0 -j ACCEPT
-A DOCKER -d 172.18.0.2/32 ! -i br-a34535bd1500 -o br-a34535bd1500 -p tcp -m tcp --dport 80 -j ACCEPT
-A DOCKER -d 172.18.0.2/32 ! -i br-a34535bd1500 -o br-a34535bd1500 -p tcp -m tcp --dport 53 -j ACCEPT
-A DOCKER -d 172.18.0.2/32 ! -i br-a34535bd1500 -o br-a34535bd1500 -p udp -m udp --dport 53 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i br-a34535bd1500 ! -o br-a34535bd1500 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o br-a34535bd1500 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
COMMIT
# Completed on Thu Aug 10 08:30:46 2023
# Generated by iptables-save v1.8.7 on Thu Aug 10 08:30:46 2023
*nat
:PREROUTING ACCEPT [68541:9815794]
:INPUT ACCEPT [41:2701]
:OUTPUT ACCEPT [2043:106845]
:POSTROUTING ACCEPT [2014:104848]
:DOCKER - [0:0]
-A PREROUTING -i eth0 -p udp -m multiport --dports 123,1194 -j REDIRECT --to-ports 51820
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.18.0.0/16 ! -o br-a34535bd1500 -j MASQUERADE
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -s 172.18.0.2/32 -d 172.18.0.2/32 -p tcp -m tcp --dport 80 -j MASQUERADE
-A POSTROUTING -s 172.18.0.2/32 -d 172.18.0.2/32 -p tcp -m tcp --dport 53 -j MASQUERADE
-A POSTROUTING -s 172.18.0.2/32 -d 172.18.0.2/32 -p udp -m udp --dport 53 -j MASQUERADE
-A DOCKER -i br-a34535bd1500 -j RETURN
-A DOCKER -i docker0 -j RETURN
-A DOCKER ! -i br-a34535bd1500 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.18.0.2:80
-A DOCKER ! -i br-a34535bd1500 -p tcp -m tcp --dport 53 -j DNAT --to-destination 172.18.0.2:53
-A DOCKER ! -i br-a34535bd1500 -p udp -m udp --dport 53 -j DNAT --to-destination 172.18.0.2:53
COMMIT
# Completed on Thu Aug 10 08:30:46 2023

На всякий случай маршрутизация

default via 193.42.36.1 dev eth0 onlink 
10.156.12.0/24 dev wg0 proto kernel scope link src 10.156.12.1 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.18.0.0/16 dev br-a34535bd1500 proto kernel scope link src 172.18.0.1 
193.42.36.0/24 dev eth0 proto kernel scope link src 193.42.36.76 

Там еще wireguard запущен, так что есть таблицы маршрутизации его стандартные.



Последнее исправление: leave (всего исправлений: 1)
Ответ на: комментарий от anc

Я все там же и пояснил. Но уже не важно. Думаю можно закончить.

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

Как выяснилось для того что бы дебажить iptables не надо ничего ставить, есть простая трассировка, можно хоть все, хоть, что надо

iptables -t raw -A OUTPUT -p icmp -j TRACE
iptables -t raw -A PREROUTING -p icmp -j TRACE
xtables-monitor --trace

Очень понятная и простая. Оставлю, может кто искать будет.

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

Так же, может кто искать будет. За счет нормального трассировщика я за 10 минут нашел ответ. Суть в MTU, когда поставил 1200, все запахало. Сам ответ нашел тут: https://superuser.com/questions/1558828/tcp-handshake-failed-after-forward-lan-connection-through-vpn Как только понял, что ACK проходит, а потом тишина нагуглить не составило труда. Чуть позже просто ICMP на серваке разрешу.

А спецов с гонором не люблю я, не стоят они того как себя ведут.

i3draven
() автор топика
Последнее исправление: i3draven (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.