我们正在尝试使用 openvpn 设置 roadwarrior vpn 设置。我们希望人们能够通过 openvpn 连接到我们的网络。我们希望他们能够看到并连接到我们网络中的机器。因此,正如我们所见,解决方案是桥接 vpn。
我对网络环境没有太多经验。我正在阅读 ubuntu(我们在其上构建了 openvpn 服务器)和 openvpn 手册。它们都有很多不足之处。
https://help.ubuntu.com/10.10/serverguide/C/openvpn.html
当我通过 bridge-start 脚本(openvpn 的一部分)安装桥接接口时,我的网络瘫痪了,只能在网络内部 ping。我设置了端口转发到我的 openvpn 服务器的端口 1194,该端口一直正常工作,直到我设置桥接接口。启用桥接后,我的机器与外部网络失去联系。我肯定我错过了什么事要做。
我把设置桥接之前和之后的输出放在了下面ifconfig
。netstat -rn
下面是我的服务器配置文件和脚本。
#ifconfig 之前
eth1 Link encap:Ethernet HWaddr 52:54:00:57:63:6e
inet addr:192.168.22.230 Bcast:192.168.22.255 Mask:255.255.255.0
inet6 addr: fe80::5054:ff:fe57:636e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4857 errors:0 dropped:0 overruns:0 frame:0
TX packets:3199 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:518272 (518.2 KB) TX bytes:430178 (430.1 KB)
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:21 errors:0 dropped:0 overruns:0 frame:0
TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1804 (1.8 KB) TX bytes:1804 (1.8 KB)
#netstat 之前
192.168.22.0 / 0.0.0.0 / 255.255.255.0 / U 0 0 0 / eth1
0.0.0.0 / 192.168.22.1 / 0.0.0.0 / UG 0 0 0 / eth1
#ifconfig 之后
br0 Link encap:Ethernet HWaddr 52:54:00:57:63:6e
inet addr:192.168.22.230 Bcast:192.168.22.255 Mask:255.255.255.0
inet6 addr: fe80::5054:ff:fe57:636e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:256 errors:0 dropped:0 overruns:0 frame:0
TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:43790 (43.7 KB) TX bytes:2328 (2.3 KB)
eth1 Link encap:Ethernet HWaddr 52:54:00:57:63:6e
inet6 addr: fe80::5054:ff:fe57:636e/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:5691 errors:0 dropped:0 overruns:0 frame:0
TX packets:3508 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:622570 (622.5 KB) TX bytes:470324 (470.3 KB)
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:36 errors:0 dropped:0 overruns:0 frame:0
TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3980 (3.9 KB) TX bytes:3980 (3.9 KB)
tap0 Link encap:Ethernet HWaddr 7e:3a:03:48:ad:29
inet6 addr: fe80::7c3a:3ff:fe48:ad29/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:0 errors:0 dropped:243 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
#netstat 之后
192.168.22.0 / 0.0.0.0 / 255.255.255.0 / U 0 0 0 / br0
(我知道这个表很糟糕。但我无法克服这个表,或者通过添加路线使其发挥作用。)
桥接启动脚本
br="br0"
tap="tap0"
eth="eth1"
eth_ip="192.168.22.230"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.22.255"
for t in $tap; do
openvpn --mktun --dev $t
done
brctl addbr $br
brctl addif $br $eth
for t in $tap; do
brctl addif $br $t
done
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
ifconfig $eth 0.0.0.0 promisc up
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
答案1
问题是,当启动脚本关闭 eth0 时,它会破坏您的默认网关路由。当脚本启动接口时,您没有使用 DHCP,而是手动设置 IP 和子网。通常,您会从 DHCP 获取路由,而无需网桥。您可以注释掉脚本的某些部分,以便 br0 从 DHCP 获取 eth0 的 IP(从而获取路由),或者您可以在脚本末尾添加一行以手动添加路由:
route add default gw 192.168.22.1
答案2
为什么不使用 /etc/network/interfaces 来存档这个?
例子:
iface br0 inet static
bridge_ports eth0 tap0
address 192.168.1.2
broadcast 192.168.1.255
netmask 255.255.255.0
gateway 192.168.1.1
pre-up openvpn --mktun --dev tap0