无法通过 Cisco 881 上的 NAT 进行 PPTP

无法通过 Cisco 881 上的 NAT 进行 PPTP

我正在尝试连接到位于 Cisco 881 NAT 路由器后面的 PPTP 服务器。该服务器运行的是 Ubuntu Server 12.04,并运行 Poptoppptpd作为监听连接的 PPTP 守护进程。

正如我在其他问题,我正在尝试设置 Cisco 881 路由器来替换我的旧 Linksys WAG320N。除了允许 1723 通过防火墙进入外,同一台服务器和 WAN 连接无需特殊配置即可与 WAG320N 配合使用。

在 Cisco 881 上,我使用较新的ip nat enable或 NAT NVI 通过防火墙为路由器后面运行的服务设置静态路由。原因是我无法在内部使用本地 IP 地址运行我的实时 DNS 域的另一个副本。不过,为了解决这个问题,我重建了具有ip nat inside/outsideNAT 风格的路由器,但这个问题仍然存在。HTTP/SMTP/IMAP 等在路由器的 WAN 和 LAN 接口上都可以正常工作。我只遇到了 SIP(​​请参阅其他问题)和 PPTP 问题。

我的问题是 GRE 似乎没有正确通过 NAT,并且连接的一端在应该接收 GRE 流量时却没有接收,因此服务器挂断了连接。

/var/log/syslog以下是启用调试的示例/etc/pptpd.conf

Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: MGR: Launching /usr/sbin/pptpctrl to handle client
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: local address = 192.168.1.50
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: remote address = 192.168.1.51
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: pppd options file = /etc/ppp/pptpd-options
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Client 82.132.248.216 control connection started
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Received PPTP Control Message (type: 1)
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Made a START CTRL CONN RPLY packet
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: I wrote 156 bytes to the client.
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Sent packet to client
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Received PPTP Control Message (type: 7)
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Set parameters to 100000000 maxbps, 64 window size
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Made a OUT CALL RPLY packet
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Starting call (launching pppd, opening GRE)
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: pty_fd = 6
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: tty_fd = 7
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: I wrote 32 bytes to the client.
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: CTRL: Sent packet to client
Dec 11 21:06:30 <HOSTNAME> pptpd[22627]: CTRL (PPPD Launcher): program binary = /usr/sbin/pppd
Dec 11 21:06:30 <HOSTNAME> pptpd[22627]: CTRL (PPPD Launcher): local address = 192.168.1.50
Dec 11 21:06:30 <HOSTNAME> pptpd[22627]: CTRL (PPPD Launcher): remote address = 192.168.1.51
Dec 11 21:06:30 <HOSTNAME> pppd[22627]: Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded.
Dec 11 21:06:30 <HOSTNAME> pppd[22627]: pppd 2.4.5 started by root, uid 0
Dec 11 21:06:30 <HOSTNAME> pppd[22627]: Using interface ppp0
Dec 11 21:06:30 <HOSTNAME> pppd[22627]: Connect: ppp0 <--> /dev/pts/3
Dec 11 21:06:30 <HOSTNAME> pptpd[22626]: GRE: Bad checksum from pppd.
Dec 11 21:06:31 <HOSTNAME> pptpd[22626]: CTRL: Received PPTP Control Message (type: 15)
Dec 11 21:06:31 <HOSTNAME> pptpd[22626]: CTRL: Got a SET LINK INFO packet with standard ACCMs
Dec 11 21:07:00 <HOSTNAME> pppd[22627]: LCP: timeout sending Config-Requests
Dec 11 21:07:00 <HOSTNAME> pppd[22627]: Connection terminated.
Dec 11 21:07:00 <HOSTNAME> avahi-daemon[1042]: Withdrawing workstation service for ppp0.
Dec 11 21:07:00 <HOSTNAME> pppd[22627]: Modem hangup
Dec 11 21:07:00 <HOSTNAME> pppd[22627]: Exit.
Dec 11 21:07:00 <HOSTNAME> pptpd[22626]: GRE: read(fd=6,buffer=6075a0,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs
Dec 11 21:07:00 <HOSTNAME> pptpd[22626]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
Dec 11 21:07:00 <HOSTNAME> pptpd[22626]: CTRL: Reaping child PPP[22627]
Dec 11 21:07:00 <HOSTNAME> pptpd[22626]: CTRL: Client 82.132.248.216 control connection finished
Dec 11 21:07:00 <HOSTNAME> pptpd[22626]: CTRL: Exiting now
Dec 11 21:07:00 <HOSTNAME> pptpd[5803]: MGR: Reaped child 22626

就思科而言,我所需要的只是ip nat source static tcp <SERVER LAN IP> 1723 interface FastEthernet4 1723但这当然似乎并没有像应该的那样帮助 GRE 流量通过。

尝试从与服务器相同的 LAN(路由器后面)连接到服务器的 LAN IP,PPTP 连接工作正常,因此我相信服务器的配置没有问题。此外,我在 WAG320N 上需要做的就是在防火墙中打开 1723。

这是我当前的路由器配置:

!
! Last configuration change at 20:20:15 UTC Tue Dec 11 2012 by xxx
version 15.2
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname xxx
!
boot-start-marker
boot-end-marker
!
!
enable secret 4 xxxx
!
aaa new-model
!
!
aaa authentication login local_auth local
!
!
!
!
!
aaa session-id common
!
memory-size iomem 10
!
crypto pki trustpoint TP-self-signed-xxx
 enrollment selfsigned
 subject-name cn=IOS-Self-Signed-Certificate-xxx
 revocation-check none
 rsakeypair TP-self-signed-xxx
!
!
crypto pki certificate chain TP-self-signed-xxx
 certificate self-signed 01
  xxx
    quit
ip gratuitous-arps
ip auth-proxy max-login-attempts 5
ip admission max-login-attempts 5
!
!
!
!
!
ip domain list dmz.xxx.local
ip domain list xxx.local
ip domain name dmz.xxx.local
ip name-server 192.168.1.x
ip cef
login block-for 3 attempts 3 within 3
no ipv6 cef
!
!
multilink bundle-name authenticated
license udi pid CISCO881-SEC-K9 sn xxx
!
!
username admin privilege 15 secret 4 xxx
username joe secret 4 xxx
!
!
!
!
!
ip ssh time-out 60
! 
!
!
!
!
!
!
!
!
interface FastEthernet0
 no ip address
!
interface FastEthernet1
 no ip address
!
interface FastEthernet2
 no ip address
!
interface FastEthernet3
 switchport access vlan 2
 no ip address
!
interface FastEthernet4
 ip address dhcp
 ip nat enable
 duplex auto
 speed auto
!
interface Vlan1
 ip address 192.168.1.x 255.255.255.0
 no ip redirects
 no ip unreachables
 no ip proxy-arp
 ip nat enable
!
interface Vlan2
 ip address 192.168.0.x 255.255.255.0
!
ip forward-protocol nd
ip http server
ip http access-class 1
ip http authentication local
ip http secure-server
!
!
ip nat source list 1 interface FastEthernet4 overload
ip nat source list 2 interface FastEthernet4 overload
ip nat source static tcp 192.168.1.x 1723 interface FastEthernet4 1723
!
!
access-list 1 permit 192.168.0.0 0.0.0.255
access-list 2 permit 192.168.1.0 0.0.0.255
!
!
!
!
control-plane
!
!
banner motd 
Authorized Access only

!
line con 0
 exec-timeout 15 0
 login authentication local_auth
line aux 0
 exec-timeout 15 0
 login authentication local_auth
line vty 0 4
 access-class 2 in
 login authentication local_auth
 length 0
 transport input all
!
!
end

我很感激在 Server Fault 上已经有几个类似的问题:pptpd 在 Ubuntu Server 11.10 上无法外部运行pptp无法连接。这些问题尚未完全解决,我认为最好不要劫持别人的问题。我尝试使用其他问题的答案中的建议,但我仍然需要一些帮助才能使其正常工作。如果这不是正确的做法,请原谅。

更新日期:2012/12/16

我在这个问题上取得的唯一进展是,我确信问题是由 GRE 隧道(PPTP 连接完成所必需的)被阻止引起的。尝试连接时,我可以看到show ip nat nvi translations在 1723 上设置了 TCP 转换,并且还设置了 GRE 转换。我似乎能够在服务器所在的 LAN 上看到与 GRE 相关的数据包,因此我相信服务器正在发送(?)GRE 数据包,但是在尝试连接时在客户端 PC 上运行 Wireshark 时完全没有显示 GRE 数据包。

虽然我上面发布的配置中没有配置指令(我可以指出)专门阻止它们,但似乎不允许 GRE 数据包进出路由器的防火墙,即使为服务器的 LAN 地址设置了 NAT 转换条目。有人能帮我确保 GRE 数据包不会被路由器的防火墙阻止,这样就可以排除这可能是一个问题吗?

答案1

您无法通过 PAT:ed 路由器转换 GRE。GRE 没有任何可用于保持状态的第 4 层信息。GRE 不基于 TCP 或 UDP,而是其自己的 IP 协议编号 47。

您应该从 PAT 更改为 one2one-NAT 设置或将 VPN 设置完全更改为 IPSec。

答案2

我不知道为什么“ip nat inside/outside”的配置对你不起作用(对我来说是有效的),也许你忘记在访问列表中允许 GRE?

您可以同时使用“ip nat enable”和“ip nat inside/outside”。

我通常对除 PPTP 之外的所有静态转换使用“ip nat enable”,对动态转换(如果有客户端使用出站 PPTP)和 PPTP(tcp 端口 1723)的静态转换使用“ip nat inside/outside”。此外,您需要在访问列表中允许 GRE 流量。

至于为什么会这样 - 我不知道,可能是 PPTP 在 NAT NVI 中没有完全支持,或者其他原因。我也不知道你对 SIP 的问题,也许是一样的。

相关内容