最后,我决定坐下来做一件长期列在我的待办事项清单上的事情:让我的虚拟网络真正发挥作用。
简单地说:我有一个纯粹的虚拟桥设备(在引导时由ifcfg-script创建),libvirtd将来宾os:se附加到这个设备上。桥上也有一条强的松松。由于网桥是虚拟的,所以没有互联网接入,并且openvpn tun0设备不能直接添加到网桥上。现在,我的目标是将所有出站流量重定向到tun0整数面。这似乎是一份简单的工作,但我却浪费了一天的时间。
桥上的内部通信可以正常工作,包括dhcp,但根本无法让传出的流量正常工作。问题不在于路由表(使用iproute2作为tun0的第二个路由表,用curl -接口检查.以获取tun0的外部ip ),或openvpn连接本身。
下面是我的配置文件:
如果ifcfg tun0:
DEVICE=tun0
BOOTPROTO=none
ONBOOT=no
TUNNEL=’tun’
如果cfgvirtbr10:
DEVICE=virbr10
NAME=virbr10
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Bridge
DELAY=2
STP=on
IPADDR=10.8.3.1
NETMASK=255.255.255.0
IPV6INIT=no
ZONE=virbr10
/etc/firewalld/direct.xml:
<?xml version="1.0" encoding="utf-8"?>
<direct>
<rule priority="0" table="nat" ipv="ipv4" chain="POSTROUTING">-o tun0 -j MASQUERADE</rule>
<rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-o tun0 -i virbr10 -m state --state RELATED,ESTABLISHED -j ACCEPT</rule>
<rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-o virbr10 -i tun0</rule>
</direct>
还有一些命令:
防火墙-cmd--进入活动区域:
home
interfaces: enp2s0 br0
virbr10
interfaces: virbr10
purevpn
interfaces: tun0
防火墙-cmd --zone=purevpn --查询-伪装:
yes
所有服务都已启动并运行,没有任何错误,而且我已经浏览了几个小时,没有注意到任何明显的错误。任何帮助都将不胜感激。有一件事我不知道该怎么做,那就是命令“防火墙-cmd--永久的--直接--所有的规则”不会返回任何东西。但我不确定这是否意味着。
这个系统是CentOS 7,而vpn是开放的,有一些自定义脚本来填充第二个路由表。
编辑:忘记提到/etc/sysctl.conf中启用了路由。
edit2:有人指出我实际上没有问任何问题.那么,有没有人注意到我犯的任何(不那么明显的)明显的错误,或者有任何想法让这个网络像故意的那样工作。
发布于 2018-01-23 06:10:59
过了一段时间,我自己解决了这个问题。我的配置本身并没有错(尽管我确实重写了直接规则),但没有完成。我意识到,即使我的虚拟桥可以将数据包转发到tun0接口,但它不会这样做,因为默认路由丢失了。也就是说,它不知道它可以将数据包发送到tun0。只需为virbr10接口添加第三个路由表,并修改openvpn路由向上-script,以便在连接结束后将默认路由推送到此表。这与修订后的“火柴盒”规则相结合,似乎起到了作用。
https://serverfault.com/questions/893566
复制