如何使用ISC KEA DHCP(DHCPv4)服务器将路由推送到客户端?

爱德华多·卢西奥(Eduardo Lucio)

问题:

我有一个包含5个服务器(服务器#1,#2,#3,#4和#5)的基础架构。我正在尝试使用具有ISC KEA DHCP(DHCPv4)(https://kea.isc.org/wiki的服务器(服务器#5)将路由推送到其他服务器(服务器#1,#2,#3和# 4)。目标是所有服务器都可以使用2号和3号服务器(VPN隧道)之间的LAN与其他服务器(pingssh等)进行通信


服务器:

Server #1 - DHCPv4 Client;
Server #2 - DHCPv4 Client and OpenVPN Server;
Server #3 - DHCPv4 Client and OpenVPN Client;
Server #4 - DHCPv4 Client;
Server #5 - ISC KEA DHCP (DHCPv4).

子网:

192.168.56.0/24
10.1.2.0/24
10.1.4.0/24
10.1.6.0/24
10.8.0.1/24 (VPN tunnel)

服务器设置:

注意:此处介绍的基础结构是我在VirtualBox上创建的用于运行测试的测试环境的一部分(不是真实环境)。例如,所有服务器上都存在192.168.56.0/24网络。

有关每台服务器的LAN(网络接口)的信息...

服务器#1

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:56:84:1f brd ff:ff:ff:ff:ff:ff
    inet 10.1.6.3/24 brd 10.1.6.255 scope global noprefixroute dynamic enp0s8
       valid_lft 3514sec preferred_lft 3514sec
    inet6 fe80::a00:27ff:fe56:841f/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:12:26:e2:6c brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.3/24 brd 192.168.56.255 scope global noprefixroute dynamic enp0s17
       valid_lft 3606sec preferred_lft 3606sec
    inet6 fe80::a00:12ff:fe26:e26c/64 scope link 
       valid_lft forever preferred_lft forever

服务器#2

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:2c:d1:58 brd ff:ff:ff:ff:ff:ff
    inet 10.1.6.4/24 brd 10.1.6.255 scope global noprefixroute dynamic enp0s8
       valid_lft 3856sec preferred_lft 3856sec
    inet6 fe80::a00:27ff:fe2c:d158/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:1c:a6:b9:59 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.4/24 brd 192.168.56.255 scope global noprefixroute dynamic enp0s17
       valid_lft 3897sec preferred_lft 3897sec
    inet6 fe80::a00:1cff:fea6:b959/64 scope link 
       valid_lft forever preferred_lft forever
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::ec75:f69e:e65c:1215/64 scope link flags 800 
       valid_lft forever preferred_lft forever

服务器#3

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:71:77:07 brd ff:ff:ff:ff:ff:ff
    inet 10.1.4.5/24 brd 10.1.4.255 scope global noprefixroute dynamic enp0s8
       valid_lft 3741sec preferred_lft 3741sec
    inet6 fe80::a00:27ff:fe71:7707/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:ea:4e:40:ae brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.5/24 brd 192.168.56.255 scope global noprefixroute dynamic enp0s17
       valid_lft 3766sec preferred_lft 3766sec
    inet6 fe80::a00:eaff:fe4e:40ae/64 scope link 
       valid_lft forever preferred_lft forever
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.6/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::6763:9d85:a754:bf0f/64 scope link flags 800 
       valid_lft forever preferred_lft forever

服务器#4

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:e0:d2:c8 brd ff:ff:ff:ff:ff:ff
    inet 10.1.4.6/24 brd 10.1.4.255 scope global noprefixroute dynamic enp0s8
       valid_lft 3907sec preferred_lft 3907sec
    inet6 fe80::a00:27ff:fee0:d2c8/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:aa:e7:60 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.6/24 brd 192.168.56.255 scope global noprefixroute dynamic enp0s17
       valid_lft 3907sec preferred_lft 3907sec
    inet6 fe80::a00:27ff:feaa:e760/64 scope link 
       valid_lft forever preferred_lft forever

服务器#5

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:63:ce:c5 brd ff:ff:ff:ff:ff:ff
    inet 10.1.2.2/24 brd 10.1.2.255 scope global noprefixroute enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe63:cec5/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:98:ee:35 brd ff:ff:ff:ff:ff:ff
    inet 10.1.4.2/24 brd 10.1.4.255 scope global noprefixroute enp0s9
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe98:ee35/64 scope link 
       valid_lft forever preferred_lft forever
4: enp0s10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:b6:6b:50 brd ff:ff:ff:ff:ff:ff
    inet 10.1.6.2/24 brd 10.1.6.255 scope global noprefixroute enp0s10
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:feb6:6b50/64 scope link 
       valid_lft forever preferred_lft forever
5: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:78:ed:d4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.2/24 brd 192.168.56.255 scope global noprefixroute enp0s17
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe78:edd4/64 scope link 
       valid_lft forever preferred_lft forever

谢谢!

爱德华多·卢西奥(Eduardo Lucio)

关于此答案(教程):

本教程旨在演示ISC KEA DHCP(DHCPv4)配置和部署的“成功案例”。特别演示路由到DHCP客户端的推送。对于具体案例,还考虑了其​​他要点,以使演示更具说服力。

在特定情况下(使用VirtualBox进行模拟),我们使用OpenVPN隧道,并演示了如何进行路由以在LAN-TO-LAN基础结构中以两种方式使用它。

本教程的构建考虑了以下情形:我们在Internet上有一台服务器(Serverloft),在VPN的一端运行虚拟机管理程序(Xen),在VPN的另一端运行一个公司LAN,这两个网络的所有服务器都能够运行以透明的方式进行交流。

在本教程中会考虑其他因素,建议您完整阅读。

我们觉得有必要做本教程,因为在互联网上找不到像它这样的“实用”的东西。本教程还针对像我们这样在此处介绍的基本概念上有较大困难的读者。

在继续之前,我们要感谢在此过程中提供帮助的许多人。特别感谢用户:@Filipe Brandenburger,@Rui F Ribeiro,@AB,@Isaac,@slm和其他人(不幸的是我们不能引用所有人)。

本教程中的服务器:

Server #1 - DHCPv4 Client (ips ending with 3);
Server #2 - DHCPv4 Client and OpenVPN Server (ips ending with 4);
Server #3 - DHCPv4 Client and OpenVPN Client (ips ending with 5);
Server #4 - DHCPv4 Client (ips ending with 6);
Server #5 - ISC KEA DHCP (DHCPv4) Server (ips ending with 2).

注意:所有服务器均为CentOS 7。

子网:

192.168.56.0/24
10.1.2.0/24
10.1.4.0/24
10.1.6.0/24
10.8.0.1/24 (VPN tunnel)

服务器#5-ISC KEA DHCP(DHCPv4)服务器:

在CentOS 7上安装ISC KEA DHCP(DHCPv4)

yum -y install gcc-c++ openssl-devel wget

cd /usr/local/src/
wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz
tar -zxvf boost_1_67_0.tar.gz
cd boost_1_67_0
./bootstrap.sh
./b2 install
rm -rf /usr/local/src/boost_1_67_0*

cd /usr/local/src/
wget https://github.com/log4cplus/log4cplus/releases/download/REL_2_0_1/log4cplus-2.0.1.tar.gz
tar zxvf log4cplus-2.0.1.tar.gz
cd log4cplus-2.0.1
./configure
make
make install
rm -rf /usr/local/src/log4cplus-2.0.1*

cd /usr/local/src/
wget https://ftp.isc.org/isc/kea/1.4.0/kea-1.4.0.tar.gz
tar zxvf kea-1.4.0.tar.gz
cd kea-1.4.0
./configure --enable-shell
make
make install
rm -rf /usr/local/src/kea-1.4.0*

在systemd(systemctl)中为KEA服务创建设置(启动设置)...

vi'/usr/lib/systemd/system/kea-dhcp4.service'

[Unit]
Description=Kea DHCPv4 Server
Documentation=man:kea-dhcp4(8)
Wants=network-online.target
After=network-online.target
After=time-sync.target

[Service]
ExecStart=/usr/local/sbin/kea-dhcp4 -c /usr/local/etc/kea/kea-dhcp4.conf

[Install]
WantedBy=multi-user.target

vi'/usr/lib/systemd/system/kea-dhcp6.service'

[Unit]
Description=Kea DHCPv6 Server
Documentation=man:kea-dhcp6(8)
Wants=network-online.target
After=network-online.target
After=time-sync.target

[Service]
ExecStart=/usr/local/sbin/kea-dhcp6 -c /usr/local/etc/kea/kea-dhcp6.conf

[Install]
WantedBy=multi-user.target

vi'/usr/lib/systemd/system/kea-dhcp-ddns.service'

[Unit]
Description=Kea DHCP-DDNS Server
Documentation=man:kea-dhcp-ddns(8)
Wants=network-online.target
After=network-online.target
After=time-sync.target

[Service]
ExecStart=/usr/local/sbin/kea-dhcp-ddns -c /usr/local/etc/kea/kea-dhcp-ddns.conf

[Install]
WantedBy=multi-user.target

创建(调整)配置文件“ /usr/local/etc/kea/kea-dhcp4.conf” ...

cp '/usr/local/etc/kea/kea-dhcp4.conf' '/usr/local/etc/kea/kea-dhcp4.conf_BAK'

vi'/usr/local/etc/kea/kea-dhcp4.conf'

{
    "Dhcp4": {
        "interfaces-config": {
            "interfaces": ["enp0s8", "enp0s9", "enp0s10", "enp0s17"]
        },
        "control-socket": {
            "socket-type": "unix",
            "socket-name": "/tmp/kea-dhcp4-ctrl.sock"
        },
        "lease-database": {
            "type": "memfile",
            "lfc-interval": 1800
        },
        "expired-leases-processing": {
            "reclaim-timer-wait-time": 10,
            "flush-reclaimed-timer-wait-time": 25,
            "hold-reclaimed-time": 3600,
            "max-reclaim-leases": 100,
            "max-reclaim-time": 250,
            "unwarned-reclaim-cycles": 5
        },
        "valid-lifetime": 4000,
        "renew-timer": 1000,
        "rebind-timer": 2000,

        // Defines the "rfc3442-classless-static-routes" option.
        // More details https://unix.stackexchange.com/a/460147/61742 .
        "option-def": [{
                "name": "rfc3442-classless-static-routes",
                "code": 121,
                "space": "dhcp4",
                "type": "record",
                "array": true,
                "record-types": "uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8"
            }
        ],

        "subnet4": [{
                "interface": "enp0s8",
                "subnet": "10.1.2.0/24",
                "pools": [{
                        "pool": "10.1.2.3 - 10.1.2.254"
                    }
                ]
            }, {
                "interface": "enp0s9",
                "subnet": "10.1.4.0/24",
                "pools": [{
                        "pool": "10.1.4.3 - 10.1.4.254"
                    }
                ],

                // Reserve ips for the interfaces that have these MAC ADDRESS on that network.
                "reservations": [{
                        // Server 3# (4)
                        "hw-address": "08:00:27:71:77:07",
                        "ip-address": "10.1.4.5"
                    }, {
                        // Server 4# (6)
                        "hw-address": "08:00:27:e0:d2:c8",
                        "ip-address": "10.1.4.6"
                    }
                ],

                // Defines a route to be pushed to this subnet.
                // More details https://unix.stackexchange.com/a/460147/61742 .
                "option-data": [{
                        "name": "rfc3442-classless-static-routes",
                        "data": "24,10,1,6,10,1,4,5"
                    }
                ]

            }, {
                "interface": "enp0s10",
                "subnet": "10.1.6.0/24",
                "pools": [{
                        "pool": "10.1.6.3 - 10.1.6.254"
                    }
                ],

                // Reserve ips for the interfaces that have these MAC ADDRESS on that network.
                "reservations": [{
                        // Server 1# (3)
                        "hw-address": "08:00:27:56:84:1f",
                        "ip-address": "10.1.6.3"
                    }, {
                        // Server 2# (4)
                        "hw-address": "08:00:27:2c:d1:58",
                        "ip-address": "10.1.6.4"
                    }
                ],

                // Defines a route to be pushed to this subnet.
                // More details https://unix.stackexchange.com/a/460147/61742 .
                "option-data": [{
                        // Server 3# (4) e Server 4# (6)
                        "name": "rfc3442-classless-static-routes",
                        "data": "24,10,1,4,10,1,6,4"
                    }
                ]

            }, {
                "interface": "enp0s17",
                "subnet": "192.168.56.0/24",
                "pools": [{
                        "pool": "192.168.56.3 - 192.168.56.254"
                    }
                ],
                "option-data": [{
                        "name": "domain-name-servers",
                        "data": "192.168.56.1"
                    }, {
                        "name": "routers",
                        "data": "192.168.56.1"
                    }
                ],

                // Reserve ips for the interfaces that have these MAC ADDRESS on that network.
                "reservations": [{
                        // Server 1# (3)
                        "hw-address": "08:00:12:26:e2:6c",
                        "ip-address": "192.168.56.3"
                    }, {
                        // Server 2# (4)
                        "hw-address": "08:00:1c:a6:b9:59",
                        "ip-address": "192.168.56.4"
                    }, {
                        // Server 3# (5)
                        "hw-address": "08:00:ea:4e:40:ae",
                        "ip-address": "192.168.56.5"
                    }, {
                        // Server 4# (6)
                        "hw-address": "08:00:27:aa:e7:60",
                        "ip-address": "192.168.56.6"
                    }
                ]
            }
        ]
    },
    "Logging": {
        "loggers": [{
                "name": "kea-dhcp4",
                "output_options": [{
                        "output": "/usr/local/var/log/kea-dhcp4.log"
                    }
                ],
                "severity": "INFO",
                "debuglevel": 0
            }
        ]
    }
}

配置网络接口

这些网络接口将为所有计算机提供DHCP服务器(请参阅上面的“ kea-dhcp4.conf”)。

注意:在真实场景中,“ OpenVPN服务器端网络”上的计算机将拥有一台DHCP服务器,而在“ OpenVPN客户端网络”上的计算机将拥有另一台DHCP服务器。当我们谈论OSI模型的“第2层”时,该划分工作得很好,因此与“第3层”隔离开来,在“第3层”中将存在“路由”,“ ip转发”等,这将是两个网络。

vi'/ etc / sysconfig / network-scripts / ifcfg-enp0s17'

BOOTPROTO=static
DEVICE=enp0s17
DNS1=192.168.56.1
GATEWAY=192.168.56.1
IPADDR=192.168.56.2
IPV6INIT=NO
NETMASK=255.255.255.0
NM_CONTROLLED=yes
ONBOOT=yes
USERCTL=NO

vi'/ etc / sysconfig / network-scripts / ifcfg-enp0s8'

BOOTPROTO=static
DEVICE=enp0s8
IPADDR=10.1.2.2
IPV6INIT=NO
NETMASK=255.255.255.0
NM_CONTROLLED=yes
ONBOOT=yes
USERCTL=NO

vi'/ etc / sysconfig / network-scripts / ifcfg-enp0s9'

BOOTPROTO=static
DEVICE=enp0s9
IPADDR=10.1.4.2
IPV6INIT=NO
NETMASK=255.255.255.0
NM_CONTROLLED=yes
ONBOOT=yes
USERCTL=NO

vi'/ etc / sysconfig / network-scripts / ifcfg-enp0s10'

BOOTPROTO=static
DEVICE=enp0s10
IPADDR=10.1.6.2
IPV6INIT=NO
NETMASK=255.255.255.0
NM_CONTROLLED=yes
ONBOOT=yes
USERCTL=NO

服务器2-客户端DHCPv4和OpenVPN服务器:

OpenVPN服务器设置

vi'/etc/openvpn/server/server.conf'

重要信息:我们仅考虑严格建议的基础结构中“ OPENVPN”操作所需的配置(“ server.conf”和“ client0”)。需要其他设置。有关更多信息,请查看OpenVPN文档。有关此需求的更多详细信息,请参见此链接https://openvpn.net/index.php/open-source/documentation/howto.html#scope

dev tun
topology subnet
server 10.8.0.0 255.255.255.0
push "route 10.1.6.0 255.255.255.0"
push "route 10.1.4.0 255.255.255.0"
client-to-client
ifconfig 10.8.0.1 255.255.255.0

OpenVPN客户端设置

注意:这些设置由服务器端的客户端使用。

vi'/ etc / openvpn / ccd / client0'

ifconfig-push 10.8.0.6 255.255.255.0
iroute 10.1.4.0 255.255.255.0
route 10.1.4.0 255.255.255.0

服务器#3-客户端DHCPv4和OpenVPN客户端

OpenVPN客户端设置

vi'/etc/openvpn/client/client0.conf'

dev tun
remote 192.168.56.4 1194

服务器#2和#3:

打开“ OpenVPN”的防火墙(服务器2和3)

注意:Openvpn不是线程的重点,因此我们在这里不做详细介绍!

firewall-cmd --permanent --add-service openvpn
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload

启用“ ip_forward”(服务器#2和#3)

echo -n "net.ipv4.ip_forward=1

" >> /etc/sysctl.d/ip_forward.conf
sysctl -w net.ipv4.ip_forward=1

服务器#1,#2,#3和#4:

配置网络接口

vi'/ etc / sysconfig / network-scripts / ifcfg-enp0s8'

注意:由于服务器#5(KEA DHCP服务器)将提供网络配置,因此所有计算机中的所有接口都遵循相同的模型。

BOOTPROTO=dhcp
DEVICE=enp0s8
IPV6INIT=NO
ONBOOT=yes
ZONE=public

vi'/ etc / sysconfig /网络'

NETWORKING=yes

测试:

如果所有这些测试都是肯定的,则本教程将成功执行:

Server #1
    ping 10.1.4.5 # (#3)
    ssh <USER>@10.1.4.5 # (#3)
    ping 10.1.4.6 # (#4)
    ssh <USER>10.1.4.6 # (#4)
Server #2
    ping 10.1.4.5 # (#3)
    ssh <USER>10.1.4.5 # (#3)
    ping 10.1.4.6 # (#4)
    ssh <USER>10.1.4.6 # (#4)
Server #3
    ping 10.1.6.3 # (#1)
    ssh <USER>10.1.6.3 # (#1)
    ping 10.1.6.4 # (#2)
    ssh <USER>10.1.6.4 # (#2)
Server #4
    ping 10.1.6.3 # (#1)
    ssh <USER>10.1.6.3 # (#1)
    ping 10.1.6.4 # (#2)
    ssh <USER>10.1.6.4 # (#2)

尖端:

互联网(WAN)测试

curl http://www.google.com

在客户端上续订DHCP

dhclient -r

从客户端删除DHCP租约设置:

注意:这对于测试DHCP服务器的操作很重要。

rm -rf $(find /var/lib/NetworkManager/ -name "*.lease" | egrep <NETWORK_INTERFACE_NAME>)

从服务器删除DHCP租约设置:

注意:这对于测试DHCP服务器的操作很重要。

rm -rf /usr/local/var/kea/kea-leases4.csv*

其他准则:

一般指南以及有关本教程使用的环境的信息:

  1. 本配置教程是在使用VirtualBox的测试环境中构建的。

  2. 所有使用的网络都是“仅主机”的网络,其中一个(192.168.56.0/24)具有Internet(请参阅3)。它们都不应该启用VirtualBox DHCP。

  3. 默认情况下,“仅主机”网络无法访问Internet(https://www.virtualbox.org/manual/ch06.html#networkingmodes)。但是,在本教程https://forum.manjaro.org/t/manjaro-and-virtualbox-host-only-with-internet/28722/12中,我教了如何“规避”此限制。

  4. 仅在必要时,必须激活192.168.56.0/24网络的Internet(WAN)。必须禁用以运行测试,除非要检查curl http://www.google.com服务器#1,#2,#3和#4(请参阅3)上的Internet访问权限();

  5. 执行网络测试(ping,ssh等)时,应在主机上禁用“ dnsmasq”和“ iptables”之类的服务(请参阅3);

  6. 一般而言,在测试过程中,除了服务器5上的内容外,网络的第2层上不应存在DHCP。


使用tun或点击(OpenVPN)-讨论:

在此答案中,我们在@Eduardo Lucio和@Isaac之间的聊天(chat.stackexchange.com)的一部分下面转置了有关部署模型的信息。我们(@Eduardo Lucio)目前选择使用“ tun”,即使它是“更费力的”配置。但是,如果您想在VPN两端的网络之间实现真正透明的集成,请选择Tap(及其优点和缺点)。我相信@Isaac的澄清与决定使用什么(轻击或调整)非常相关,因此在这里进行了转置,以便可以吸引更多的人。

Eduardo Lucio Sat 15:22 @Isaac https://serverfault.com/questions/21157/should-i-use-tap-or-tun-for-openvpn/21168#21168我相信这是不做任何事情的方式路由器。看:“如果您需要在两个不同的位置桥接两个以太网段-然后使用tap。在这种设置中,您可以在vpn的两端将计算机置于相同的ip子网(例如10.0.0.0/24)中”。因此,“ vpn会像以太网交换机一样工作”。但是还有另一个问题……例如,使用这种模型,我可以让网络10.7.1.0/24(VPN端A)中的机器与网络192.168.58.0/24(VPN端B)透明地通信吗?

艾萨克星期六22:19您开始提出正确的问题。

但是您在每个网络上确实都有一个路由器!好吧,有点。

数据包到达计算机的方式只有两种:(1)计算机与另一台计算机(同一第2层作用域)在同一条线路中,就像(简单)交换机的所有端口(或旧名称)一样。集线器)或属于同一个VLAN(如果您没有使用VLAN的经验,请保留此数据点以备将来参考,而忘记我曾经提到过的数据)。

艾萨克星期六22点52分(2)的分组被路由通过路由器2级2级之间的作用域。通过遵循交换机的路由表来决定是否路由数据包。

到目前为止,这只是一般的网络描述,您可能会发现它与特定的用例无关,直到您还意识到,当您告诉计算机转发数据包时,该计算机正在充当路由设备,简称路由器。该路由器需要具有路由表。例如,假设(您确实在每个不同的问题上都有一堆数字,很难确定具体性)作为VPN客户端的服务器4(位于10.1.4.6)应该已被激活,并且必须将其设置为将所有以10.1.6.x为目的地的数据包路由到tun接口。数据包将进入VPN,并在另一侧退出VPN。服务器3(在10.1.4.5的同一网络范围10.1.4.y上)仅需要一条默认(网关)路由来发送所有不在其自身的网络范围(10.1.4.0/24)到10.1.4.6的GW。

一旦从VPN数据包到达另一台计算机服务器2(在10.1.6.4),它们必须被路由以及到路由器在办公室,并在办公室路由器必须有一个路由条目发送任何数据包与目的地10.1.4。 x到服务器2。服务器2必须在内部将接收到的所有数据包内部路由(并具有这样的路由条目)。清楚解释了吗?所有这些路由都是必需的,因为所使用的设备是tun(第3层设备)。

一个更简单(也更不安全)的设备是水龙头(第2层设备)。可以将其视为添加计算机的开关。它将转发接收到的所有数据包,可以是定向到任何(第3级)IP地址的数据包,也可以是那些广播数据包,ARP解析等。从这种意义上讲,这将使您办公室LAN上的计算机容易受到来自VPN另一端计算机的ARP攻击。VPN两端的所有计算机都将成为一个大家庭(每个人彼此信任)。话虽如此,然后源自IP地址10.7.1.0/24的yes数据包将出现在VPN的另一端。但是,您用以下方式表达您的问题:(位于10.7.1.0/24和192.168.58.0/24的计算机可以通信吗?)会强制回答“否”。不相似(专用)网络中的计算机彼此通信的唯一方法是通过NAT(网络地址转换)或类似地址将其本地地址转换为外部(远程)地址。因此,NAT的每一侧将看到相同的网络范围。以上所有内容仅涵盖IPv4。您将需要对其进行审查并扩展为IPv6。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据严重性将 kea-dhcp4 服务器日志推送到不同的文件

如何使用JavaScript将日志文件从客户端推送到服务器

服务器如何将数据推送到客户端?

服务器应如何将数据推送到富客户端

SignalR:如何在Signalr中自动将内容从服务器推送到客户端?

.NET服务器如何将文件处理结果推送到客户端jQuery?

服务器如何使用Java将消息发送到客户端

如何使用C ++中的Websocket客户端将消息发送到服务器?

如何使用带代理的Signalr将消息从客户端发送到服务器?

如何将客户端数据发送到服务器端

ISC DHCP用于不同客户端操作系统的不同DNS服务器

服务器推送时如何在客户端将数据附加到div

如果服务器端未推送路由,如何使所有客户端流量通过OpenVPN?

如何将图像从服务器发送到客户端?

React 和 NodeJS:如何将数据从服务器发送到客户端?

如何将空的终端输出从服务器发送到客户端?

如何将参数从CometD客户端发送到CometD服务器

如何将Android客户端注册令牌发送到FCM服务器?

如何将JPG文件从服务器发送到客户端

如何将消息从golang的websocket服务器主动发送到客户端

如何将信息从NodeJS服务器发送到客户端?

如何将邮件从服务器发送到特定客户端

如何通过获取将更新的变量从客户端发送到服务器?

如何将信息从客户端发送到服务器(Flask-python)

Ruby如何通过TCP(http)服务器将图像发送到客户端

如何将表单数据从客户端发送到服务器

使用套接字将值从服务器发送到客户端

使用C中的套接字将文件从客户端发送到服务器

使用python套接字将Txt文件从客户端发送到服务器