示例:在 Linux 下使用 tinc 橋接以太網(wǎng)段
通常,在默認(rèn)路由器模式下,tinc 將僅隧道傳輸 IPv4 和 IPv6
單播數(shù)據(jù)包。但是,自 1.0pre5 以來,有一個選項可以讓 tinc 守護(hù)程序充當(dāng)交換機或集線器(使用 Mode 配置變量)。此模式對于
tinc 傳遞非基于 IP 的協(xié)議(NetBEUI、AppleTalk、IPX 等)以及允許某些應(yīng)用程序(沒有 WINS 服務(wù)器的
Windows“網(wǎng)絡(luò)鄰居”等)中的基于廣播的功能在使用 tinc 創(chuàng)建的 VPN 上是必需的。
在交換機和集線器模式下,廣播數(shù)據(jù)包會廣播到其他守護(hù)進(jìn)程,并且(在交換機模式下)MAC 地址會從其他 tinc 守護(hù)進(jìn)程動態(tài)學(xué)習(xí),以便路由數(shù)據(jù)包。在這些模式下,tinc 可用作兩個或多個以太網(wǎng)段之間的橋梁。
橋接允許 VPN 中的所有節(jié)點共享同一子網(wǎng)。但是,如果這是橋接的唯一原因,并且您不需要隧道傳輸廣播或非 IP 數(shù)據(jù)包,那么您也可以使用代理 ARP來代替橋接。
概述
網(wǎng)絡(luò)設(shè)置如下:
兩側(cè)的內(nèi)部網(wǎng)絡(luò)均為 192.168.0.0/16
主機自身在內(nèi)網(wǎng)的IP地址為192.168.10.20
每個網(wǎng)段的網(wǎng)關(guān)都有一個外部接口
eth0 和一個內(nèi)部接口 eth1。此外,還將創(chuàng)建一個名為“bridge”的橋接接口,并將內(nèi)部接口設(shè)為此橋接的從屬接口。tinc
使用的虛擬網(wǎng)絡(luò)接口也將是從屬接口。內(nèi)核配置除了手冊的配置內(nèi)核部分中描述的標(biāo)準(zhǔn)內(nèi)核配置外,還需要將橋接設(shè)備添加到內(nèi)核配置中。
要將橋接設(shè)備添加到
Linux 2.4.0 及更高版本的內(nèi)核,請選擇“網(wǎng)絡(luò)選項”下的 802.1d
以太網(wǎng)橋接選項。您可以將此選項編譯為模塊,也可以將其構(gòu)建到內(nèi)核中。接口配置交換機和集線器模式要求 tinc VPN
的兩側(cè)都包含在同一子網(wǎng)中(在此示例中,子網(wǎng)為 192.168.0.0/16)。這與用實際交換機或集線器替換 tinc 所需的配置沒有區(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 的配置
請注意,交換機和集線器模式不使用主機文件中的
Subnet 變量。相反,橋接接口收到的任何數(shù)據(jù)包都將傳遞到 TUN/TAP 設(shè)備進(jìn)行處理。如果您的 tinc
實例在集線器模式下運行,則所有數(shù)據(jù)包都將轉(zhuǎn)發(fā)到遠(yuǎn)程 tinc 實例。在交換機模式下,tinc 維護(hù)一個 ARP
緩存,以確定是否應(yīng)將任何收到的數(shù)據(jù)包轉(zhuǎn)發(fā)到遠(yuǎn)程 tinc 實例。
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)路由。
如果您希望能夠在橋接接口上過濾數(shù)據(jù)包,則需要一個支持ebtables的內(nèi)核。