LINUX.ORG.RU

Задать сетевой интерфейс для программы

 , , ,


0

1

Доброго времени суток.

Подскажите, как можно форсированно задать сетевые интерфейсы для программы?

Ситуация следующая: ноут с Arch Linux, подключается через разные wifi-сети к Интернету по интерфейсу wlp1s0. При этом активируется OpenVPN-клиент через tun0-интерфейс и весь трафик направляется через него (платный VPN, паранойя).

Необходимо сделать так, чтобы некоторые запущенные пограммы, в частности RetroShare и Tomahawk, работали напрямую через wlp4s0 и не видели tun0 (необходимы рабочие UPnP, переброс портов, расшаривание дабстепа по локалке и просто незамаскированный IP).

Через Network Namespaces не получилось, посоветуйте, как можно организовать. По возможности несложный способ реализации, мне потом это еще школьникам объяснять

Через Network Namespaces не получилось

А тут можно поподробней. Почему не получилось?

Теоретически можно метить пакеты (iptables -m owner) и маршрутизировать их в отдельной таблице (ip route).

Можно заморочиться с виртуализацией, но IMHO проще было бы через Network Namespaces.

необходимы рабочие UPnP, переброс портов

Тут, также, желательно подробней. Матчить по портам, метить и отдельно маршрутизировать не выйдет?

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

А тут можно поподробней. Почему не получилось?

Дело в том, что если поместить интерфейс в один Namespace, он пропадает из основного. Если можно как-то скопировать, то это было бы идеально.

Тут, также, желательно подробней. Матчить по портам, метить и отдельно маршрутизировать не выйдет?

Нужна полноценная работа RetroShare, Tomahawk и серверов в локальной сети и доступ к ним в обход VPN из глобальной сети. Нет, я ведь не знаю, какие порты доступны в каждой конкретной сети.

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

он пропадает из основного

ip link add type veth сдает veth0 и veth1, соединенные «трубой». Один конец в Namespace, а что выходит из второго маршрутизировать как душеньке угодно.

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

Спасибо! А можно подробную последовательность команд, хотя бы примерно? Допустим, интерфейс wlp1s0 надо перебросить в namespace «direct»

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

Если честно, игрался только с натом:

sudo ip netns add foo
ip link add type veth
ip link set dev veth0 netns foo
ip netns exec foo ip link show
sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.0.100
ip a add 192.168.1.1/24 dev veth1
ip link set dev veth1 up
ip netns exec foo ip addr add 192.168.1.2/24 dev veth0
ip netns exec foo ip link set up veth0
ip netns exec foo ip route add default via 192.168.1.1
sudo ip netns exec foo bash
, правило для SNAT, да кривое. Если надо пробосить порты, то можно сделать DNAT к 192.168.1.2

Если нат не устраивает, то можно почитать тут http://www.opennet.ru/docs/RUS/LARTC/LARTC-net.html.gz#c2854_html . Единственно, как я понял вы хотите носить ноутбук по разным сетям. А в случае без ната нужно чтобы вам выдавали два IP'шника. Если короче, то вариант без ната будет в общем случае зависеть от сети к которой вы подключаетесь.

naszar
()
Последнее исправление: naszar (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.