OpenVpn 桥接接口不响应来自外部网络的传入数据包!

Gök*_*ürk 6 networking openvpn bridge

我们正在尝试使用 openvpn 设置 roadwarrior vpn。我们希望人们能够通过 openvpn 连接到我们的网络。我们希望他们能够看到并连接到我们网络中的机器。因此,如我们所见,解决方案是桥接 vpn。

我对网络环境没有太多经验。我正在浏览 ubuntu(我们在其上构建了 openvpn 服务器)和 openvpn 手册。两者都在很多方面都有所欠缺。

https://help.ubuntu.com/10.10/serverguide/C/openvpn.html

http://openvpn.net/howto.html

当我通过作为 openvpn 一部分的桥接启动脚本安装桥接接口时,我的网络出现故障,只是让我在我的网络中 ping 通。我将端口转发设置为我的 openvpn 服务器的端口 1194,该端口一直在工作,直到我设置了桥接接口。启用桥接后,我的机器与外部网络失去联系。我确定我错过了一些事情要做。

我在设置桥接之前和之后放置了我的ifconfignetstat -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)
Run Code Online (Sandbox Code Playgroud)


#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
Run Code Online (Sandbox Code Playgroud)


#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)
Run Code Online (Sandbox Code Playgroud)


#netstat 之后

192.168.22.0  /  0.0.0.0  /  255.255.255.0  /  U    0 0     0  /  br0
Run Code Online (Sandbox Code Playgroud)

(我知道这张表很糟糕。但我无法克服这张表,或者通过添加路由使其发挥作用。)


桥接启动脚本

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
Run Code Online (Sandbox Code Playgroud)


Mic*_*ael 4

问题是,当启动脚本关闭 eth0 时,它会破坏您的默认网关路由。当脚本启动接口时,您没有使用 DHCP,而是手动设置 IP 和子网。通常情况下,您可以从 DHCP 获得路由,无需桥接。您可以注释掉部分脚本,以便 br0 从 DHCP 获取 eth0 的 IP(以及路由),也可以添加一行以在脚本末尾手动添加路由:

route add default gw 192.168.22.1
Run Code Online (Sandbox Code Playgroud)