LINUX.ORG.RU
решено ФорумAdmin

Стена огня не пропускает

 , ,


1

2

Дано:
172.25.76.249 - Файлопомойный сервер samba с интеграцией в линуксовый AD
172.25.1.1 - Пограничный маршрутизатор
172.25.1.17 - Рабочая станция linux

На марше - nftables
На рабочей станции, в файле /etc/fstab строчка

//172.25.76.249/fgarbage/IT		/home/dodik/shared	cifs	user,rw,uid=1000,gid=1000,credentials=/home/dodik/.smb	0 0

В файле .smb данные типа

username=dodik
password=password
domain=do.main

Скомандовав на рабочей станции

sudo mount -a

вываливается ошибка

mount error(111): could not connect to 172.25.76.249Unable to find suitable address.

Так-с-с… Вероятнее всего nftables на марше.
Лезу на файлопомойку, смотрю чего она там слушает.

ss -tulnp
Netid         State          Recv-Q          Send-Q                          Local Address:Port                   Peer Address:Port         Process                                            
udp           UNCONN         0               0                                   127.0.0.1:323                         0.0.0.0:*             users:(("chronyd",pid=702,fd=5))                  
udp           UNCONN         0               0                        172.25.76.249%enp1s0:68                          0.0.0.0:*             users:(("systemd-network",pid=343,fd=30))         
udp           UNCONN         0               0                               172.25.76.255:137                         0.0.0.0:*             users:(("nmbd",pid=720,fd=15))                    
udp           UNCONN         0               0                               172.25.76.249:137                         0.0.0.0:*             users:(("nmbd",pid=720,fd=14))                    
udp           UNCONN         0               0                                     0.0.0.0:137                         0.0.0.0:*             users:(("nmbd",pid=720,fd=12))                    
udp           UNCONN         0               0                               172.25.76.255:138                         0.0.0.0:*             users:(("nmbd",pid=720,fd=17))                    
udp           UNCONN         0               0                               172.25.76.249:138                         0.0.0.0:*             users:(("nmbd",pid=720,fd=16))                    
udp           UNCONN         0               0                                     0.0.0.0:138                         0.0.0.0:*             users:(("nmbd",pid=720,fd=13))                    
tcp           LISTEN         0               50                                    0.0.0.0:445                         0.0.0.0:*             users:(("smbd",pid=740,fd=28))                    
tcp           LISTEN         0               50                                    0.0.0.0:139                         0.0.0.0:*             users:(("smbd",pid=740,fd=29))                    
tcp           LISTEN         0               128                                   0.0.0.0:22                          0.0.0.0:*             users:(("sshd",pid=708,fd=6))

Аха…! Добавляю правила на сам маршрутизатор (потому как на файлопомойке всё открыто) типа

nft add rule ip filter INPUT ip saddr 172.25.1.0/24 tcp dport { 139, 445 } counter accept
nft add rule ip filter INPUT ip saddr 172.25.1.0/24 udp dport { 137, 138 } counter accept

Снова пытаюсь смотнитроваться - результат тот же

Хорошо. Отключаю последнее правило в nftables, которое звучит как counter drop монтируюсь - фиг!

Погнали траблшутить.

На марше командую

tcpdump -i enp48s0.90 src 172.25.1.17 and portrange 1-1024 and port not 22

Самба же попадает в диапазон портов 1-1024? И чтоб не фонил ssh исключаем 22 порт.
Монтируюсь на рабочей станции, а на роутере смотрю выхлоп

11:59:25.967274 IP 172.25.1.17.55692 > 172.25.76.249.microsoft-ds: Flags [S], seq 243504943, win 64240, options [mss 1460,sackOK,TS val 3606572534 ecr 0,nop,wscale 7], length 0
11:59:25.967990 IP 172.25.1.17.49322 > 172.25.76.249.netbios-ssn: Flags [S], seq 3652756034, win 64240, options [mss 1460,sackOK,TS val 3606572534 ecr 0,nop,wscale 7], length 0

Чё-та пытается проскочить. Иду на файловый сервер, командую

tcpdump -i enp1s0 src 172.25.1.17 and port not 22

Монтируюсь и тишина. Пытаюсь пинговаться, выхлоп в tcpdump файлового сервера сыплет.

Вывод. На маршрутизатор пакеты приходят. С него на файловый сервер нет. Соответственно где-то в nftables марша затык, но я же полностью отключил drop всего. Что не так-то?

Цепочка input таблицы filter маршрутизатора

table ip filter {
	chain INPUT {
		type filter hook input priority filter; policy accept;
		ct state established,related counter packets 4431 bytes 372877 accept
		ct state invalid counter packets 98 bytes 4508 drop
		iifname "lo" counter packets 0 bytes 0 accept
		icmp type echo-request meta length 93-65535 counter packets 5 bytes 1740 drop
		ip protocol icmp counter packets 279 bytes 16286 accept
		ip saddr { 172.25.1.0/24, 172.25.76.240/28 } tcp dport 22 counter packets 0 bytes 0 accept
	}

а на сам маршрутизатор (потому как на файлопомойке всё открыто) типа

nft add rule ip filter INPUT ip saddr 172.25.1.0/24 tcp dport { 139, 445 } counter accept
nft add rule ip filter INPUT ip saddr 172.25.1.0/24 udp dport { 137, 138 } counter accept

Ты добавляешь в INPUT, то есть разрешаешь подключаться по самбе к роутеру. А надо перенаправлять трафик на другой узел.

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

А надо перенаправлять трафик на другой узел

Получается надо натить? Что-то типа «сеть в которой рабочая станция через интерфейс на марше, к которой подключается рабочая станция snat на файловый сервер». Так?

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

snat нужен только если у этот маршрутизатор «не общий шлюз» для обеих сетей.
Иначе обычные маршруты и обычная цепочка FORWARD в iptables(или как она там будет называться в nftables)

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

В nftables это называется хук. Конкретно в форварде ничего не запрещено

chain FORWARD {
		type filter hook forward priority filter; policy accept;
		ct state established,related counter packets 7662849 bytes 6831164501 accept
		ct state invalid counter packets 697 bytes 30440 drop
	}
Dodik
() автор топика

Так-с-с… Вероятнее всего nftables на марше.

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

P.S. А можно узнать что за дистр юзаете? Для общего развития, у меня что в el что в debian не юзается он напрямую.

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

в таких случаях просто nftables гасят

Не могу. Это пограничный маршрутизатор. Если я его погашу, то всё у всех отвалится, включая выход в инет

что за дистр

Debian 13.
А nftables выбрал потому, как iptables уже вроде как устаревшим считается. Хочу юзать актуальное

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

Не могу. Это пограничный маршрутизатор. Если я его погашу, то всё у всех отвалится, включая выход в инет

Ну инет может отвалится в случае маскарада … ну ты не надолго.

Debian 13.

А я не считаю себя умным и просто делаю по инструкции:

ufw allow Samba
mx__ ★★★★★
()
Ответ на: комментарий от ext4

Нужно еще в ядре включить пересылку

sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

или просто сделать мост.

В смысле бридж? Но погодите, вот карта systemd-networkd

networkctl 
IDX LINK          TYPE     OPERATIONAL SETUP      
  1 lo            loopback carrier     unmanaged
  2 enp37s0       ether    routable    configured # Провайдер
  3 enp44s0       ether    off         unmanaged
  4 enp45s0       ether    off         unmanaged
  5 enp48s0       ether    carrier     configuring # Vlan'ы
  6 enp49s0       ether    routable    configured # Сеть с файлопомойкой
  7 enp48s0.93    vlan     routable    configured 
  8 enp48s0.90    vlan     routable    configured # 172.25.1.0/24
  9 enp48s0.91    vlan     routable    configured 
 10 enp48s0.92    vlan     routable    configured

Я из интерфейса enp48s0.90 без проблем подключаюсь по RDP через ремину к хосту, который висит на enp49s0. В котором кстати файлопомока и с которого через виндовый проводник зайти в расшаренную папку можно. Почему не получается к ФП подключиться?

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

Про какую пересылку тут речь если у ВАС через этот комп ходят люди в инет? ;)

P.S. Цепочка там кстати не инпут а форвард.
P.P.S. В ответку то хоть шлет самба? А то может у вас на самбе какой то фигня типа слушать только сеть …

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 3)
Ответ на: комментарий от Dodik

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


И ещё «tcpdump -i enp48s0.90 » сетевая/влан смотрят на ту сеть в которой сервер или клиент?

Atlant ★★★★★
()
Последнее исправление: Atlant (всего исправлений: 1)

Исходя из выхлопа tcpdump’a на сервере с самбой, сделал вывод, что на сервере с самбой, трафик ходит только в сети 172.25.76.240/28.
Но почему тогда я могу пропинговать с самбы другую подсеть?

Dodik
() автор топика
nft add rule ip filter INPUT ip saddr 172.25.1.0/24 tcp dport { 139, 445 } counter accept
nft add rule ip filter INPUT ip saddr 172.25.1.0/24 udp dport { 137, 138 } counter accept

Надо не в input, а в forward.

Ага, почитай справку по iptables, по сути там ничего не поменялось в подходе input / output / forward.

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

И ещё «tcpdump -i enp48s0.90 » сетевая/влан смотрят на ту сеть в которой сервер или клиент?

cat /etc/systemd/network/enp48s0.90.network 
[Match]
Name = enp48s0.90

[Network]
Address = 172.25.1.1/24

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

cat /etc/systemd/network/enp49s0.network 
[Match]
Name = enp49s0

[Network]
Address = 172.25.76.241/28

А это без влан’а. просто сеть, в которой сервер с самбой.

На маршрутизаторе из интерфейса enp48s0.90 видно всё, включая сеть с самбой

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

Надо не в input, а в forward.

Я же тут писал, что у меня в форварде ничего не запрещено. Добавлены правила только established,related. Предполагаю что остальное должно ходить без проблем

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

Давай smb.conf и ip ro с самбы сервера.

smb.conf

ip ro
default via 172.25.76.241 dev enp1s0 proto dhcp src 172.25.76.249 metric 1024 
95.154.112.75 via 172.25.76.241 dev enp1s0 proto dhcp src 172.25.76.249 metric 1024 
95.154.113.10 via 172.25.76.241 dev enp1s0 proto dhcp src 172.25.76.249 metric 1024 
172.25.76.240/28 dev enp1s0 proto kernel scope link src 172.25.76.249 metric 1024 
172.25.76.241 dev enp1s0 proto dhcp scope link src 172.25.76.249 metric 1024 
172.25.76.253 dev enp1s0 proto dhcp scope link src 172.25.76.249 metric 1024 
172.25.76.254 dev enp1s0 proto dhcp scope link src 172.25.76.249 metric 1024

Хм. Белые адреса - это DNS’ы провайдера. 172.25.76.253 и 172.25.76.254 это контроллеры домена. Почему они маршрутятся тут?

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

Стоп. Мы точно про форвард маршрутизатора говорим? Тот самый что в инет фигачит? И он сквозняк? хм.

Да. Это форвард марша, но это таблица input. Для инета же используется таблица nat.
Для полной картины выкладываю все правила

table ip filter {
	chain INPUT {
		type filter hook input priority filter; policy accept;
		ct state established,related counter packets 91 bytes 7996 accept
		ct state invalid counter packets 0 bytes 0 drop
		iifname "lo" counter packets 0 bytes 0 accept
		icmp type echo-request meta length 93-65535 counter packets 0 bytes 0 drop
		ip protocol icmp counter packets 0 bytes 0 accept
		ip saddr { 172.25.1.0/24, 172.25.76.240/28 } tcp dport 22 counter packets 0 bytes 0 accept
		counter packets 0 bytes 0 drop
	}

	chain FORWARD {
		type filter hook forward priority filter; policy accept;
		ct state established,related counter packets 1434 bytes 575500 accept
		ct state invalid counter packets 1 bytes 40 drop
	}

	chain OUTPUT {
		type filter hook output priority filter; policy accept;
	}
}
table ip nat {
	chain PREROUTING {
		type nat hook prerouting priority dstnat; policy accept;
		udp dport 60000 counter packets 0 bytes 0 dnat to 172.25.76.242:60000
	}

	chain POSTROUTING {
		type nat hook postrouting priority srcnat; policy accept;
		ip saddr { 172.25.1.0/24, 172.25.76.240/28, 172.25.91.0/29, 172.25.91.32/27 } oifname "enp37s0" snat to мой-белый-ip
	}
}
Dodik
() автор топика
Последнее исправление: Dodik (всего исправлений: 1)
Ответ на: комментарий от kostik87

Какая политика по умолчанию для цепочки forward?

...
type filter hook forward priority filter; policy accept;
...

Ну в конце какое слово?

Dodik
() автор топика
Последнее исправление: Dodik (всего исправлений: 2)
Ответ на: комментарий от mx__

Это сокращённое написание команды ip route list / ip route из пакета iproute2.

Утилита route считается устаревшей.

Вот сравнение двух выводов:

route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.88.1    0.0.0.0         UG    0      0        0 enp0s3
192.168.88.0    0.0.0.0         255.255.255.0   U     0      0        0 enp0s3
ip route list
default via 192.168.88.1 dev enp0s3 onlink
192.168.88.0/24 dev enp0s3 proto kernel scope link src 192.168.88.106
kostik87 ★★★★★
()
Ответ на: комментарий от Dodik

172.25.76.253 и 172.25.76.254 это контроллеры домена. Почему они маршрутятся тут?

Кто то подумал что это не влазит в 28.

Белые адреса - это DNS’ы провайдера.

Какие еще провайдера? Они и так улетят на дефаульт … :(

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)

Господа, вопрос решён! В очередной раз невнимательность подвела. Мне даже стыдно сказать что я навертел, из-за чего это не работало =)

В любом случае всем откликнувшимся спасибо большое!

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

ХЗ зачем добавлены маршруты отдельно через IP шлюза

95.154.112.75 via 172.25.76.241 dev enp1s0 proto dhcp src 172.25.76.249 metric 1024 
95.154.113.10 via 172.25.76.241 dev enp1s0 proto dhcp src 172.25.76.249 metric 1024 

И маршруты до IP адресов в том же сегменте сети, что и IP адрес на интерфейсе

172.25.76.241 dev enp1s0 proto dhcp scope link src 172.25.76.249 metric 1024 
172.25.76.253 dev enp1s0 proto dhcp scope link src 172.25.76.249 metric 1024 
172.25.76.254 dev enp1s0 proto dhcp scope link src 172.25.76.249 metric 1024

Это прилетает по DHCP, ну и по сути не должно мешать, но можно удалить попробовать.

Записи должны быть две, они всё покрывают:

default via 172.25.76.241 dev enp1s0 proto dhcp src 172.25.76.249 metric 1024 
172.25.76.240/28 dev enp1s0 proto kernel scope link src 172.25.76.249 metric 1024
kostik87 ★★★★★
()