Рейтинг:0

Мост в Linux с использованием TAP-устройств (Virtualbox)

флаг cz

Мост в Linux с использованием TAP-устройств

Здравствуйте, у меня есть следующая схема:

введите описание изображения здесь Чтобы иметь возможность пинговать удаленные хосты, отдельный хост1 в моем случае, я запускаю мостовое устройство br0, которое объединяет tap0 + eth2 на сервере и предназначено для соединения локальной сети (192.168.111.0/24) с удаленным клиентом openvpn (vpn2), но все еще не повезло, не могли бы вы подсказать, что я делаю неправильно

Я могу пинговать: впн1 -> впн2 впн2 -> впн1 vpn1 -> отдельный хост1 Я не могу пинговать отдельный хост1 от vpn2 (клиент) и наоборот (целевой хост недоступен).

Сервер.conf

#Конфигурация сервера
прото удп
порт 1194
постоянный ключ
упорный тун
поддержка 10 60
tls-auth /etc/openvpn/movpn/ta.key 0
клиент удаленного сертификата TLS
дх /etc/openvpn/movpn/dh2048.pem
ca /etc/openvpn/movpn/ca.crt
сертификат /etc/openvpn/movpn/server.crt
ключ /etc/openvpn/movpn/server.key
пользователь никто
группа
# используйте «группу nogroup» в Debian/Ubuntu
глагол 3
демон
добавление журнала /var/log/openvpn.log
#клиент-к-клиенту
разработчик tap0
сервер-мост 192.168.111.101 255.255.255.0 192.168.111.128 192.168.111.200

Вся схема создается с использованием Vagrantfile + net.ipv4.ip_forward = 1.

Сценарий, который вызывает бр0 интерфейс:

 #!/бин/баш
 бр="br0"
 нажмите = «нажмите 0»
 эт = "эт2"
 br_ip="192.168.111.101"
 br_netmask="255.255.255.0"
 br_broadcast="192.168.111.255"
 # Создаем переходник крана
 openvpn --mktun --dev $tap
 # Создаем мост и добавляем интерфейсы
 brctl addbr $br
 brctl addif $br $eth
 brctl addif $br $tap
 # Настраиваем мост
 ifconfig $tap 0.0.0.0 неразборчиво вверх
 ifconfig $eth 0.0.0.0 неразборчиво вверх
 ifconfig $br $br_ip сетевая маска $br_netmask широковещательная рассылка $br_broadcast

введите описание изображения здесь

исходя из моего устранения неполадок, сервер не пересылает icmp-пакеты на отдельный хост1, я не знаю, почему...

введите описание изображения здесь

root@vpn1:/etc/openvpn/movpn# ip -d ссылка показать br0
12: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state Режим UP DEFAULT group default qlen 1000
    ссылка/эфир 08:00:27:6c:77:40 brd ff:ff:ff:ff:ff:ff распущенность 0 
    bridge forward_delay 1500 hello_time 200 max_age 2000 ageing_time 30000 stp_state 0 приоритет 32768 vlan_filtering 0 vlan_protocol 802.1Q bridge_id 8000.8:0:27:6c:77:40 назначенный_рут 8000.8:0:27:6c:77:40 topchange_deected 0 root_costology 0 root_cost hello_timer    0.00 tcn_timer    0.00 topology_change_timer    0.00 gc_timer  150.00 vlan_default_pvid 1 vlan_stats_enabled 0 group_fwd_mask 0 group_address 01:80:c2:00:00:00 mcast_snooping 1 mcast_router 1 mcast_query_use_ifaddr 0 mcast_querier 0 mcast_hash_elasticity 4 mcast_hash_max 512 mcast_last_member_count 2 mcast_startup_query_count 2 mcast_last_member_interval 100 mcast_membership_interval 26000 mcast_querier_interval 25500 mcast_query_interval 12500 mcast_query_response_interval 1000 mcast_startup_query_interval 3124 mcast_stats_enabled 0 mcast_igmp_version 2 mcast_mld_version 1 nf_call_iptables 0 nf_call_ip6tables 0 nf_call_arptables 0 addrgenmode eui64 numtxgqueues 1 numx56_size 1 numrx5_size 1 numrx5_36 so_max_segs 65535 
root@vpn1:/etc/openvpn/movpn# IP-ссылка
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    ссылка/петля 00:00:00:00:00:00 брд 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel состояние UP режим DEFAULT группа по умолчанию qlen 1000
    ссылка/эфир 08:00:27:b4:26:99 брд ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel состояние UP режим DEFAULT группа по умолчанию qlen 1000
    ссылка/эфир 08:00:27:db:97:af brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 состояние UP режим DEFAULT группа по умолчанию qlen 1000
    ссылка/эфир 08:00:27:6c:77:40 брд ff:ff:ff:ff:ff:ff
11: tap0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 состояние UP режим DEFAULT группа по умолчанию qlen 100
    ссылка/эфир d6:df:32:8a:b0:5e brd ff:ff:ff:ff:ff:ff
12: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state Режим UP DEFAULT group default qlen 1000
    ссылка/эфир 08:00:27:6c:77:40 брд ff:ff:ff:ff:ff:ff

root@separatehosts1:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    ссылка/петля 00:00:00:00:00:00 брд 00:00:00:00:00:00
    инет 127.0.0.1/8 область хоста lo
       valid_lft навсегда
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel состояние UP группа по умолчанию qlen 1000
    ссылка/эфир 08:00:27:b4:26:99 брд ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 область глобальная динамическая eth0
       valid_lft 76182sec предпочитаемый_lft 76182sec
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel состояние UP группа по умолчанию qlen 1000
    ссылка/эфир 08:00:27:a5:4b:55 брд ff:ff:ff:ff:ff:ff
    инет 192.168.111.102/24 brd 192.168.111.255 глобальный охват eth1
       valid_lft навсегда

root@vpn1:/etc/openvpn/movpn# ip
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    ссылка/петля 00:00:00:00:00:00 брд 00:00:00:00:00:00
    инет 127.0.0.1/8 область хоста lo
       valid_lft навсегда
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel состояние UP группа по умолчанию qlen 1000
    ссылка/эфир 08:00:27:b4:26:99 брд ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 область глобальная динамическая eth0
       valid_lft 75325 сек. selected_lft 75 325 сек.
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel состояние UP группа по умолчанию qlen 1000
    ссылка/эфир 08:00:27:db:97:af brd ff:ff:ff:ff:ff:ff
    инет 192.168.33.101/24 brd 192.168.33.255 глобальный охват eth1
       valid_lft навсегда
4: eth2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    ссылка/эфир 08:00:27:6c:77:40 брд ff:ff:ff:ff:ff:ff
    ссылка на область inet6 fe80::a00:27ff:fe6c:7740/64 
       valid_lft навсегда
11: tap0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 состояние UP группа по умолчанию qlen 100
    ссылка/эфир d6:df:32:8a:b0:5e brd ff:ff:ff:ff:ff:ff
12: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    ссылка/эфир 08:00:27:6c:77:40 брд ff:ff:ff:ff:ff:ff
    inet 192.168.111.101/24 brd 192.168.111.255 глобальная область br0
       valid_lft навсегда
root@vpn2:/etc/openvpn/movpn# ip
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    ссылка/петля 00:00:00:00:00:00 брд 00:00:00:00:00:00
    инет 127.0.0.1/8 область хоста lo
       valid_lft навсегда
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel состояние UP группа по умолчанию qlen 1000
    ссылка/эфир 08:00:27:b4:26:99 брд ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 область действия глобальная динамическая eth0
       valid_lft 75777 сек. selected_lft 75 777 сек.
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel состояние UP группа по умолчанию qlen 1000
    ссылка/эфир 08:00:27:d8:ad:47 brd ff:ff:ff:ff:ff:ff
    инет 192.168.33.102/24 brd 192.168.33.255 глобальный охват eth1
       valid_lft навсегда
9: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel состояние НЕИЗВЕСТНО группа по умолчанию qlen 100
    ссылка/эфир 2a:2f:98:b3:34:81 brd ff:ff:ff:ff:ff:ff
    инет 192.168.111.128/24 brd 192.168.111.255 глобальная область действия tap0
       valid_lft навсегда
флаг in
Я бы попросил вывод от `ip a`, но я бы также рекомендовал вам использовать `tcpdump`, чтобы попытаться выяснить, куда уходит трафик, и если он «возвращается».
Marat Gainutdinov avatar
флаг cz
добавлены дополнительные скриншоты с выводом __ip a__.
Nikita Kipriyanov avatar
флаг za
Давайте [продолжим обсуждение в чате](https://chat.stackexchange.com/rooms/131343/discussion-between-nikita-kipriyanov-and-marat-gainutdinov).
Рейтинг:1
флаг cz

VirtualBox по умолчанию использует фильтрацию на основе MAC-адресов прямо в коде виртуального коммутатора. Он знает MAC-адрес виртуальной машины и не доставляет никаких других пакетов (кроме многоадресных и широковещательных). Причина, конечно, в безопасности - иначе виртуальная машина может попытаться перенаправить трафик и т.д.

Через несколько часов я перезагрузил все хосты и трафик начал идти через туннель, мне кажется виртуальный коммутатор Virtualbox обнаружил, что у меня созданы дополнительные интерфейсы и до перезагрузки блокировал их после перезагрузки arp запросы и весь трафик начал нормально работать: )

Надеюсь, этот ответ сэкономит ваше время.

отдельный хост1 -> vpn2

root@separatehosts1:~# пинг 192.168.111.128
PING 192.168.111.128 (192.168.111.128) 56 (84) байт данных.
64 байта от 192.168.111.128: icmp_seq=1 ttl=64 время=2,62 мс
64 байта от 192.168.111.128: icmp_seq=2 ttl=64 время=2,50 мс
64 байта от 192.168.111.128: icmp_seq=3 ttl=64 время=2,42 мс
64 байта от 192.168.111.128: icmp_seq=4 ttl=64 время=1,57 мс
64 байта от 192.168.111.128: icmp_seq=5 ttl=64 время=2,53 мс
^ С
--- Статистика пинга 192.168.111.128 ---
5 пакетов передано, 5 получено, 0% потери пакетов, время 4258 мс
rtt min/avg/max/mdev = 1,571/2,333/2,624/0,386 мс

vpn2 -> отдельный хост1

root@vpn2:~# пинг 192.168.111.102
PING 192.168.111.102 (192.168.111.102) 56 (84) байт данных.
64 байта от 192.168.111.102: icmp_seq=1 ttl=64 время=1,21 мс
64 байта от 192.168.111.102: icmp_seq=2 ttl=64 время=2,02 мс
64 байта от 192.168.111.102: icmp_seq=3 ttl=64 время=2,15 мс
64 байта от 192.168.111.102: icmp_seq=4 ttl=64 время=1,71 мс
64 байта от 192.168.111.102: icmp_seq=5 ttl=64 время=2,63 мс
^ С
--- Статистика пинга 192.168.111.102 ---
5 пакетов передано, 5 получено, 0% потери пакетов, время 4009 мс
rtt min/avg/max/mdev = 1,214/1,946/2,634/0,474 мс
Nikita Kipriyanov avatar
флаг za
Пожалуйста, отметьте решение как принятое
Marat Gainutdinov avatar
флаг cz
Вы можете принять свой собственный ответ завтра, хорошо

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.