Score:0

การเชื่อมโยงบน Linux โดยใช้อุปกรณ์ TAP (Virtualbox)

ธง cz

การเชื่อมโยงบน Linux โดยใช้อุปกรณ์ TAP

สวัสดี ฉันมีสคีมาต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่ เพื่อให้สามารถ ping รีโมตโฮสต์ได้ แยกโฮสต์1 ในกรณีของฉัน ฉันใช้อุปกรณ์บริดจ์ br0 ซึ่งรวม tap0 + eth2 บนเซิร์ฟเวอร์และบริดจ์เครือข่ายท้องถิ่น (192.168.111.0/24) กับไคลเอนต์ openvpn ระยะไกล (vpn2) แต่ ยังไม่มีโชค คุณช่วยแนะนำสิ่งที่ฉันทำผิดได้ไหม

ฉันสามารถ ping: vpn1 -> vpn2 vpn2 -> vpn1 vpn1 -> แยกโฮสต์ 1 ฉันไม่สามารถ ping แยก host1 จาก vpn2 (ไคลเอนต์) และในทางกลับกัน (ไม่สามารถเข้าถึงโฮสต์ปลายทางได้)

Server.conf

#การกำหนดค่าเซิร์ฟเวอร์
โปรโตคอล udp
พอร์ต 1194
คีย์คงอยู่
คงอยู่-tun
Keepalive 10 60
tls-auth /etc/openvpn/movpn/ta.key 0
ไคลเอนต์ remote-cert-tls
dh /etc/openvpn/movpn/dh2048.pem
ca /etc/openvpn/movpn/ca.crt
ใบรับรอง /etc/openvpn/movpn/server.crt
คีย์ /etc/openvpn/movpn/server.key
ผู้ใช้ไม่มีใคร
กลุ่มโนกรุ๊ป
# ใช้ âgroup 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

สคริปต์ที่นำเสนอ br0 อินเทอร์เฟซ:

 #!/bin/bash
 br="br0"
 แตะ = "แตะ 0"
 eth = "เอท 2"
 br_ip="192.168.111.101"
 br_netmask="255.255.255.0"
 br_broadcast="192.168.111.255"
 # สร้างอะแดปเตอร์แตะ
 openvpn --mktun --dev $แตะ
 # สร้างสะพานและเพิ่มส่วนต่อประสาน
 brctl บวกbr $br
 brctl บวก $br $eth
 brctl addif $br $แตะ
 #ตั้งค่าสะพาน
 ifconfig $tap 0.0.0.0 เพิ่มขึ้น
 ifconfig $eth 0.0.0.0 เพิ่มขึ้น
 ifconfig $br $br_ip netmask $br_netmask ออกอากาศ $br_broadcast

ป้อนคำอธิบายรูปภาพที่นี่

จากการแก้ไขปัญหาของฉัน เซิร์ฟเวอร์ไม่ส่งต่อแพ็กเก็ต icmp ไปยัง Separatehost1 ฉันไม่รู้ว่าทำไม...

ป้อนคำอธิบายรูปภาพที่นี่

root@vpn1:/etc/openvpn/movpn# ลิงก์ ip -d แสดง br0
12: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT กลุ่มเริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ 08:00:27:6c:77:40 brd ff:ff:ff:ff:ff:ff ความสำส่อน 0 
    บริดจ์ 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 dedicated_root 8000.8:0:27:6c:77:40 root_port 0 root_pathology_change ted topde_change ted topde_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 1,000 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 numtxqueues 1 gso5ขนาด 6_max3queues 1 so_max_segs 65535 
root@vpn1:/etc/openvpn/movpn# ลิงค์ไอพี
1: จริง: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    ลิงค์ / ย้อนกลับ 00:00:00:00:00:00 brd 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 brd 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 state UP โหมด DEFAULT กลุ่มเริ่มต้น qlen 1,000
    ลิงค์/อีเธอร์ 08:00:27:6c:77:40 brd 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 mode DEFAULT กลุ่มเริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ 08:00:27:6c:77:40 brd ff:ff:ff:ff:ff:ff

root@separatehosts1:~# ไอพี
1: จริง: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN กลุ่มเริ่มต้น qlen 1,000
    ลิงค์ / ย้อนกลับ 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 ขอบเขตโฮสต์เลย
       valid_lft ตลอดไป reserved_lft ตลอดไป
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel สถานะกลุ่ม UP เริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ 08:00:27:b4:26:99 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 ขอบเขตโกลบอลไดนามิก eth0
       valid_lft 76182 วินาทีที่ต้องการ_lft 76182 วินาที
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP กลุ่มเริ่มต้น qlen 1,000
    ลิงค์/อีเธอร์ 08:00:27:a5:4b:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.111.102/24 brd 192.168.111.255 ขอบเขต eth1 ทั่วโลก
       valid_lft ตลอดไป reserved_lft ตลอดไป

root@vpn1:/etc/openvpn/movpn# ไอพี
1: จริง: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN กลุ่มเริ่มต้น qlen 1,000
    ลิงค์ / ย้อนกลับ 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 ขอบเขตโฮสต์เลย
       valid_lft ตลอดไป reserved_lft ตลอดไป
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel สถานะกลุ่ม UP เริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ 08:00:27:b4:26:99 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 ขอบเขตโกลบอลไดนามิก eth0
       valid_lft 75325วินาทีที่ต้องการ_lft 75325วินาที
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP กลุ่มเริ่มต้น qlen 1,000
    ลิงค์/อีเธอร์ 08:00:27:db:97:af brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.101/24 brd 192.168.33.255 ขอบเขต global eth1
       valid_lft ตลอดไป reserved_lft ตลอดไป
4: eth2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP กลุ่มเริ่มต้น qlen 1,000
    ลิงค์/อีเธอร์ 08:00:27:6c:77:40 brd ff:ff:ff:ff:ff:ff
    ลิงค์ขอบเขต inet6 fe80::a00:27ff:fe6c:7740/64 
       valid_lft ตลอดไป reserved_lft ตลอดไป
11: tap0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state 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 กลุ่มเริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ 08:00:27:6c:77:40 brd ff:ff:ff:ff:ff:ff
    inet 192.168.111.101/24 brd 192.168.111.255 ขอบเขตทั่วโลก br0
       valid_lft ตลอดไป reserved_lft ตลอดไป
root@vpn2:/etc/openvpn/movpn# ไอพี
1: จริง: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN กลุ่มเริ่มต้น qlen 1,000
    ลิงค์ / ย้อนกลับ 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 ขอบเขตโฮสต์เลย
       valid_lft ตลอดไป reserved_lft ตลอดไป
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel สถานะกลุ่ม UP เริ่มต้น qlen 1000
    ลิงค์/อีเธอร์ 08:00:27:b4:26:99 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 ขอบเขตโกลบอลไดนามิก eth0
       valid_lft 75777วินาทีที่ต้องการ_lft 75777วินาที
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP กลุ่มเริ่มต้น qlen 1,000
    ลิงค์/อีเธอร์ 08:00:27:d8:ad:47 brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.102/24 brd 192.168.33.255 ขอบเขต global eth1
       valid_lft ตลอดไป reserved_lft ตลอดไป
9: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN กลุ่มเริ่มต้น qlen 100
    ลิงค์/อีเธอร์ 2a:2f:98:b3:34:81 brd ff:ff:ff:ff:ff:ff
    inet 192.168.111.128/24 brd 192.168.111.255 ขอบเขต tap0 ทั่วโลก
       valid_lft ตลอดไป reserved_lft ตลอดไป
in flag
ฉันจะขอผลลัพธ์จาก `ip a` แต่ฉันขอแนะนำให้คุณใช้ `tcpdump` เพื่อลองหาว่าทราฟฟิกไปที่ใดและถ้า "กลับมา"
Marat Gainutdinov avatar
cz flag
เพิ่มภาพหน้าจอเพิ่มเติมด้วยเอาต์พุต __ip a__
Nikita Kipriyanov avatar
za flag
ให้เรา [ดำเนินการสนทนาต่อในการแชท](https://chat.stackexchange.com/rooms/131343/discussion-between-nikita-kipriyanov-and-marat-gainutdinov)
Score:1
ธง cz

VirtualBox ตามค่าเริ่มต้นจะใช้การกรองตาม MAC ตรงในรหัสสวิตช์เสมือน มันรู้ที่อยู่ MAC ของ VM และไม่ส่งแพ็กเก็ตอื่นใด (นอกเหนือจากมัลติคาสต์และการออกอากาศ) เหตุผลก็คือความปลอดภัย - มิฉะนั้น VM อาจพยายามเปลี่ยนเส้นทางการรับส่งข้อมูล ฯลฯ เป็นต้น

หลังจากผ่านไปหลายชั่วโมง ฉันรีบูตโฮสต์ทั้งหมดและทราฟฟิกเริ่มผ่านอุโมงค์ ดูเหมือนว่าสวิตช์เสมือนของ 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 ms
64 ไบต์จาก 192.168.111.128: icmp_seq=2 ttl=64 เวลา=2.50 ms
64 ไบต์จาก 192.168.111.128: icmp_seq=3 ttl=64 เวลา=2.42 ms
64 ไบต์จาก 192.168.111.128: icmp_seq=4 ttl=64 เวลา=1.57 ms
64 ไบต์จาก 192.168.111.128: icmp_seq=5 ttl=64 เวลา=2.53 ms
^ซี
--- สถิติ ping 192.168.111.128 ---
ส่ง 5 แพ็กเก็ต 5 ได้รับ 0% แพ็กเก็ตสูญหาย เวลา 4258ms
rtt นาที/เฉลี่ย/สูงสุด/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 ms
64 ไบต์จาก 192.168.111.102: icmp_seq=2 ttl=64 เวลา=2.02 ms
64 ไบต์จาก 192.168.111.102: icmp_seq=3 ttl=64 เวลา=2.15 ms
64 ไบต์จาก 192.168.111.102: icmp_seq=4 ttl=64 เวลา=1.71 ms
64 ไบต์จาก 192.168.111.102: icmp_seq=5 ttl=64 เวลา=2.63 ms
^ซี
--- สถิติ ping 192.168.111.102 ---
ส่ง 5 แพ็กเก็ต, 5 แพ็กเก็ตที่ได้รับ, การสูญเสียแพ็กเก็ต 0%, เวลา 4009ms
rtt นาที/เฉลี่ย/สูงสุด/mdev = 1.214/1.946/2.634/0.474 มิลลิวินาที
Nikita Kipriyanov avatar
za flag
โปรดทำเครื่องหมายโซลูชันว่ายอมรับแล้ว
Marat Gainutdinov avatar
cz flag
คุณสามารถยอมรับคำตอบของคุณเองได้ในวันพรุ่งนี้ โอเค

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา