FreeBSD创建隧道

383 阅读3分钟

使用的系统

我们使用两台主机

第一台主机

主机名为freebsd,IP地址为192.168.0.22

➜  ~ uname -a
FreeBSD freebsd 14.1-RELEASE-p7 FreeBSD 14.1-RELEASE-p7 GENERIC amd64

➜  ~ hostname 
freebsd

➜  ~ ifconfig 
vmx0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        options=4e403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6,HWSTATS,MEXTPG>
        ether 00:0c:29:a1:dc:4d
        inet 192.168.0.22 netmask 0xffffff00 broadcast 192.168.0.255
        media: Ethernet autoselect
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
vmx1: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        options=4e403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6,HWSTATS,MEXTPG>
        ether 00:0c:29:a1:dc:57
        inet 192.168.1.4 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=1008049<UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 16384
        options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        groups: lo
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

第二台主机

主机名为freebsd_node2,IP地址为192.168.0.18

root@freebsd_node2:~ # uname -a
FreeBSD freebsd_node2 14.3-RELEASE FreeBSD 14.3-RELEASE releng/14.3-n271432-8c9ce319fef7 GENERIC amd64
root@freebsd_node2:~ # hostname 
freebsd_node2
root@freebsd_node2:~ # ifconfig 
vmx0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        options=4e403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6,HWSTATS,MEXTPG>
        ether 00:0c:29:fe:34:6c
        inet 192.168.0.18 netmask 0xffffff00 broadcast 192.168.0.255
        media: Ethernet autoselect
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
vmx1: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
        options=4e403bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6,HWSTATS,MEXTPG>
        ether 00:0c:29:fe:34:76
        inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=1008049<UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 16384
        options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        groups: lo
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

创建网卡

在第一台主机上操作如下

创建隧道

➜  ~ ifconfig gif0 create
➜  ~ ifconfig gif0
gif0: flags=8010<POINTOPOINT,MULTICAST> metric 0 mtu 1280
        options=80000<LINKSTATE>
        groups: gif
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        
# 创建一个隧道,本端192.168.0.22,对端192.168.0.18
➜  ~ ifconfig gif0 tunnel 192.168.0.22 192.168.0.18

# 在隧道之下建立一个私有网络,本端10.1.1.1,对端10.1.1.2
➜  ~ ifconfig gif0 10.1.1.1 10.1.1.2

查看下gif0接口信息

➜  ~ ifconfig gif0
gif0: flags=1008051<UP,POINTOPOINT,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 1280
        options=80000<LINKSTATE>
        tunnel inet 192.168.0.22 --> 192.168.0.18
        inet 10.1.1.1 --> 10.1.1.2 netmask 0xff000000
        groups: gif
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

image.png

在第二台主机下进行如下操作

root@freebsd_node2:~ # ifconfig gif0 create
root@freebsd_node2:~ # ifconfig gif0 tunnel 192.168.0.18 192.168.0.22
root@freebsd_node2:~ # ifconfig gif0 10.1.1.2 10.1.1.1

查看下gif0接口信息

root@freebsd_node2:~ # ifconfig gif0 
gif0: flags=1008051<UP,POINTOPOINT,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 1280
        options=80000<LINKSTATE>
        tunnel inet 192.168.0.18 --> 192.168.0.22
        inet 10.1.1.2 --> 10.1.1.1 netmask 0xff000000
        groups: gif
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        

image.png

测试

在第一台主机上ping第二台主机

➜  ~ ping 10.1.1.2
PING 10.1.1.2 (10.1.1.2): 56 data bytes
64 bytes from 10.1.1.2: icmp_seq=0 ttl=64 time=4.442 ms
64 bytes from 10.1.1.2: icmp_seq=1 ttl=64 time=3.295 ms
64 bytes from 10.1.1.2: icmp_seq=2 ttl=64 time=0.671 ms
64 bytes from 10.1.1.2: icmp_seq=3 ttl=64 time=0.617 ms
64 bytes from 10.1.1.2: icmp_seq=4 ttl=64 time=0.469 ms
64 bytes from 10.1.1.2: icmp_seq=5 ttl=64 time=0.519 ms
^C
--- 10.1.1.2 ping statistics ---
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.469/1.669/4.442/1.591 ms

在第二台主机上ping第一台主机

root@freebsd_node2:~ # ping 10.1.1.1
PING 10.1.1.1 (10.1.1.1): 56 data bytes
64 bytes from 10.1.1.1: icmp_seq=0 ttl=64 time=2.654 ms
64 bytes from 10.1.1.1: icmp_seq=1 ttl=64 time=0.716 ms
64 bytes from 10.1.1.1: icmp_seq=2 ttl=64 time=0.600 ms
64 bytes from 10.1.1.1: icmp_seq=3 ttl=64 time=2.459 ms
64 bytes from 10.1.1.1: icmp_seq=4 ttl=64 time=0.699 ms
64 bytes from 10.1.1.1: icmp_seq=5 ttl=64 time=0.627 ms
^C
--- 10.1.1.1 ping statistics ---
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.600/1.292/2.654/0.896 ms