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

OpenVPN bridge

 , ,


0

1

Привет, всем! У меня следующая ситуация: есть файлопомойка, которая крутится на оффтопике. Хочется организовать к ней доступ извне по VPN. Для обеспечения доступа пытаюсь настроить OpenVPN в режиме моста на линуксовой машине. Изначально настроил OpenVPN в режиме роутинга и оно работало, затем начал перенастраивать в режим моста, но довести до конца так и не смог. После запуска bridge-start у меня отваливается связь с внешним миром на сервере. Буду очень благодарен, если подскажете как найти проблему (в данный момент я грешу на неправильную настройку моста).

конфиг OpenVPN

port 1194
proto udp
dev tap0

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem

ifconfig-pool-persist ipp.txt
server-bridge 192.168.1.5 255.255.255.0 192.168.1.128 192.168.1.254

keepalive 10 120
comp-lzo

user nobody
group nobody

persist-key
persist-tun

status openvpn-status.log
verb 3

скрипт bridge-start

br="br0"
tap="tap0"
eth="eth0"
eth_ip="192.168.1.5"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.1.255"

for t in $tap; do
    openvpn --mktun --dev $t
done

brctl addbr $br
brctl addif $br $eth

for t in $tap; do
    brctl addif $br $t
done

for t in $tap; do
    ifconfig $t 0.0.0.0 promisc up
done

ifconfig $eth 0.0.0.0. promisc up

ifconfig $br $eth_if netmask $eth_netmask broadcast $eth_broadcast

соответственно запускаю сервер следующим образом:

./bridge-start
openvpn ./server.conf

выхлоп ifconfig до запуска скрипта:

eth0 Link encap:Ethernet HWaddr 00:16:e6:64:15:9a

inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0

inet6 addr: fdbc:a26d:18ba:0:216:e6ff:fe64:159a/64 Scope:Global

inet6 addr: fe80::216:e6ff:fe64:159a/64 Scope:Link

inet6 addr: fdbc:a26d:18ba:0:29b7:6c36:1b1e:e301/64 Scope:Global

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:230 errors:0 dropped:0 overruns:0 frame:0

TX packets:260 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:33883 (33.8 KB) TX bytes:31245 (31.2 KB)

Interrupt:21

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:65536 Metric:1

RX packets:437 errors:0 dropped:0 overruns:0 frame:0

TX packets:437 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:34457 (34.4 KB) TX bytes:34457 (34.4 KB)

выхлоп ifconfig после запуска скрипта

br0 Link encap:Ethernet HWaddr 00:16:e6:64:15:9a

inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0

inet6 addr: fdbc:a26d:18ba:0:60b5:37b0:d783:88b3/64 Scope:Global

inet6 addr: fdbc:a26d:18ba:0:216:e6ff:fe64:159a/64 Scope:Global

inet6 addr: fe80::216:e6ff:fe64:159a/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:13 errors:0 dropped:0 overruns:0 frame:0

TX packets:81 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:2498 (2.4 KB) TX bytes:13244 (13.2 KB)

eth0 Link encap:Ethernet HWaddr 00:16:e6:64:15:9a

inet6 addr: fdbc:a26d:18ba:0:216:e6ff:fe64:159a/64 Scope:Global

inet6 addr: fe80::216:e6ff:fe64:159a/64 Scope:Link

inet6 addr: fdbc:a26d:18ba:0:29b7:6c36:1b1e:e301/64 Scope:Global

UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1

RX packets:265 errors:0 dropped:0 overruns:0 frame:0

TX packets:352 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:38787 (38.7 KB) TX bytes:45835 (45.8 KB)

Interrupt:21

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:65536 Metric:1

RX packets:455 errors:0 dropped:0 overruns:0 frame:0

TX packets:455 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:35783 (35.7 KB) TX bytes:35783 (35.7 KB)

tap0 Link encap:Ethernet HWaddr fe:1d:18:fd:0a:98

UP BROADCAST PROMISC MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

если будут нужны еще какие-то данные, говорите - обязательно выложу

Проверять маршруты после создания бриджа. Добавить в скрипт комманды добавления нужных маршрутов. И вообще настраивать сеть скриптом не прилично. Учите man interfaces для дебиана или что там у вас.

quntm
()

А почему собственно на сервере до запуска vpn у eth0 есть ip адрес и он не в бридже?

Можно же сделать заранее:
ifconfig eth0 0.0.0.0 promisc up
brctl addif br0 eth0 И потом уже добавлять и удалять tap0 из br0

Что при этом до/после запуска выдаёт brctl show и что в

iptables -L
sysctl -a | grep bridge-nf

PS в скрипте в строчке «ifconfig $eth 0.0.0.0. promisc up» точка после 0.0.0.0 лишняя.

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

ок, посмотрю

а бридж настраиваю так, потому что этот способ описан в документации OpenVPN

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

Точка случайно затесалась в скрипт пока писал пост

вот вывод до создания бриджа:

root@tmserver:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
root@tmserver:~# brctl show
bridge name	bridge id		STP enabled	interfaces
root@tmserver:~# sysctl -a | grep bridge-nf
net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-filter-pppoe-tagged = 0
net.bridge.bridge-nf-filter-vlan-tagged = 0
net.bridge.bridge-nf-pass-vlan-input-dev = 0

вот это вывод после:

root@tmserver:~# /etc/openvpn/bridge-start 
Sun Jul 12 17:07:58 2015 TUN/TAP device tap0 opened
Sun Jul 12 17:07:58 2015 Persist state set to: ON
root@tmserver:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
root@tmserver:~# sysctl -a | grep bridge-nf
net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-filter-pppoe-tagged = 0
net.bridge.bridge-nf-filter-vlan-tagged = 0
net.bridge.bridge-nf-pass-vlan-input-dev = 0
root@tmserver:~# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.0016e664159a	no		eth0
							tap0

EugeneBas ★★
() автор топика

Господа quntm, sometyx, dzirtt спасибо, за помощь, я разобрался. Как посоветовал quntm, я покопался в манах по interfaces и двумя строками в конфиге поднял работающий бридж. Оставлю их ниже для потомков, вдруг я не один такой неосилятор:

iface br0 inet dhcp
        bridge_ports tap0 eth0

А вообще, я обнаружил, что еще крайне пользительна вот эта статья

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