← All posts tagged iptables

Strephil

Разобрался, почему пакеты не приходили!
Нужно было написать -A INPUT -i lo -j ACCEPT
у меня было написано -s 127.0.0.1, но это же не одно и то же! потому что у этих пакетов -s как раз другой, у них -d 127.0.0.1.

Strephil

В настройках systemd к одному из интерфейсов у меня написано:
[Network]
DHCP=yes
IPForward=ipv4
IPMasquerade=yes

и в таблице nat появляется строчка:
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all — 192.168.0.0/24 0.0.0.0/0

Если эту таблицу сбросить, то подмена адреса прекращается. Но вот что удивительно, адрес-то меняется не на 192.168.0.16, а на адрес другого интерфейса… Хотя, там же в этом дополнительном правиле и не говорится ничего про интерфейс (почему?).

Strephil

Я прописал правило:
$ iptables -t nat -A OUTPUT -p udp --dport 555 -j REDIRECT --to-ports 5555
Даю команду
$ nc -u ya.ru 556
Это другой порт, он никуда не перенаправляется, поэтому я вижу в tcpdump вполне ожидаемые пакеты:
192.168.0.16.48741 > 87.250.250.242.556
Теперь я пробую
$ nc -u ya.ru 555
и с помощью tcpdump я вижу, что пакеты теперь почему-то имеют другой src-адрес! Не 192.168.0.16, а другого сетевого интерфейса, не буду его палить!
Кроме того, я запускаю
$ nc -l -u localhost 5555
и этих пакетов не вижу! Они почему-то не доходят… Где же они теряются?

На ноутбуке почему-то работает.

Strephil

Я у мамы админ локалхоста, и я что-то не очень понимаю, как работает -j REDIRECT.
Напердолил тестовую программки, запускаю на ноутбуке — всё работает. Пакеты перенаправляются, куда надо.

Но я смотрю на них в tcpdump, а там:
192.168.13.138.34288 > 127.0.0.1.5555: UDP

меня это смущает :)

Сейчас буду разбираться, почему на десктопе не работает :)