环境:ADSL 动态 IP ,内网用户通过 Linux 网关服务器 NAT 上网。
 
1. 先到 3322.org 免费注册一个动态的二级域名。
 
2. 网关服务器上
# vi /etc/ppp/ip-up
在最后加入:
/usr/local/network/setup.sh
lynx -mime_header -auth=USERNAME:PASSWORD "http://www.3322.org/dyndns/update?system=dyndns&hostname=HOST.3322.org"
 
第一个是执行 iptables 做 NAT 以及 TC 流量控制等脚本的集合。
第二个是在拨号成功时向 3322.org 提交新的 IP 地址。
 
3. 安装 Apache ,configure 的时候加上 --enable-proxy=shared
在虚拟主机配置中加上:
RewriteEngine on
RewriteRule ^/(.*)$ http://192.168.0.254/$1 [P,L]
 
注:如果有注册静态域名,做 CNAME 到 HOST.3322.org 就可以实现 IP 的自动“更新”了。
    可以配置多个虚拟主机为多部内网机器提供发布到外网的 Web 服务。

Debian 做 ADSL NAT 的 MTU 问题

2006-05-09 16:12  |  分类:应用技术, 操作系统

以前用网关路由器拨号上网时使用微软的东西是没有问题的。现在换成用 Debian 拨号再使用 iptables SNAT 后,MSN 就不能登陆了,打开 www.msn.com.cn 非常慢且只能打开页面的头部,而 windowsupdate.microsoft.com 根本就打不开了。
 
google 后得知修改 PC 网卡的 MTU 值可以解决这个问题。
在 Windows 2000/XP 下修改注册表:
『HKEY_Local_Machine』->『SYSTEM』->『CurrentControlSet』->『Services』->『Tcpip』->『Parameters』->『interface』
找到所使用的网卡,『编辑』->『新增』->『DWORD值』之后,建立一个名为『MTU』的机码,右键『修改』,选择十进制,填入 1480 。
 
但是,这个方法很蹩脚呢,内网中的机器那么多,一个一个去改是很不现实的。
对网关进行修改才是正道。
 
在网关服务器上,
# ip addr sh
发现 ppp 设备的 mtu 值是 1492 。
就在 /etc/ppp/peers/dsl-provider 文件中取消了“mtu 1492”这行的注释并改为了 1480 ,重新拨号却没有变化。在 /var/log/messages 中还看到这样的信息:
Couldn't increase MTU to 1500
Couldn't increase MRU to 1500

没有设置 mtu 值的时候也会有这样的信息,这就意味着 pppoe 忽略了 mtu 这个参数。
 
没办法,继续 google ,有说 plugin rp-pppoe.so 有 bug ,就注释掉这行,改用
pty "/usr/sbin/pppoe -I eth1 -T 80 -m 1480"
结果根本不能拨号了。-_-!
软的不行就来硬的,直接
# ifconfig ppp0 mtu 1480
这下 MSN 能登陆了,但是微软的网站还是打不开。
全文阅读 »