我在使用安装在 CentOS 5 (VPN 服务器) 上的 OpenVPN 2.0.9 正确配置以太网桥时遇到了困难。我试图完成的目标是连接一个 VM(在同一台 CentOS 机器上运行的实例),充当 Microsoft Business Contact Manager 服务器。然后,我希望这个“BCM 服务器”为 192.168.1.0/24 网络上的 Windows XP 客户端以及从 VPN ( 10.8.0.0/24 ) 连接的客户端提供服务。现在的设置基于已知的工作配置。工作配置的问题在于,它允许客户端连接和访问 VPN 服务器 ( SVN、Samba、VM 服务器) 上运行的所有内容,但不允许访问 192.168.1.0/24 网络上的任何计算机。
我必须透露的是,VPN 服务器位于路由器/防火墙后面。端口转发正确(再次,客户端能够毫无问题地连接到 VPN 服务器。netcat 也确认 udp 端口已打开)。
当前 ifconfig 输出
br0 Link encap:Ethernet HWaddr 00:21:5E:4D:3A:C2
inet addr:192.168.1.169 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::221:5eff:fe4d:3ac2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:846890 errors:0 dropped:0 overruns:0 frame:0
TX packets:3072351 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:42686842 (40.7 MiB) TX bytes:4540654180 (4.2 GiB)
eth0 Link encap:Ethernet HWaddr 00:21:5E:4D:3A:C2
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:882641 errors:0 dropped:0 overruns:0 frame:0
TX packets:1781383 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:82342803 (78.5 MiB) TX bytes:2614727660 (2.4 GiB)
Interrupt:169
eth1 Link encap:Ethernet HWaddr 00:21:5E:4D:3A:C3
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:650 errors:0 dropped:0 overruns:0 frame:0
TX packets:1347223 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:67403 (65.8 KiB) TX bytes:1959529142 (1.8 GiB)
Interrupt:233
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:17452058 errors:0 dropped:0 overruns:0 frame:0
TX packets:17452058 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:94020256229 (87.5 GiB) TX bytes:94020256229 (87.5 GiB)
tap0 Link encap:Ethernet HWaddr DE:18:C6:D7:01:63
inet6 addr: fe80::dc18:c6ff:fed7:163/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:3086 errors:0 dropped:166 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:315099 (307.7 KiB)
vmnet1 Link encap:Ethernet HWaddr 00:50:56:C0:00:01
inet addr:192.168.177.1 Bcast:192.168.177.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fec0:1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:4224 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
vmnet8 Link encap:Ethernet HWaddr 00:50:56:C0:00:08
inet addr:192.168.55.1 Bcast:192.168.55.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fec0:8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:4226 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
当前路由表
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.55.0 * 255.255.255.0 U 0 0 0 vmnet8
192.168.177.0 * 255.255.255.0 U 0 0 0 vmnet1
192.168.1.0 * 255.255.255.0 U 0 0 0 br0
当前 iptables 输出
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
服务器已知工作目录
local banshee
port 1194
proto udp
dev tap0
ca ca.crt
cert banshee_server.crt
key banshee_server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0"
client-to-client
keepalive 10 120
tls-auth ta.key 0
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 4
以下是当前的 CentOS 服务器配置文件。
server_ethernet_bridged.conf(当前)
local 192.168.1.169
port 1194
proto udp
dev tap0
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
ifconfig-pool-persist ipp.txt
server-bridge 192.168.1.169 255.255.255.0 192.168.1.200 192.168.1.210
push "route 192.168.1.0 255.255.255.0 192.168.1.1"
client-to-client
keepalive 10 120
tls-auth ta.key 0
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 6
以下是与已知工作配置一起使用的客户端配置文件之一。
客户端.opvn
client
dev tap
proto udp
remote XXX.XXX.XXX 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca client.crt
cert client.crt
key client.key
tls-auth client.key 1
verb 3
我已经尝试过 OpenVPN 提供的 HOWTO 以及其他
http://www.thebakershome.net/openvpn_tutorial?page=1
但没有成功。
任何帮助或建议都将不胜感激。
答案1
除非你真的需要 vpn 客户端出现在同一个第 2 层子网上,我会避免桥接。
如果 192.168.1.0/24 是您当前的内部子网,请配置 openvpn 以将 192.168.2.0/24 左右分配给 VPN 客户端。
那么你需要做以下两件事之一:
- 配置 openvpn 服务器以 NAT vpn 地址
- 配置你的路由器,通过你的 openvpn 服务器添加 192.168.2.0/24 的静态路由
1 可以简单到
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
只要您不介意所有 vpn 客户端在服务器上显示为相同的地址,此方法就会有效。这样也无法从局域网连接到 vpn 客户端。
2 其实并不复杂,在 IOS 领域它只是
ip route 192.168.2.0 255.255.255.0 a.b.c.d
其中 abcd 是您的 openvpn 服务器的内部 ip 地址。甚至可以在便宜的 linksys 路由器上添加静态路由。
答案2
我有一个类似的设置,其中:
内部 LAN <--> OpenVPN 服务器(位于企业防火墙后面)<--> OpenVPN 客户端(也充当 FW/DHCP 服务器)<--> 位于其后面的子网
基本上,我们让 OpenVPN 服务器在内部充当服务器,OpenVPN 客户端使用 tun 接口(我们使用路由)连接到它。通过该隧道,我使用 ipforward 规则和路由规则允许来自内部 LAN 的所有流量通过 VPN 隧道流向 OpenVPN 客户端后面的外部子网。这是 OpenVPN 的正常设置,另外只需添加正确的路由,并在 server.conf 中添加 ccd 和 iroute 命令,即可访问 OpenVPN 客户端后面的子网。本质上,使用此设置,您只需使用路由接口(而不是桥接)将本地 LAN 扩展到具有加密隧道的异地位置。希望这对某些人有所帮助,我从来没有搞砸过它的桥接方面。
答案3
在这种情况下,桥接可以发挥作用,尽管严格来说这不是必要的。尝试删除以下行
push "route 192.168.1.0 255.255.255.0 192.168.1.1"
client-to-client
从服务器配置中,因为在桥接模式下不需要它们。客户端连接后,尝试 ping VPN 服务器 IP 和默认 LAN IP。
另外,发布输出
brctl show
高血压,
吉吉克