LINUX.ORG.RU
решено ФорумAdmin

Доступ к демонам внутри network namespace и openVPN

 , ,


0

1

День добрый. Недавно мне подсказали использовать для изоляции приложений network namespaces, что я успешно и реализовал. Но теперь проблема возникла в другом: к демонам, крутящимся там, нужно иметь доступ извне. И если с доступом из самого namespace и через openvpn туннель все понятно, то как быть с локалкой? Что интересно, из системы не получается даже пропинговать ни внешний интерфейс (veth0), ни внутренний (veth1).

veth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.10.1  netmask 255.255.255.0  broadcast 0.0.0.0
veth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.10.2  netmask 255.255.255.0  broadcast 0.0.0.0
Так же, подозреваю, это связано с тем, что openvpn создает дефолтный route:
0.0.0.0/1 via 10.8.0.1 dev tun0
128.0.0.0/1 via 10.8.0.1 dev tun0
default via 10.10.10.254 dev veth1
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
10.10.10.0/24 dev veth1 proto kernel scope link src 10.10.10.2
80.95.29.212 via 10.10.10.1 dev veth1
Настройка производилась по образу https://web.archive.org/web/20160922124826/https://habrahabr.ru/post/310646/

Ответ на: комментарий от arsik

Нет, т. к. не могу пропинговать сам namespace - значит нет доступа и к тому, что внутри.

veth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.10.1  netmask 255.255.255.0  broadcast 0.0.0.0
        inet6 fe80::d80c:ccff:fe20:5764  prefixlen 64  scopeid 0x20<link>
        ether da:0c:cc:20:57:64  txqueuelen 1000  (Ethernet)
        RX packets 8  bytes 648 (648.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 51  bytes 8338 (8.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Вот пинг:
ping 10.10.10.1
PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data.
^C
--- 10.10.10.1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2039ms

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

ip rule

0:	from all lookup local
32766:	from all lookup main
32767:	from all lookup default

ip route show t all

default via 192.168.1.1 dev eth0
10.10.10.0/24 dev veth0 proto kernel scope link src 10.10.10.1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.7
broadcast 10.10.10.0 dev veth0 table local proto kernel scope link src 10.10.10.1
local 10.10.10.1 dev veth0 table local proto kernel scope host src 10.10.10.1
broadcast 10.10.10.255 dev veth0 table local proto kernel scope link src 10.10.10.1
broadcast 127.0.0.0 dev lo table local proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
Nightfall ()
Ответ на: комментарий от arsik
*nat
:PREROUTING ACCEPT [182:24020]
:INPUT ACCEPT [181:23988]
:OUTPUT ACCEPT [153:14121]
:POSTROUTING ACCEPT [153:14121]
-A POSTROUTING -s 10.10.10.0/24 -o wl+ -j MASQUERADE
COMMIT
# Completed on Tue Dec 13 13:09:07 2016
# Generated by iptables-save v1.6.0 on Tue Dec 13 13:09:07 2016
*filter
:INPUT ACCEPT [832:100705]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [895:160119]
-A INPUT -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -p udp -m udp --dport 5353 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5353 -j ACCEPT
-A INPUT -s 10.10.10.0/24 ! -i vpn0 -j DROP
COMMIT
Nightfall ()
Ответ на: комментарий от arsik

Так, теперь я могу пинговать внутренний интерфейс, уже отлично. Интересно, зачем их запихнули в статью? Доступ к демону появился из основной системы, но из локалки можно установить ssh туннель, так что это тоже считай есть. Проблема в том, что если включить vpn, то все отваливается. Проще говоря, получается так:

telnet 10.10.10.2 9000
Trying 10.10.10.2...
telnet: Unable to connect to remote host: В соединении отказано

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

Это сделано для изоляции приложения. Тебе кроме этих, нужно еще добавить правила по доступу с хоста в намеспейс приложение.

Проблема в том, что если включить vpn, то все отваливается.

Нужно смотреть настройки впна, а так же rout-ы внутри namespace

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

Роуты внутри namespace:

0.0.0.0/1 via 10.8.0.1 dev tun0
default via 10.10.10.254 dev freenet1
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
10.10.10.0/24 dev freenet1 proto kernel scope link src 10.10.10.2
80.95.29.212 via 10.10.10.1 dev freenet1
128.0.0.0/1 via 10.8.0.1 dev tun0
Настройки vpn: сервер имеет строчку

push «redirect-gateway def1 bypass-dhcp»

которая добавляет дефолтный роут, возможно проблема в этом. Но если ее отключить, то я не уверен, что в vpn вообще пойдёт что-то. Возможно, нужно 2 роута - на доступ к интернету и к локалке?

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

push «redirect-gateway def1 bypass-dhcp

Попробуй оставить только push «redirect-gateway» И добавить в конфиг клиента маршрут на внутреннюю сеть только вот я ее в маршрутизации не вижу. Покажи еще ip addr, ip link внутри namespace

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

И добавить в конфиг клиента маршрут на внутреннюю сеть

Немного ошибся в роутах, это с другого namespace. Тот, с котором я сейчас работаю (на нём тестирую, чтобы не сломать нужный) имеет все то же самое, только вместо freenet1 - veth1:

0.0.0.0/1 via 10.8.0.1 dev tun0
default via 10.10.10.254 dev veth1
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
10.10.10.0/24 dev veth1 proto kernel scope link src 10.10.10.2
80.95.29.212 via 10.10.10.1 dev veth1
128.0.0.0/1 via 10.8.0.1 dev tun0

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::944:8939:6006:699e/64 scope link flags 800
       valid_lft forever preferred_lft forever
5: veth1@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 32:41:96:d2:e1:91 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.10.10.2/24 scope global freenet1
       valid_lft forever preferred_lft forever
    inet6 fe80::3041:96ff:fed2:e191/64 scope link
       valid_lft forever preferred_lft forever

ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 100 link/none 5: veth1@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether 32:41:96:d2:e1:91 brd ff:ff:ff:ff:ff:ff link-netnsid 0

Nightfall ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.