配置PPTP,客户端如何使用远程DNS?

204 views
Skip to first unread message

Chopin Ngo

unread,
Jan 14, 2012, 3:39:35 AM1/14/12
to fuji...@googlegroups.com
服务器
Debian 6.0.3 AMD64
DG:192.168.1.1
DNS:192.168.1.2
 
客户端
XP
DG:192.168.3.1
DNS:192.168.3.1
 
使用aptitude install pptpd安装
配置 /etc/pptpd.conf
在最下面添加
localip 192.168.1.3
remoteip 192.168.1.180-185
配置 /etc/ppp/pptpd-options
在最下面添加
ms-dns 192.168.1.2
ms-wins 192.168.1.2
nobsdcomp
noipx
mtu 1490
mru 1490
配置 /etc/ppp/chap-secrets
在最下面添加
user pptpd passwd *
 
启用ip forward,编辑/etc/sysctl.conf
在最下面添加
net.ipv4.ip_forward = 1
然后运行 sysctl -p
 
添加如下iptables规则
iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 192.168.1.3
现在使用XP客户端可以链接上该VPN(获取到的IP为192.168.1.180)
通过访问ip138.com也可以看到IP已经是VPN服务器对应的外网IP了(也就是说已经可以通过VPN访问外网了)
但DNS还是本地的DNS(192.168.3.1)
无法通过 web100.domain.com(绑定到192.168.1.100)访问该服务,但通过192.168.1.100是可以访问的
 
在VPN服务器的局域网内的PC(192.168.1.123,暂且称为PC1)上运行 nslookup 正常
在远程客户端上运行 nslookup显示的还是192.168.3.1,通过注册表把远程DNS设置为优先,但设置后运行nslookup则提示超时
 
PC1和远程客户端(192.168.1.180)互ping都是通的,PC1和DNS服务器互ping也是通的
但远程客户端和DNS服务器(192.168.1.2)互ping不通...
DNS服务器上的iptables是允许 192.168.1.0/24 icmp通信的
 
我哪里设置错了吗??

--
智慧子使父亲喜乐。愚昧人藐视母亲。
              ----箴言 十五章20节

Chopin Ngo

unread,
Jan 14, 2012, 4:01:31 AM1/14/12
to fuji...@googlegroups.com
原因找到了,是DNS服务器的iptables设置问题,把DNS服务器的iptables清空掉就正常了
但...为什么内网可以正常访问DNS服务器,而VPN客户端就不行呢??VPN客户端走的规则不一样??
下面是DNS服务器的iptables规则,请帮忙看看哪里有问题...谢谢

 #!/bin/sh
iptables -F
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -m multiport --dport 139,445 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m limit --limit 4/hour -j LOG
iptables -A INPUT -p udp -i eth0 -m multiport --dport 67,137,138 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -p icmp -d 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -m multiport --sport 139,445 -d 192.168.1.0/24 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp -o eth0 -m multiport --sport 67,137,138 -d 192.168.1.0/24 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 --sport 55655 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -m multiport --dport 21,80 -j ACCEPT
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP
iptables -P FORWARD DROP

 
2012/1/14 Chopin Ngo <cons...@gmail.com>

源泉星火(张明源)

unread,
Jan 14, 2012, 11:24:06 AM1/14/12
to fuji...@googlegroups.com
客户端那里dig/nslookup 一下,在DNS Server那里netstat 看看是哪个IP就知道了。

我表示你写的这两段文字我看得很晕,今天淋雨头很痛。。。

--
如要订阅mailing list,请发送邮件至 fujianlug...@googlegroups.com
如要取消订阅,请发送邮件至 fujianlug+...@googlegroups.com
如在订阅后要参与讨论,请发邮件至 fuji...@googlegroups.com



--
明源
http://www.Linuxzh.org
Twitter: @muxueqz

Chopin Ngo

unread,
Jan 15, 2012, 1:41:56 AM1/15/12
to fuji...@googlegroups.com
是iptables设置的问题
但很怪的...
同样的配置,昨天测试的时候就是不行,但今天测试的时候既然就正常了...
iptables的规则没改哦...

2012/1/15 源泉星火(张明源) <zhangmin...@gmail.com>



--
智慧子使父亲喜乐。愚昧人藐视母亲。
              ----箴言 十五章20节

Chopin Ngo

unread,
Jan 15, 2012, 3:47:19 AM1/15/12
to fuji...@googlegroups.com
pptp不是只要开放1723端口就可以了吗??
没iptables规则前,连接正常
设置iptables,并开放了1723的TCP和UDP
客户端连接显示619错误,用netstat -l | grep "1723"查看,可以看到有一条连接,状态显示的是TIME_WAIT
还需要开放什么端口吗??
2012/1/15 Chopin Ngo <cons...@gmail.com>

Chopin Ngo

unread,
Jan 15, 2012, 3:57:54 AM1/15/12
to fuji...@googlegroups.com
原来是忘了放行GRE协议了...

2012/1/15 Chopin Ngo <cons...@gmail.com>

Chopin Ngo

unread,
Feb 2, 2012, 12:08:30 PM2/2/12
to fuji...@googlegroups.com
唉......当时在东莞的时候明明测试过,已经正常了
怎么一回厦门...测试之后又不正常了...服务器的iptables规则都没改,pptpd也没改
之前在东莞的时候特地从外网测试过的...
现在的情况是,连接得上VPN,VPN服务器的内网IP是:192.168.1.3
客户端(XP)获取到的IP为:192.168.1.180
如果钩选“在远程网络上使用默认网关”的话,则默认网关也为192.168.1.180(IP为:192.168.1.180/32)
此时只能ping通VPN服务器的内网IP,其余的都ping不通
如果不钩选“在远程网络上使用默认网关”的话,客户端还可以访问外网,通过访问ip138.com可查看到外网IP为厦门的IP,非东莞VPN服务器的IP
此时依然可以ping通VPN服务器的内网IP,其他都不行。
尝试过在客户端上添加静态路由
route add 192.168.1.0 mask 255.255.255.0 192.168.1.1 metric 1
得到错误提示(192.168.1.1是VPN服务器所在内网的网关IP)
The route addition failed: Either the interface index is wrong or the gateway does not lie on the same network as the interface. Check the IP Address Table for the machine.
如果是route add 192.168.1.0 mask 255.255.255.0 192.168.1.180 metric 1
的话,就没问题,但这条静态路由有添加和没添加一样....
刚开始怀疑是VPN的NAT没弄好,但cat /proc/sys/net/ipv4/ip_forward  为1
lsmod | grep "nat"可以看到iptables_nat
 
下面是iptables-save的显示结果
 
# Generated by iptables-save v1.4.8 on Fri Feb  3 01:05:06 2012
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -i lo -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p icmp -j ACCEPT
-A INPUT -s 192.168.1.2/32 -i eth0 -p tcp -m multiport --dports 22,902,2099,3306,8222,8333,60240 -j ACCEPT
-A INPUT -s 192.168.1.180/32 -i eth0 -p tcp -m multiport --dports 22,902,2099,3306,8222,8333,60240 -j ACCEPT
-A INPUT -s 192.168.1.215/32 -i eth0 -p tcp -m multiport --dports 22,902,2099,3306,8222,8333,60240 -j ACCEPT
-A INPUT -s 192.168.1.215/32 -i eth0 -p udp -m udp --dport 2199 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 4/hour -j LOG
-A INPUT -s 远程VPN客户端外网IP/32 -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT
-A INPUT -s 远程VPN客户端外网IP/32 -i eth0 -p gre -j ACCEPT
-A INPUT -j DROP
-A FORWARD -j DROP
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -d 192.168.1.0/24 -p icmp -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d 192.168.1.2/32 -o eth0 -p tcp -m multiport --sports 22,902,2099,3306,8222,8333,60240 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -d 192.168.1.180/32 -o eth0 -p tcp -m multiport --sports 22,902,2099,3306,8222,8333,60240 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -d 192.168.1.215/32 -o eth0 -p tcp -m multiport --sports 22,902,2099,3306,8222,8333,60240 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -d 192.168.1.215/32 -o eth0 -p udp -m udp --sport 2199 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -d 远程VPN客户端外网IP/32 -o eth0 -p tcp -m tcp --sport 1723 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -d 远程VPN客户端外网IP/32 -o eth0 -p gre -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m multiport --dports 21,80 -j ACCEPT
-A OUTPUT -j DROP
COMMIT
# Completed on Fri Feb  3 01:05:06 2012
# Generated by iptables-save v1.4.8 on Fri Feb  3 01:05:06 2012
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o eth0 -p tcp -j SNAT --to-source 192.168.1.3
COMMIT
# Completed on Fri Feb  3 01:05:06 2012
哪里出问题了呢???关键是之前我在东莞的时候,确实测试过是正常的哦...这几天都没修改过任何设置...

 
2012/1/15 Chopin Ngo <cons...@gmail.com>

Chopin Ngo

unread,
Feb 2, 2012, 12:55:16 PM2/2/12
to fuji...@googlegroups.com
........忘了默认把FORWARD设置为DROP了......
修改为
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -A FORWARD -o eth0 -j ACCEPT
iptables -A FORWRAD -j DROP
后就可以了...
但对FORWARD链表不是很了解啊...网上说这样设置是“允许与eth0处于同一网段的所有IP都允许通过eth0转发”是这样吗??

2012/2/3 Chopin Ngo <cons...@gmail.com>

Chopin Ngo

unread,
Feb 2, 2012, 1:18:15 PM2/2/12
to fuji...@googlegroups.com
那个....在上面的iptables中,我本以为已经把访问该VPN服务器的一些端口对192.168.1.180开放就可以
但连接到VPN后,分配到的IP依然是192.168.1.180,但开放的这些端口且无法访问
 
我尝试把上面iptables规则里的192.168.1.180替换成192.168.1.3,然后SSH登录到VPN服务器上(通过另一台内网PC进行中转),telnet 192.168.1.3 22是正常的啊(telnet 127.0.0.1 22也是正常)...但VPN客户端依然是不行
我尝试着开启iptables的日志
在INPUT链表第一条规则前添加 iptables -A INPUT -j LOG --log-level 7
OUTPUT、FORWARD链表类似
但.......日志里什么也没有....只有把log-level设置成4才有日志...但...这日志实在太“详细”了(几秒钟就几万条数据...),看起来实在太费劲了...

2012/2/3 Chopin Ngo <cons...@gmail.com>
Reply all
Reply to author
Forward
0 new messages