tranger Опубликовано 12 июня, 2018 · Жалоба Добрый день. Стоит Centos 7. Есть интерфейс eth0 с 253 белыми IP адресами: 1.1.1.2 - 1.1.1.254 Требуется с помощью iptables настроить редирект следующим образом: При подключении к 127.0.0.1:100 трафик должен пойти к 1.2.3.4:10001 через 1.1.1.2 При подключении к 127.0.0.1:101 трафик должен пойти к 1.2.3.4:10001 через 1.1.1.3 и т.д. Подскажите как это реализовать. Спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zhenya` Опубликовано 12 июня, 2018 · Жалоба Snat + dnat? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
murano Опубликовано 12 июня, 2018 · Жалоба Лаба, что ли? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 12 июня, 2018 · Жалоба 2 часа назад, zhenya` сказал: Snat + dnat? Мало, ещё рдр/фвд нужен чтобы в правильный нехтхоп выплюнуть. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vop Опубликовано 12 июня, 2018 · Жалоба 3 hours ago, Ivan_83 said: Мало, ещё рдр/фвд нужен чтобы в правильный нехтхоп выплюнуть. Ну для этого рулезы есть. ip rule Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 12 июня, 2018 · Жалоба На базе conntrack/nat root@bpi-iot-ros-ai:/home/pi# ifconfig eth0:1 192.168.3.212/24 root@bpi-iot-ros-ai:/home/pi# ifconfig eth0:2 192.168.3.213/24 sysctl net.ipv4.ip_forward=1 sysctl net.ipv4.conf.all.route_localnet=1 sysctl net.ipv4.conf.eth0.route_localnet=1 iptables -t mangle -I OUTPUT -d 127.0.0.1 -p tcp --dport 100 -j MARK --set-mark 100 iptables -t nat -I OUTPUT -d 127.0.0.1 -p tcp --dport 100 -j DNAT --to 87.250.250.242:80 iptables -t nat -I POSTROUTING -m mark --mark 100 -j SNAT --to-source 192.168.3.212 iptables -t mangle -I OUTPUT -d 127.0.0.1 -p tcp --dport 101 -j MARK --set-mark 101 iptables -t nat -I OUTPUT -d 127.0.0.1 -p tcp --dport 101 -j DNAT --to 87.250.250.242:80 iptables -t nat -I POSTROUTING -m mark --mark 101 -j SNAT --to-source 192.168.3.213 Проверка: root@bpi-iot-ros-ai:/home/pi# tcpdump -i any -n -nn -s 0 "host 87.250.250.242" & root@bpi-iot-ros-ai:/home/pi# curl http://127.0.0.1:100/ 1>/dev/null 2>/dev/null 22:57:23.028390 IP 192.168.3.212.46098 > 87.250.250.242.80: Flags [S], seq 3802718458, win 43690, options [mss 65495,sackOK,TS val 604364 ecr 0,nop,wscale 6], length 0 22:57:23.028390 IP (tos 0x0, ttl 64, id 55350, offset 0, flags [DF], proto TCP (6), length 60) 192.168.3.212.46098 > 87.250.250.242.80: Flags [S], cksum 0x1798 (incorrect -> 0xdaed), seq 3802718458, win 43690, options [mss 65495,sackOK,TS val 604364 ecr 0,nop,wscale 6], length 0 22:57:23.041198 IP (tos 0x0, ttl 47, id 39480, offset 0, flags [none], proto TCP (6), length 60) 87.250.250.242.80 > 192.168.3.212.46098: Flags [S.], cksum 0x111d (correct), seq 2877491049, ack 3802718459, win 27960, options [mss 1410,sackOK,TS val 1178536026 ecr 604364,nop,wscale 8], length 0 22:57:23.042305 IP (tos 0x0, ttl 64, id 55351, offset 0, flags [DF], proto TCP (6), length 52) 192.168.3.212.46098 > 87.250.250.242.80: Flags [.], cksum 0x1790 (incorrect -> 0xaa43), seq 1, ack 1, win 683, options [nop,nop,TS val 604366 ecr 1178536026], length 0 root@bpi-iot-ros-ai:/home/pi# curl http://127.0.0.1:101/ 1>/dev/null 2>/dev/null 22:58:09.097550 IP 192.168.3.213.33688 > 87.250.250.242.80: Flags [S], seq 3175177562, win 43690, options [mss 65495,sackOK,TS val 608971 ecr 0,nop,wscale 6], length 0 22:58:09.097550 IP (tos 0x0, ttl 64, id 6033, offset 0, flags [DF], proto TCP (6), length 60) 192.168.3.213.33688 > 87.250.250.242.80: Flags [S], cksum 0x1799 (incorrect -> 0xa26f), seq 3175177562, win 43690, options [mss 65495,sackOK,TS val 608971 ecr 0,nop,wscale 6], length 0 22:58:09.114607 IP (tos 0x0, ttl 47, id 12432, offset 0, flags [none], proto TCP (6), length 60) 87.250.250.242.80 > 192.168.3.213.33688: Flags [S.], cksum 0x376a (correct), seq 1604868565, ack 3175177563, win 27960, options [mss 1410,sackOK,TS val 1524338273 ecr 608971,nop,wscale 8], length 0 22:58:09.115193 IP (tos 0x0, ttl 64, id 6034, offset 0, flags [DF], proto TCP (6), length 52) 192.168.3.213.33688 > 87.250.250.242.80: Flags [.], cksum 0x1791 (incorrect -> 0xd090), seq 1, ack 1, win 683, options [nop,nop,TS val 608973 ecr 1524338273], length 0 Можно сделать без коннтрэка на базе tcpproxy с возможностью задавать outside ip, но это будет userland 1 час назад, vop сказал: Ну для этого рулезы есть. ip rule Довольно глупо. Плодить 253 таблицы только ради разных ip src, при этом всё равно пользоваться conntrack-ом Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 12 июня, 2018 · Жалоба 6 часов назад, Ivan_83 сказал: Мало, ещё рдр/фвд нужен чтобы в правильный нехтхоп выплюнуть. Первый пост прочитайте внимательно. Речь не про то, что надо слать на разные некстхопы, а про то что слать с разных сорсов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 13 июня, 2018 · Жалоба Тогда и правда пары натов (бинат) достаточно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
tranger Опубликовано 13 июня, 2018 · Жалоба 9 часов назад, s.lobanov сказал: На базе conntrack/nat root@bpi-iot-ros-ai:/home/pi# ifconfig eth0:1 192.168.3.212/24 root@bpi-iot-ros-ai:/home/pi# ifconfig eth0:2 192.168.3.213/24 sysctl net.ipv4.ip_forward=1 sysctl net.ipv4.conf.all.route_localnet=1 sysctl net.ipv4.conf.eth0.route_localnet=1 iptables -t mangle -I OUTPUT -d 127.0.0.1 -p tcp --dport 100 -j MARK --set-mark 100 iptables -t nat -I OUTPUT -d 127.0.0.1 -p tcp --dport 100 -j DNAT --to 87.250.250.242:80 iptables -t nat -I POSTROUTING -m mark --mark 100 -j SNAT --to-source 192.168.3.212 iptables -t mangle -I OUTPUT -d 127.0.0.1 -p tcp --dport 101 -j MARK --set-mark 101 iptables -t nat -I OUTPUT -d 127.0.0.1 -p tcp --dport 101 -j DNAT --to 87.250.250.242:80 iptables -t nat -I POSTROUTING -m mark --mark 101 -j SNAT --to-source 192.168.3.213 Проверка: root@bpi-iot-ros-ai:/home/pi# tcpdump -i any -n -nn -s 0 "host 87.250.250.242" & root@bpi-iot-ros-ai:/home/pi# curl http://127.0.0.1:100/ 1>/dev/null 2>/dev/null 22:57:23.028390 IP 192.168.3.212.46098 > 87.250.250.242.80: Flags [S], seq 3802718458, win 43690, options [mss 65495,sackOK,TS val 604364 ecr 0,nop,wscale 6], length 0 22:57:23.028390 IP (tos 0x0, ttl 64, id 55350, offset 0, flags [DF], proto TCP (6), length 60) 192.168.3.212.46098 > 87.250.250.242.80: Flags [S], cksum 0x1798 (incorrect -> 0xdaed), seq 3802718458, win 43690, options [mss 65495,sackOK,TS val 604364 ecr 0,nop,wscale 6], length 0 22:57:23.041198 IP (tos 0x0, ttl 47, id 39480, offset 0, flags [none], proto TCP (6), length 60) 87.250.250.242.80 > 192.168.3.212.46098: Flags [S.], cksum 0x111d (correct), seq 2877491049, ack 3802718459, win 27960, options [mss 1410,sackOK,TS val 1178536026 ecr 604364,nop,wscale 8], length 0 22:57:23.042305 IP (tos 0x0, ttl 64, id 55351, offset 0, flags [DF], proto TCP (6), length 52) 192.168.3.212.46098 > 87.250.250.242.80: Flags [.], cksum 0x1790 (incorrect -> 0xaa43), seq 1, ack 1, win 683, options [nop,nop,TS val 604366 ecr 1178536026], length 0 root@bpi-iot-ros-ai:/home/pi# curl http://127.0.0.1:101/ 1>/dev/null 2>/dev/null 22:58:09.097550 IP 192.168.3.213.33688 > 87.250.250.242.80: Flags [S], seq 3175177562, win 43690, options [mss 65495,sackOK,TS val 608971 ecr 0,nop,wscale 6], length 0 22:58:09.097550 IP (tos 0x0, ttl 64, id 6033, offset 0, flags [DF], proto TCP (6), length 60) 192.168.3.213.33688 > 87.250.250.242.80: Flags [S], cksum 0x1799 (incorrect -> 0xa26f), seq 3175177562, win 43690, options [mss 65495,sackOK,TS val 608971 ecr 0,nop,wscale 6], length 0 22:58:09.114607 IP (tos 0x0, ttl 47, id 12432, offset 0, flags [none], proto TCP (6), length 60) 87.250.250.242.80 > 192.168.3.213.33688: Flags [S.], cksum 0x376a (correct), seq 1604868565, ack 3175177563, win 27960, options [mss 1410,sackOK,TS val 1524338273 ecr 608971,nop,wscale 8], length 0 22:58:09.115193 IP (tos 0x0, ttl 64, id 6034, offset 0, flags [DF], proto TCP (6), length 52) 192.168.3.213.33688 > 87.250.250.242.80: Flags [.], cksum 0x1791 (incorrect -> 0xd090), seq 1, ack 1, win 683, options [nop,nop,TS val 608973 ecr 1524338273], length 0 Можно сделать без коннтрэка на базе tcpproxy с возможностью задавать outside ip, но это будет userland Довольно глупо. Плодить 253 таблицы только ради разных ip src, при этом всё равно пользоваться conntrack-ом Спасибо большое, всё работает. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
tokra Опубликовано 21 июня, 2018 · Жалоба @vop Цитата root@bpi-iot-ros-ai:/home/pi# ifconfig eth0:1 192.168.3.212/24 root@bpi-iot-ros-ai:/home/pi# ifconfig eth0:2 192.168.3.213/24 Зачем вы так делаете в линуксах в 2018 году? ^^^ Это был, больше, риторический вопрос Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vop Опубликовано 21 июня, 2018 · Жалоба 4 hours ago, tokra said: @vop Зачем вы так делаете в линуксах в 2018 году? ^^^ Это был, больше, риторический вопрос Все хорошо, но зачем вы чужую цитату подставили под мое имя? Зачем вы тек делаете? В 2018 году? И это НЕ риторический вопрос. :) :) :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 21 июня, 2018 · Жалоба 11 часов назад, tokra сказал: @vop Зачем вы так делаете в линуксах в 2018 году? ^^^ Это был, больше, риторический вопрос Я пользуюсь ifconfig-ом лишь по одной причине - вывод ifconfig (на просмотр) в миллион раз удобнее ввода нескольких команд (ip a , ip l, ip -6 a) Относительно конфигурации вообщем-то всё равно (через ifconfig или через ip a). ну и вообще это оффтоп, написал создание алиасов лишь ради того, чтобы показать где эти ip-адреса висят Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 21 июня, 2018 · Жалоба 45 минут назад, s.lobanov сказал: Я пользуюсь ifconfig-ом лишь по одной причине - вывод ifconfig (на просмотр) в миллион раз удобнее ввода нескольких команд (ip a , ip l, ip -6 a) +1, по мне, вывод более информативен, ну или скажем так привычен. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...