Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Отладка iptables REDIRECT, который ведет себя нехорошо  (Прочитано 624 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн cyber_eagle

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Здрасте! Пытаюсь сделать вот, что: (цель: прокси для приложения с поощью namespace)

iptables -tnat -F && iptables -tfilter -F;

ip netns add pr1;
ip link add pr1if0 type veth peer name pr1if1;
ip link set dev pr1if1 netns pr1;

ip route add local 172.20.1.1 dev pr1if0;
ifconfig pr1if0 up;
ip route add 172.20.1.0/24 dev pr1if0 src 172.20.1.1;

ip netns exec pr1 ifconfig lo up;
ip netns exec pr1 ip route add local 172.20.1.2 dev pr1if1;
ip netns exec pr1 ifconfig pr1if1 up;
ip netns exec pr1 ip route add 172.20.1.0/24 dev pr1if1 src 172.20.1.2;
ip netns exec pr1 ip route add default via 172.20.1.1 src 172.20.1.2;

iptables -t nat -A PREROUTING -p tcp -i pr1if0 -j REDIRECT --to-port 9040;

#test
nc -lp 9040 -v &
ip netns exec pr1 nc 172.20.1.1 789;
Проблема в том, что на 9040 соединения не приходят. Причем «ip netns exec pr1 ping 172.20.1.1» пингуется.

Проверял счетчик iptables - при попытках соединится пакеты проходят через правило redirect, но дальше пропадают непонятно куда... Думал, чтото не то с iptables, но на физическом интефрейсе -j REDIRECT работает нормально...

Может кто нибудь отлаживал такие вещи? Буду благодарен за подсказку)

Пользователь добавил сообщение 10 Мая 2018, 00:14:29:
ip netns add pr1;
ip link add pr1if0 type veth peer name pr1if1;
ip link set dev pr1if1 netns pr1;

ip link set pr1if0 up;
ip address add 172.20.1.0/31 dev pr1if0;

ip netns exec pr1 ip link set lo up;
ip netns exec pr1 ip link set dev pr1if1 up;
ip netns exec pr1 ip address add 172.20.1.1/31 dev pr1if1;
ip netns exec pr1 ip route add default via 172.20.1.0 dev pr1if1 src 172.20.1.1;

iptables -t nat -A PREROUTING -p tcp -i pr1if0 -j REDIRECT --to-port 9040;

nc -lp 9040 -v -w 2 &
ip netns exec pr1 nc -v 45.45.45.45 45 -w 2;

iptables -tnat -F && iptables -tfilter -F && ip netns del pr1;
exit;
-Работает
ip netns add pr1;
ip link add pr1if0 type veth peer name pr1if1;
ip link set dev pr1if1 netns pr1;

ip link set pr1if0 up;
ip route add local 172.20.1.0 dev pr1if0;
ip route add 172.20.1.0/31 dev pr1if0 src 172.20.1.0;

ip netns exec pr1 ip link set lo up;
ip netns exec pr1 ip link set dev pr1if1 up;
ip netns exec pr1 ip address add 172.20.1.1/31 dev pr1if1;
ip netns exec pr1 ip route add default via 172.20.1.0 dev pr1if1 src 172.20.1.1;

iptables -t nat -A PREROUTING -p tcp -i pr1if0 -j REDIRECT --to-port 9040;

nc -lp 9040 -v -w 2 &
ip netns exec pr1 nc -v 45.45.45.45 45 -w 2;

iptables -tnat -F && iptables -tfilter -F && ip netns del pr1;
exit;
-Не работает (но 172.20.1.0 пингуется с namespace; в wireshark видно, что SYN приходит; счетчик iptables правила увеличивается)
« Последнее редактирование: 10 Мая 2018, 00:14:29 от cyber_eagle »

Оффлайн cyber_eagle

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
ip netns add pr1;
ip link add pr1if0 type veth peer name pr1if1;
ip link set dev pr1if1 netns pr1;

ip link set pr1if0 up;
ip address add 1.1.1.1/32 dev pr1if0;
ip route add local 172.20.1.0 dev pr1if0;
ip route add 172.20.1.0/31 dev pr1if0 src 172.20.1.0;

ip netns exec pr1 ip link set lo up;
ip netns exec pr1 ip link set dev pr1if1 up;
ip netns exec pr1 ip address add 172.20.1.1/31 dev pr1if1;
ip netns exec pr1 ip route add default via 172.20.1.0 dev pr1if1 src 172.20.1.1;

iptables -t nat -A PREROUTING -p tcp -i pr1if0 -j REDIRECT --to-port 9040;

nc -lp 9040 -v -w 2 &
ip netns exec pr1 nc -v 45.45.45.45 45 -w 2;

iptables -tnat -F && iptables -tfilter -F && ip netns del pr1;
exit;
И так работает...

Выходит, что ip address делает чтото еще, кроме заполнения таблицы, хотя судя по strace, выполняют действия с тем же сокетом

«ip address add 172.16.20.20/24 dev veth0»:
sendmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"(\0\0\0\24\0\5\6\376\311\366Z\0\0\0\0\2\30\0\0\3\0\0\0\10\0\2\0\254\20\24\24"..., 40}], msg_controllen=0, msg_flags=0}, 0) = 40
 * 40 bytes in buffer 0
 | 00000  28 00 00 00 14 00 05 06  fe c9 f6 5a 00 00 00 00  (..........Z.... |
 | 00010  02 18 00 00 03 00 00 00  08 00 02 00 ac 10 14 14  ................ |
 | 00020  08 00 01 00 ac 10 14 14                           ........         |
«ip route add local 172.16.20.16 dev veth1»:
sendmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{",\0\0\0\30\0\5\6t\315\366Z\0\0\0\0\2 \0\0\377\3\376\2\0\0\0\0\10\0\1\0"..., 44}], msg_controllen=0, msg_flags=0}, 0) = 44
 * 44 bytes in buffer 0
 | 00000  2c 00 00 00 18 00 05 06  74 cd f6 5a 00 00 00 00  ,.......t..Z.... |
 | 00010  02 20 00 00 ff 03 fe 02  00 00 00 00 08 00 01 00  . .............. |
 | 00020  ac 10 14 10 08 00 04 00  04 00 00 00              ............     |

 

Страница сгенерирована за 0.045 секунд. Запросов: 25.