示例:在 Linux 下使用 tinc 橋接以太網(wǎng)段
通常,在默認(rèn)路由器模式下,tinc 將僅隧道傳輸 IPv4 和 IPv6
單播數(shù)據(jù)包。但是,自 1.0pre5 以來(lái),有一個(gè)選項(xiàng)可以讓 tinc 守護(hù)程序充當(dāng)交換機(jī)或集線器(使用 Mode 配置變量)。此模式對(duì)于
tinc 傳遞非基于 IP 的協(xié)議(NetBEUI、AppleTalk、IPX 等)以及允許某些應(yīng)用程序(沒(méi)有 WINS 服務(wù)器的
Windows“網(wǎng)絡(luò)鄰居”等)中的基于廣播的功能在使用 tinc 創(chuàng)建的 VPN 上是必需的。
在交換機(jī)和集線器模式下,廣播數(shù)據(jù)包會(huì)廣播到其他守護(hù)進(jìn)程,并且(在交換機(jī)模式下)MAC 地址會(huì)從其他 tinc 守護(hù)進(jìn)程動(dòng)態(tài)學(xué)習(xí),以便路由數(shù)據(jù)包。在這些模式下,tinc 可用作兩個(gè)或多個(gè)以太網(wǎng)段之間的橋梁。
橋接允許 VPN 中的所有節(jié)點(diǎn)共享同一子網(wǎng)。但是,如果這是橋接的唯一原因,并且您不需要隧道傳輸廣播或非 IP 數(shù)據(jù)包,那么您也可以使用代理 ARP來(lái)代替橋接。
概述
網(wǎng)絡(luò)設(shè)置如下:
兩側(cè)的內(nèi)部網(wǎng)絡(luò)均為 192.168.0.0/16
主機(jī)自身在內(nèi)網(wǎng)的IP地址為192.168.10.20
每個(gè)網(wǎng)段的網(wǎng)關(guān)都有一個(gè)外部接口
eth0 和一個(gè)內(nèi)部接口 eth1。此外,還將創(chuàng)建一個(gè)名為“bridge”的橋接接口,并將內(nèi)部接口設(shè)為此橋接的從屬接口。tinc
使用的虛擬網(wǎng)絡(luò)接口也將是從屬接口。內(nèi)核配置除了手冊(cè)的配置內(nèi)核部分中描述的標(biāo)準(zhǔn)內(nèi)核配置外,還需要將橋接設(shè)備添加到內(nèi)核配置中。
要將橋接設(shè)備添加到
Linux 2.4.0 及更高版本的內(nèi)核,請(qǐng)選擇“網(wǎng)絡(luò)選項(xiàng)”下的 802.1d
以太網(wǎng)橋接選項(xiàng)。您可以將此選項(xiàng)編譯為模塊,也可以將其構(gòu)建到內(nèi)核中。接口配置交換機(jī)和集線器模式要求 tinc VPN
的兩側(cè)都包含在同一子網(wǎng)中(在此示例中,子網(wǎng)為 192.168.0.0/16)。這與用實(shí)際交換機(jī)或集線器替換 tinc 所需的配置沒(méi)有區(qū)別。
host# brctl addbr bridge
host# ifconfig bridge 192.168.10.20 netmask 255.255.0.0
host# ifconfig eth1 0.0.0.0
host# brctl addif bridge eth1
host# ifconfig eth1 up
After starting tinc:
host# brctl show
bridge name bridge id STP enabled interfaces
bridge 8000.005004003002 yes eth1
vpn
host# ifconfig
eth0 Link encap:Ethernet HWaddr 00:20:30:40:50:60
inet addr:123.234.123.42 Bcast:123.234.123.255 Mask:255.255.255.0
UP BROADCAST RUNNING MTU:1500 Metric:1
...
eth1 Link encap:Ethernet HWaddr 00:11:22:33:44:55
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
...
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3856 Metric:1
...
bridge Link encap:Ethernet HWaddr 00:11:22:33:44:55
inet addr:192.168.10.20 Bcast:192.168.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
vpn Link encap:Ethernet HWaddr 00:11:22:33:44:55
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
...
host# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
123.234.123.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 * 255.255.0.0 U 0 0 0 bridge
default 123.234.123.1 0.0.0.0 UG 0 0 0 eth0
tinc 的配置
請(qǐng)注意,交換機(jī)和集線器模式不使用主機(jī)文件中的
Subnet 變量。相反,橋接接口收到的任何數(shù)據(jù)包都將傳遞到 TUN/TAP 設(shè)備進(jìn)行處理。如果您的 tinc
實(shí)例在集線器模式下運(yùn)行,則所有數(shù)據(jù)包都將轉(zhuǎn)發(fā)到遠(yuǎn)程 tinc 實(shí)例。在交換機(jī)模式下,tinc 維護(hù)一個(gè) ARP
緩存,以確定是否應(yīng)將任何收到的數(shù)據(jù)包轉(zhuǎn)發(fā)到遠(yuǎn)程 tinc 實(shí)例。
host# cat /etc/tinc/vpn/tinc.conf
Name = segment1
Mode = switch
ConnectTo = segment2
host# cat /etc/tinc/vpn/tinc-up
#!/bin/sh
ifconfig $INTERFACE 0.0.0.0
brctl addif bridge $INTERFACE
ifconfig $INTERFACE up
host# ls /etc/tinc/vpn/hosts
segment1 segment2 ...
host# cat /etc/tinc/vpn/hosts/segment1
Address = 123.234.123.42
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
host# cat /etc/tinc/vpn/hosts/segment2
Address = 200.201.202.203
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
附加配置
如果添加到網(wǎng)橋的以太網(wǎng)接口用于默認(rèn)路由,則需要重新添加默認(rèn)路由。
如果您希望能夠在橋接接口上過(guò)濾數(shù)據(jù)包,則需要一個(gè)支持ebtables的內(nèi)核。
24小時(shí)免費(fèi)咨詢
請(qǐng)輸入您的聯(lián)系電話,座機(jī)請(qǐng)加區(qū)號(hào)