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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Каждое приложение через своей IP  (Прочитано 1280 раз)

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

Оффлайн lex_ok

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Каждое приложение через своей IP
« : 20 Сентября 2019, 14:00:15 »
Добрый день. Есть свой VPS и 4 выделенных IP на одном NIC. Есть задача, чтобы 4 программы каждая работала через свой IP. Вроде почти победил, используя этот пример: https://blogs.igalia.com/dpino/2016/04/10/network-namespaces/ , доработав под себя:
NS="ns2"
VETH_name="veth2"
VPEER_name="vpeer2"
VETH_ADDR="10.200.2.1"
VPEER_ADDR="10.200.2.2"
VPEER_ADDR0="10.200.2.0"
aliasIP="99.99.999.999"

ip netns del $NS &>/dev/null
ip netns add $NS
ip link add ${VETH_name} type veth peer name ${VPEER_name}
ip link set ${VPEER_name} netns $NS
ip addr add ${VETH_ADDR}/24 dev ${VETH_name}
ip link set ${VETH_name} up
ip netns exec $NS ip addr add ${VPEER_ADDR}/24 dev ${VPEER_name}
ip netns exec $NS ip link set ${VPEER_name} up
ip netns exec $NS ip link set lo up
ip netns exec $NS ip route add default via ${VETH_ADDR}
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -t nat -F
iptables -t nat -A POSTROUTING -s ${VPEER_ADDR0}/24  -j SNAT --to-source ${aliasIP}
iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
iptables -A FORWARD -i ens3 -o ${VETH_name} -j ACCEPT
iptables -A FORWARD -o ens3 -i ${VETH_name} -j ACCEPT
Далее применяю  данный скрипт к первому IP все работает. Но когда применяю ко второму (естественно поменяв все переменные), перестает работать первый. Видимо где то важна последовательность, но не пойму где.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28365
    • Просмотр профиля
Re: Каждое приложение через своей IP
« Ответ #1 : 20 Сентября 2019, 23:20:56 »
Какие именно программы?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн bezbo

  • Старожил
  • *
  • Сообщений: 1748
    • Просмотр профиля
Re: Каждое приложение через своей IP
« Ответ #2 : 20 Сентября 2019, 23:47:03 »
Но когда применяю ко второму

ip netns del $NS &>/dev/null

?

Оффлайн lex_ok

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Каждое приложение через своей IP
« Ответ #3 : 21 Сентября 2019, 07:04:52 »
Но когда применяю ко второму

ip netns del $NS &>/dev/null

?
Да, я знаю что в этой строчке удаляется namespace с таким же именем (ns2), если он уже был ранее создан. У меня для каждого ip свой namespace. Когда запускаю команду  ip netns, то показывает что у меня два namespace (ns1 и ns2).
Ответ команды iptables:
iptables -n -L -v --line-numbers
Chain INPUT (policy ACCEPT 14M packets, 13G bytes)
num   pkts bytes target     prot opt in     out     source               destination       

Chain FORWARD (policy DROP 18 packets, 1118 bytes)
num   pkts bytes target     prot opt in     out     source               destination       
1      12M   15G ACCEPT     all  --  ens3   veth1   0.0.0.0/0            0.0.0.0/0         
2      12M 1653M ACCEPT     all  --  veth1  ens3    0.0.0.0/0            0.0.0.0/0         
3        0     0 ACCEPT     all  --  ens3   veth2  0.0.0.0/0            0.0.0.0/0   
4        0     0 ACCEPT     all  --  veth2 ens3    0.0.0.0/0            0.0.0.0/0
   

Пользователь добавил сообщение 21 Сентября 2019, 07:26:13:
Какие именно программы?
Программа написана на netcore, до этого все работало на windows на net framework, но там можно было на уровне программы настроить, через какой ip работать.
« Последнее редактирование: 21 Сентября 2019, 07:26:13 от lex_ok »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28365
    • Просмотр профиля
Re: Каждое приложение через своей IP
« Ответ #4 : 21 Сентября 2019, 11:33:28 »
там можно было
Почему было?…
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

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