我正在运行 Ubuntu 11.04(64 位版本),并希望能够连接到我公司的 VPN 服务器(CISCO)。当我禁用 UFW 时,我能够连接到 VPN 服务器,但是,尽管进行了各种尝试,我还是找不到在 UFW 中输入的正确规则,以便在启用 UFW 时调解此连接(网络管理器一直说我的连接失败)。
我安装了以下软件包:
- 虚拟专用网络
- 网络管理器-vpnc
- 网络管理器-pptp
- 网络管理器-pptp-gnome
- 网络管理器-vpnc-gnome
- pptp-linux
以下是我的 UFW 规则:
443/tcp ALLOW Anywhere
143 ALLOW Anywhere
Samba ALLOW Anywhere
53,137,138/udp ALLOW OUT Anywhere
20,21,22,25,80,139,443,5900,8001/tcp ALLOW OUT Anywhere
23399 ALLOW OUT Anywhere
19294/tcp ALLOW OUT Anywhere
19295/udp ALLOW OUT Anywhere
19302/udp ALLOW OUT Anywhere
1863,5222,5223,6667,8010/tcp ALLOW OUT Anywhere
6891:6900,6901/udp ALLOW OUT Anywhere
6891:6900,6901/tcp ALLOW OUT Anywhere
15399 ALLOW OUT Anywhere
5269/tcp ALLOW OUT Anywhere
993/tcp ALLOW OUT Anywhere
587/tcp ALLOW OUT Anywhere
Anywhere DENY OUT Anywhere
在运行 10.10 和 Firestarter 时,我在 /etc/firestarter/user-pre 中输入以下几行后,就能连接到同一个 VPN 服务器:
iptables -A INPUT -j ACCEPT -s xxx.xxx.xx.xxx -p esp
iptables -A INPUT -j ACCEPT -s xxx.xxx.xx.xxx -p udp -m multiport --sports isakmp,10000
iptables -A INPUT -j ACCEPT -i tun+
iptables -A OUTPUT -j ACCEPT -d xxx.xxx.xx.xxx -p esp
iptables -A OUTPUT -j ACCEPT -d xxx.xxx.xx.xxx -p udp -m multiport --dports isakmp,10000
iptables -A OUTPUT -j ACCEPT -o tun+
(xxx.xxx.xxx.xxx 被替换为我的服务器的 IP 地址)
那么,在 UFW 中输入哪些规则才能与 Firestarter 作为防火墙运行时的规则相匹配呢?更一般地说,我应该在 UFW 中使用哪些设置才能使连接正常工作?
答案1
我简直不敢相信:我解决了它!
这些是我在 /etc/ufw/before.rules 中添加的行:
-A ufw-before-input -s xxx.xxx.xxx.xxx -p esp -j ACCEPT
-A ufw-before-input -s xxx.xxx.xxx.xxx -p udp -m multiport --sports isakmp,10000 -j ACCEPT
-A ufw-before-input -i wlan0 -j ACCEPT
-A ufw-before-output -d xxx.xxx.xxx.xxx -p esp -j ACCEPT
-A ufw-before-output -d xxx.xxx.xxx.xxx -p udp -m multiport --sports isakmp,10000 -j ACCEPT
-A ufw-before-output -o wlan0 -j ACCEPT
在之前的尝试中,我犯了两个错误:
- 我将一些代码从 LibreOffice Writer 复制到 gedit,但没有注意到自动更正系统已将两个破折号替换为一个长破折号。
- 虽然 firestarter 需要允许访问(作为输入和输出)“tun+”接口,但 ufw 需要允许我用于联系 VPN 服务器的接口(在我的情况下是 wlan0)进行此访问。