日度归档:2008年10月30日

Ubuntu 单网卡架设VPN并NAT共享上网办法

服务器使用shorewall作为防火墙,实际上shorewall只是作为iptables的一个配置程序而已,实际上防火墙还是iptables;
首先是建立VPN,使用软件包PPTPD,这样做的好处是方便认证,也支持windows,安全性不如openvpn,但是简单实用;

 

服务器环境:
OS:ubuntu server 8.04.1
firewall: shorewall
IP:192.168.2.100
安装:

sudo apt-get install pptpd

修改配置文件:/etc/pptpd.conf

修改localip  remoteip

localip 192.168.250.1
remoteip 192.168.250.234-238,192.168.250.245

这里随便找了个IP段localip相当于拨号后的服务器地址,可以写成本机IP,或者和remoteip的IP段相同的一个IP地址

remoteip是客户机分配的IP段,这里分配了12个IP地址,也就只允许12个机器同时通过VPN连接,再增加就不能分配到IP地址了

修改配置文件:/etc/ppp/chap-secrets

这个文件里面设置登陆用的账号密码等信息

设置格式是:

# client        server  secret                  IP addresses

abc       *            123456

第一个是用户名  然后是服务器地址   然后是登陆所用的密码  最后是为客户拨号后分配的IP地址,不指定的话就是系统自动分配

以上过程之后,咱的PPTPD就配置好了哈

由于服务器采用了shorewall防火墙,需要开放端口1723,47和gre协议

编辑/etc/shorewall/rules

增加:

ACCEPT          net             $FW             gre
ACCEPT          net             $FW             tcp     1723
ACCEPT          net             $FW             tcp     47

然后重启下shorewall:

sudo shorewall restart

开始测试在windows上VPN拨号吧

windows下VPN连接建立方法就不多说了哈

OK,测试VPN可以拨通了,但是还不能通过服务器的网络连接互联网,可能你会发现,除了访问服务器,其他你什么都干不了

下面来做NAT,不过这个地方我也没做得很好,还有点缺陷,希望以后能解决这个问题

拨通VPN后,在服务器上使用ifconfig可以看到多了一个PPP*的网络连接,例如我这里是ppp0

做NAT我也使用shorewall来做

修改/etc/shorewall/interface

增加:

ppp0   ipv4

修改/etc/shorewall/zones

增加:

ppp    ppp0

修改/etc/shorewall/masq

增加:

eth0                    ppp0

OK,然后重启shorewall

sudo shorewall restart

NAT配置好了

这里要注意的是ppp0一定要存在,否则shorewall要报错,这个就是shorewall不足的地方了,不够灵活。

如果你不用shorewall 防火墙,直接使用iptables指令进行dnat操作,就不会因为没有ppp0连接而报错了。