2009年4月15日星期三

42招教你突破GFW封锁

作者:Marc Fizzy 来源:冒泡泡的Marc
其实对于GFW真的已经没什么好说的了,无非只能把它看成一种政治行为,政based on number of characters.府固然有它的原因,可也许这方法实在有点过了吧!现在莫名其妙地把 Tumblr也给封了,到真是不知让说什么好。不过虽说网络被封锁了,也没到山穷水尽的地步,想要自由地使用互联网,方法还是有的。

在线代理

1.使用在线网页代理翻墙。这个大家大概都知道,在 Google上一搜,可以搜出来一大堆。不过这里还是推荐一个在线代理,看这里:http://www.9i7.cn/ ,虽然低级了一点,可毕竟也是最基本的办法。

2.或者使用服务器代理 ,网页是会干净些,没有广告。可是稳定性会差点,配置也麻烦。

一键代理软件[推荐]

3.高级一点的使用自动代理软件来破墙,比如代理超人,一直使用,很方便,省去了许多步骤,亦稳定。

4.或下载最新自由门专业版,启动这个软件之后将浏览器的代理地址设置为 127.0.0.1 端口 8567。速度实在很快。

5.使用Your Freedom 一键代理,具体教程在这里:Your Freedom ― 跨平台的代理软件。这里还有 Mac专用版

6.使用国外自动免费VPN代理Hotspot Shield代理,具体教程在这里:http://www.weiblog.com/weblog/post/109.html

7. 使用MultiProxy代理,一个多功能个人代理服务器,使用户在连在线网时,能保护使用者的隐私,以及透过存取不同的代理服务器而提高下载速度。 MultiProxy也包括了免费发布的匿名代理服务器,使你在下载来自海外比较慢的档案时,能够自动调适,使网络的带宽得以尽用。教程在这里

8.使用花园网络

9.使用Gpass

10.火凤凰(FirePhenix)

11.使用Java Anon Proxy代理,具体教程在这里:Java Anon Proxy - 神奇的匿名代理

12.使用iOpus iPIG代理。免费注册一个账号就可以使用了。

13.使用Tor,这可是最高境界,就是慢了点, 具体教程在这里:Tor代理全套解决方案

代理浏览器

14.使用Torpark浏览器,一款集成Firefox与Tor的浏览器,全自动代理,安装后无需设置即可使用,非常方便。

15.无界浏览

16.自由门

VPN破网技术

17.使用Hamachi 越网: http://sgabello.spaces.live.com/blog/cns!49C127B257EAF225!1287.entry

18.VNN

19.到SecureIX申请一个免费VPN账号,具体教程在这里:SecureIX VPN申请图文教程

20.韩国免费VPN,讨厌的是只能在每天5点申请。优点是速度很快。

21.使用SoftEther 翻墙,具体教程:http://www.csv.com.tw/csv3/SoftEther/SoftEther.htm

使用SSH翻墙

22.翻墙小软件 MyEntunnel

23.分享一个翻墙的小技巧

24.利用Putty通过ssh端口转发实现FireFox和MSN加密代理访问
详见附录2:免费SSH帐号大全

对于Firefox用户

25.使用Firefox,安装Gladder,使用起来很简洁方便。

26.使用CoralCDN免设代理,还可使用它们的FireFox插件,更多: 免设代理 突破打不开的网站

27.使用Firefox,安装Greasemonkey,再装上Google Cache Over GFW这个脚本,修复Google 快照。

28.适用Firefox的用户:安装Torbutton 扩展。

专项翻墙

Blogger

29.访问Blogger.com。用pkblogs inblogs

30.加入并使用Blogspot的HOST列表

Flickr

31.至善至美的插件Access Flickr!(支持Flickr),安装 此Firefox插件,重启Firfox。Okay!现在一切都已设置完成!自由地访问flickr.com,决没有任何的限制!

32.看flickr上的图片。修改电脑上的host文件,将farm1.static.flickr.com指向68.142.232.116 ;farm2.static.flickr.com指向69.147.90.156。

33.让WordPress博客里的Flickr照片也突破GFW:还我 Flickr! 拯救 Flickr 大行动

Wikipedia

34.在hosts文件中新加一行,内容如下:
145.97.39.132 en.wikipedia.org zh.wikipedia.org upload.wikimedia.org
linux的hosts文件路径位 /etc/hosts
winxp的hosts文件路径为 C:\WINDOWS\system32\drivers\etc\hosts

35.使用这个Wikipedia在线浏览器,这是一个基于PHP和Javascript的,专门用于浏览Wikipedia的浏览器。中文用户可以直接访问 这里

36.使用安全连接,安全连接地址为:https://secure.wikimedia.org/wikipedia/zh/wiki/%E9%A6%96%E9%A1%B5

SourceForge

37.使用安全连接,地址和普通地址一样,只是http改为https

38.SourceForge有时候只是部分子域名被封锁。如果我们知道项目的名称,我们可以尝试通过直接访问其他子域地址。例如Filezilla的首页我们可能访问不了,但是下载地址我们可以通过这个地址访问.

Google

39.访问不了Google的请把下面这一行:

216.239.63.104 www.google.com 或者 64.233.171.99 www.google.com  或者 216.239.53.99 www.google.com

添加到:C:\WINDOWS\system32\drivers\etc\hosts文件里,就着访问Google看看是否正常。(其原理是提供较为少用的Google镜像访问)
或使用附录1中的Google的镜像IP地址来访问Google,那么多的IP,应该不至于全都封了吧。(原文: 月光博客

其他

40.使用Google Web Accelerator达到越网的效果。

41.如果碰到DNS劫持,使用OpenDNS提供的DNS服务器,OpenDNS是一个提供免费DNS服务的网站,口号是更安全、更快速、更智能。

42.使用PAC文件(支持Blogger,Google Pages, Wikipedia,Wordpress.com,Livejournal)

下载这个文件:proxy.pac (支持Flashget)

把它放在C盘目录下。

打开Firefox :目录\高级\网络\连接一栏的"设置"按钮

选择"自动代理配置URL",在下面的地址栏中填入:file:///C:/proxy.pac

最后,记得点一下"重新载入",D'Accord!

最后,提到GFW,引用老子的一句话:民至老死不相往来。 说的是老子的小国寡民的思想,不过,若是今天,中国能在联网上创造出这样一个桃花源,倒也是一番奇迹了。

附录1:Google的IP地址一览表:
http://216.239.37.103 http://216.239.57.99 http://64.233.187.107
http://216.239.37.105 http://216.239.59.103 http://64.233.187.89
http://216.239.37.106 http://216.239.59.104 http://64.233.187.99
http://216.239.37.107 http://216.239.59.105 http://66.102.11.104
http://216.239.39.100 http://216.239.59.106 http://66.102.11.105
http://216.239.39.102 http://216.239.59.107 http://66.102.11.106
http://216.239.39.103 http://216.239.59.147 http://66.102.11.107
http://216.239.39.106 http://216.239.59.98 http://66.102.11.99
http://216.239.39.107 http://216.239.59.99 http://66.102.7.104
http://216.239.51.100 http://216.239.63.104 http://66.102.7.105
http://216.239.51.103 http://216.239.63.91 http://66.102.7.106
http://216.239.53.102 http://216.239.63.93 http://66.102.7.107
http://216.239.53.103 http://216.239.63.99 http://66.102.7.147
http://216.239.53.104 http://64.233.161.104 http://66.102.7.18
http://216.239.53.106 http://64.233.161.105 http://66.102.7.19
http://216.239.53.107 http://64.233.161.106 http://66.102.7.89
http://216.239.53.99 http://64.233.161.107 http://66.102.7.91
http://216.239.55.102 http://64.233.161.89 http://66.102.7.95
http://216.239.57.103 http://64.233.163.104 http://66.102.7.99
http://216.239.57.104 http://64.233.163.106 http://66.102.9.104
http://216.239.57.105 http://64.233.163.99 http://66.102.9.105
http://216.239.57.106 http://64.233.183.91 http://66.102.9.106
http://216.239.57.107 http://64.233.183.93 http://66.102.9.107
http://216.239.57.147 http://64.233.183.99 http://66.102.9.147
http://216.239.57.98 http://64.233.187.104 http://66.102.9.99

附录2:免费SSH帐号大全
http://freeshell.org,
http://sdf-eu.or
Server & services:
- 3 load balanced T1s (Sprintlink and Savvis)
- SIGs, Music Compilations and Membership activities
- 10+ DEC Alphas (DS20L/DS10L) running NetBSD
- Supporter of the NetBSD project and The Computer History Museum in Mountain View California
- Members vote in new features
- Member contributed programs and tutorials
- 80MB (free), 600MB and 800MB disk quotas
- Membership perks (such as free admission to the Computer History Museum)
- User configurable email greylisting feature
- Partnership with Colleges world wide for free, in most cases, remote learning
- 16,000+ Dialup access (PPP or SHELL) numbers in the USA and Canada

http://www.grex.org
Server: OpenBSD
Services: email, lynx, personal webspace, compile C programs… (quota: 1Mb)

http://www.nyx.net
Server: ???
Services: email, ftp, telnet, lynx, personal webspace of 100K

http://m-net.arbornet.org
Server: FreeBSD
Services: email, pop3, lynx, personal webspace, compile C programs (quota: 500kb)

http://www.xox.pl
Server: ???
Services:email,pop3,ssh,irc,ftp,web space (quota: 1Mb)

http://www.rootshell.be
Server: Linux
Services: pop3/web email, webspace, the complete set of UNIX/Gnu tools, quota: 2M

http://www.daforest.org
Server: Linux
Services: email, pop3, micq, ftp, personal webspace with cgi, ssi, eggdrop (quota: 10Mb)

http://www.polarhome.com
Server: Linux, FreeBSD, VAX (OpenVMS operating system)
Services: Email, pop3, irc, ftp, eggdrop… cool place on different operating systems!

http://vmsbox.cjb.net
Server: OpenVMS
Services: Free, but only a limited number of accounts will be granted. Standard access via Telnet or SSH. Mail handling via VMS MAIL or POP3/SMTP. Web space with scripting support. Access to Perl and C for programming.

http://www.titanix.net
Server: Linux
Services: pop3,pop2,imap,smtp,ftp,irc,mail,mail->SMS,compiliers, NO quota for now..

http://www.bur.st/
Server: Linux
Services: Only for people in Australia! Access via ssh, scp, ftp, pop3; basic and full shell access, domain hosting and/or seconding, mailing lists.

http://deathrow.vistech.net
Server: OpenVMS on VAX/Alpha
Services: IRC usage is allowed but no bots/relays/etc.

http://nic-nac-project.de
Server: Debian GNU/Linux 3.1 (sarge)
Services: http://nic-nac-project.de/~yourname, Quota (Web & Home): 50 MB on your personal directory, FTP, SCP, SFTP, CGI, PHP4, SSI, SSL, MySQL (one DB, ask for it), PHPMyAdmin yes
eMail: yourname@nic-nac-project.de
Clients: mutt, pine, POP3s, IMAP, WebMail, maximum email size (per element): 5 MB
Features: Spamassassin, Razor2, Anti-Virus (drop of infected mails)

http://aragon.marway.org
Server: SunOS, Linux, IRIX
Services: email, web space…

http://www.magnesium.net/
Server: ???
Services: ???

http://cyberunners.org/
Server: Linux
Services: IPv6, PHP, MySQL, personal subdomain, gcc, IRC access with eggdrop, BitchX, e-mech, one background processes allowed (quota: 10Mb)

http://www.jvds.com/freeshells/
Server: ???
Services/Info: No irc, Quota: 6Mb (shared between mail and web)

http://www.unixdaemons.com/
Server: FreeBSD
Services/Info: mail, webspace, perl… (quota 12Mb)

http://www.polarhome.com/
Server: Linux/RedHat, Linux/Debian, OpenVMS/Alpha, OpenVMS/VAX, Solaris, Ultrix, OpenBSD, FreeBSD, NetBSD, HPUX, AIX
Services/Info: Polarhome.com is non commercial, educative effort for popularization of shell enabled operating systems and Internet services, offering shell accounts and other services on all available systems.

http://shells.thinkgeek.co.uk
Server: Linux/Debian
Services/Info: Mail, gcc, perl, php, eggdrop…

http://www.silenceisdefeat.org/
Server: OpenBSD
Services/Info: 50MB storage space, http access (http://silenceisdefeat.org/~username ), ftp access, ssh, telnet, and communication programs such as IRC, AIM, MSN, ICQ, Lily, and email.

http://www.zsuatt.com/
Server: linux
Services/Info: public_html, php,cgi-bin on request, 3bg procesess, 50mb space , eggdrop allowed, access to compilers , bitchx, ftp , ssh access, and a lot of more…

http://www.rulex.net/
Server: FreeBSD
Services/Info: Free Email - 5mb space, 2 processes / 1 IRC-connection, Free Web-Space - 50mb space, PHP & MySQL supports. Compilers, ssh and telnet has been disabled. BNCs are forbidden.

http://www.aeshells.org/
Server: Slackware 10.1
Services/Info: multiple servers, ssh, email, webspace, 200mb, irc, bitchx, eggdrop, mysql, much, much more…
IRC support: irc.aeirc.org #aeshells

http://freeshell.simosnap.com/
Server: Linux on a 2048/512 dsl line with static ipv4 and ipv6
Services/Info: Free shell service reserved to italian users only. Psybnc eggdrop, ipv6, bitchx, irssi, 2 max process per user, usermin wget…

http://freebsd.prohostuk.net/
Server: FreeBSD
Services/Info: 5M disk quota as standard (more might be available if you can justify it), webspace (PHP enabled), an email address, crontab access (limited), access to all the standard UNIX command line tools and compilers, IRC access through BitchX…

http://www.celebris.net
Server: FreeBSD, Celeron II 700MHz
Services/Info: Access via SSH/SCP, e-mail, MySQL, webspace, PHP, 7 MB quota, IPv6 support, 1 bg, IRC access, NO bots or bouncers

http://unixclan.no-ip.org/
Server: PA-RISC Debian Linux
Services/Info: Few restrictions, instant account additions, see webpage for more details.

http://www.zerged.com
Server: Slackware Linux
Services/Info: Offering free shells for IRC access, eggdrop, php, webmail. Runs BitchX and irssi.

http://www2.steve-gibbs.co.uk/
Server: Mandrake Linux
Services/Info: webpage, irc, gcc, pico , php , cgi scripts… quota: 10Mb

http://www.shellsnet.org
Server:
Services/Info: A large group of free shells providers have joined together on one IRC network and website. That network/site is known as ShellsNet, and is founded on the idea that different shell providers can help each other out in various ways, From sharing information about abusive users to admins helping each other with resolving technical issues…

http://bsd.miki.eu.org/
Server: FreeBSD
Services/Info: Polish server. Full featured freebsd accounts suitable for developement, communication, php, unix scripting, etc.

http://www.chules.net/
Server: Linux (Fedora Core 2)
Services/Info: ???

http://jiyu.gnook.org/
Server: OpenBSD 3.6 - Pentium 2 350hz, 128mb ram
Services/Info: 10mb quota for files (mail on seperate computer), webmail, IRC, WWW, FTP, SSH, NO BNC (and other IRC CRAP)

http://shell.yaphog.org/
Server: FreeBSD
Services/Info: C compiler, perl, free eggdrop hosting, webhosting + php, BitchX, ircII, psybnc, telnet and ssh access, local ircd, and many more free of charge on FreeBSD systems.

http://www.gibbs-hosting.co.uk/freehosting.html
Server: Mandrake 10
Services/Info: 5mb disk space quota, Bitchx access, gcc,cc, pico, php, cgi scripts, apache, public ftp, LYNX access, PHP/CGI scripts enabled

http://www.phoenix-network.org/
Server: Debian
Services/Info: Eggdrop, Psybnc, Irssi, BitchX, IRCD, Shoutcast, IPv4 and IPv6, Vhosts, SFTP, MySQL, PHP, Webhosting, Forum Hosting, Perl, Gcc, Tcl, Sh, Nano, Pico (Disk Quota: 500MB)

http://freeshells.mtveurope.org/
Server: Debian GNU/Linux
Services/Info: 100Mbit bandwidth, Telnet and SSH, gcc compiler, Perl, Python, shell scripting, IRC clients (irssi, Bitchx), eggdrop, IRC access to all IRC networks, 3 Background processes, 1 Gigabyte of quota, including detached sessions ("screen" command is available), FTP access (your own directory accessible via FTP), Your own crontab (running programs in specific periods of time)

http://www.systemshell.net/
Server: Debian Linux
Services/Info: Email: YourUserName@systemshell.net, Website: http://www.systemshell.net/~YourUserName, Disk space is limited. Background processes are limited and can only be programs we have preinstalled on the system.

http://www.kverka.no/
Server: FreeBSD
Services/Info: email/webmail,pop3,ssh,irc,ftp,web space,psybnc,eggdrop,muh,namserver (disk quota: 100mb)

http://www.freeshell.se/
Server: OpenBSD
Services/Info: sshd, irc only ipv6, www with php, storing files and learn som basic commands, nameserver, 25mb disk quota, 1bg process allowed and running programs the staff has selected

http://www.geekshells.org/
Server: ???
Services/Info: IRC clients, MySQL database, www, ftp, email, vhosts, quota: 5Mb

http://www.darktech.org.uk/
Server: ???
Services/Info: based in scotland, UK. Comes with irc access and allowed background processes.

http://furry.doesntexist.org/
Server: Debian Sarge
Services/Info: Your own homepages under public_html, MySQL + PHP, IRC, JSP, quota 1Gb!

http://nullshells.com/
Server: ???
Services/Info:NullShells.com provides free shell access via SSH with secure FTP, Web (PHP/PERL/MySQL) and storage space, free subdomain/domain hosting, IRC client access (BitchX/Irssi), IPv6 vhosts. No email access at this time. Access to development tools such as compilers. No unauthorized bots or bncs. New mature community oriented provider. Must go through account approval process.

http://www.disflux.com/
Server: OpenBSD
Services/Info:Services: PHP, GCC, perl, ruby, TCL, python, irssi, bitchx, epic, games, more. IRC: yes, eggdrop allowed, no bouncers, Quotas: 25MB /home, 25MB www (more if needed)

http://www.bobshells.be/
Server: 4 servers, debian linux
Services/Info:Services: pre-installed eggdrop, pre-installed psybnc, bunch of linux apps, NO WEBSITE/E-MAIL HOSTING, internal server for hacking and fun :), servers on 1Mbit/256KBit connection, account on one of the 3 user servers… Quota: 10Mb

http://www.boinc.ch/
Server: OpenBSD3.8, 64-bit Sparc architecture
Services/Info:Services: 15MB diskquota, homepage http://www.boinc.ch/~yourname , E-mail address yourname@boinc.ch , PHP support and many GNU tools and development compilers available. NO background processes (exceptions may apply)..

http://sense.do.pl/
Server: Running on AMD Duron 1,3ghz
Services/Info: Fully featured account with www/php/mysql(ask for it)/shell/mail.
Accounts will be also quotted for about 40MB fo data.

http://dieguin.no-ip.org Server: Debian Sarge
Services/Info: Free Shells; ssh, bitchx, eggdrop, psybnc, bnc, ircII, webhosting, mail, 4bg for account, Quota: 50mb. More info WWW
http://catcher.no-ip.org/ System: Linux 2.6.12
shell account with unlimited software usage and unlimited bg processes, webspace ( catcher.no-ip.org/anything) with php and mysql database, ftp access to Your account, 1 GB disk quota

http://lostsouls.uv.ro/ Services: ???
http://artax.homelinux.com/ Server: Fedora Core 5
Services: IRC chatting, compiling, and basic unix usage.

http://osmiumnet.com Services: free SSH and SFTP accounts (quota: 10Mb)
http://univac.gnu-linux.net/ Services:
Homepage URL: http(s)://univac.gnu- linux.net/~yourname/
Email Address: yourname@univac.gnu-linux.net
50 MB Quota on your Personal Directory and Mailbox.
SSH, SCP and SFTP Access
CGI, PHP, SSI, SSL, MySQL (One DB, only at request) and PHPMyAdmin.
WebMail and Community Forum.
Access to mutt, screen, python and a number of other unix commands.
irssi, preconfigured to connect to DilexNET IRC Network.

http://hamish.awardspace.com/ Server: Linux Debian Sarge
Services: eggdrops, three user psyBNC's (including yourself) and irssi/bitchx.

http://www.nonlogic.org/ Services: 2gb quota, webspace (with subdomain), can IRC, run bots, elinks, gcc, etc.

http://blinkenshell.org Services:
SSH and SFTP access
50 MB Quota ( more space can be requested )

Webhost ( username.blinkenshell.org , PHP (v5) enabled )
Database ( MySQL , 5 MB Quota, optional )

Mail ( username@blinkenshell.org , optional )
IRC access via screen and irssi/BitchX ( No bots, no eggdrops: Bots. No bouncers. )
ICQ, AIM, Yahoo, MSN access via CenterICQ. Jabber access.
Development environment: compilers (c, c++, java etc), interpreters (python, perl, php), code editors (emacs, nano, vim), utilities (subversion, cvs)

http://www.kraimorie.net/ Server : Linux Slackware
Services/Info: Free Shells; ssh, bitchx, irc, eggdrop,homepages under public_html,etc

http://freeshells.ch/ It is a 64bit Ultrasparc Architecture running NetBSD
250MB of disk space
publicly accessible website (http://www.freeshells.ch/~username )
send/receive email (username@freeshells.ch)
file transfer via scp, sftp, ftp
shell login via ssh or telnet
IPv6 connectivity

http://www.free-shell.net/ Vhosted shells for free just for psyBNC and nothing else. Choice of great amusing vhosts.

http://www.anapnea.net/ Server: Gentoo Linux
Services: 8MB disk space,
MSN, AIM, YIM, and other clients (including ctorrent), Perl, GCC, CLISP, Ruby, and many development tools, Misc. apps and games such as netris,
Limit of 16 simultaneous processes and 3 simultaneous logins per user
Your own webspace at anapnea.net/~username/
SSH tunneling
SFTP access

http://new-order.org/ Server: FreeBSD
Services: ssh / sftp access
100 MB disk quota , screen, lynx, BitchX, centericq
mc, vifm and much more
send and receive emails using mutt or pine
apache+php+mysql
homepages under public_html

http://rednex.1.vg/ Server: gentoo linux
Services: 200MB space, tools for: icq, irc, c/c++, mail, etc…

http://st0rage.org/ Server: Debian linux
Services: gpg, screen, C, C++, and JAVA development tools and libraries

http://glupie.info/ Server: ???
Services: quota: 10-100 mb, php, mysql, irc (bitchx/irssi), ekg, wget, screen, ipv6, jabber server, subdomains: *.glupie.info.

http://www.theunix.info/ NEW! Server: Fedora Core 6
Services: quota 100MB, web space(in quota), php, mysql databases, all kind of developer tools - gcc, cc, python, perl, php… processes 50, screen/detach, psybnc, eggdrop, centericq, micq, BitchX, irssi, software install upon request…

http://opa.x0b.net NEW! Server: FreeBSD
Services/Info: email/webmail, pop3, ssh, irc, ftp, web space, psybnc, eggdrop, nameserver ..

http://ravehosts.co.uk NEW! Server: FreeBSD
Services: 2 background procceses, GCC, Make, All usual compile tools, BitchX, irssi, ninja, eggdrop. NO BNC/BOUNCER/RELAY ON THIS BOX!

http://tshells.selfip.org NEW! Server: ubuntu linux
Services: Trinity Shells provides free linux shell accounts on ubuntu server edition. The free shell includes 50 megs of space for webhosting, network programs (irc, telnet, ssh etc), access to compilers (c, c++, perl etc) as well as access to MySQL.

http://shellshock.homeunix.net NEW! Services: Users are supplied with 500MB of storage space. Instant messanging services including MSN, AOL, Yahoo!, Jabber. IRC services like Eggdrop, BNC (bouncers), and proxies. And web hosting with MySQL, and PHP.

http://shellhostia.com/ NEW! Server: FreeBSD
Services: Vhosts available. PsyBNC and Eggdrop supported.

217.155.230.229/lemonbox/ NEW! Server: Ubuntu linux

http://singularity.darkspace.info/ NEW! Server: RedHat Linux
Services: Quota: 20 Mb, IRC access, gcc, cc, perl, php, python, bitchx, pico, emacs, lynx, wget…
Background processes allowed, but NO psyBNC, Eggdrop, BNC
http://www.nipl.net/servers.html NEW! NIPL currently offers accounts on Debian GNU/Linux servers. They hope to provide access to other free operating systems in future

2009年4月14日星期二

网管?怕什么?

来源:孙康说
之前有朋友说不能从中国内陆进入蚂蚁网,和一些其他网站。现在有了这个新的服务,不必继续唉声叹气了!

一个全新、免费的OpenVPN服务,可以让你秘密的通过这个免费的联网服务,悄悄的进入任何一些网络位置和服务而不会被人知道详情。

用户插入图片

VPN, 全名为Virtual Private Network。作用是让用户通过它联网去别的网点时,把所有往来的讯息全部加密。全部的讯息内容只有这两台电脑(或网络仪器)知晓,其他人就算截下它们 的讯息,也不能知道里面的内容到底是什么。目前来说,点对点的讯息流通就是以这个方式为最省钱、最安全。

在今天的市场价来说,要拥有一个VPN设备其实价钱并不便宜。以三个月前的价格来说,提供50人同时登陆的VPN接入设备就需要最少马币8~15千。如果是更加高端的SSL/VPN(通过网页接入VPN服务)就更加昂贵。

这个服务商(AlonWeb(开新窗口))所提供的方案其实非常简单。整个方案的流程如下:
  1. 安装客户软件。
  2. 接入网络后,启动客户软件,登陆OpenVPN服务。
  3. VPN服务接入成功后,任何流量将会透过这个通道(VPN Tunnel)发收。
  4. 用户端的网络使用和一般无两样。
目前这个服务还是处于测试阶段,所以不晓得过后的收费是多少,但肯定的是速度方面和一般的上网没两样。服务端假设在荷兰,以目前的网络开放度来说,荷兰是其中一个比较高的,所以不怕有什么网址是不能进入的。目前使用这个服务只有两个限制:
  • 每月定额1GB的流量。
  • 禁止使用port 25(防止SPAM电邮)

什么?你没机会用得上?

想一想这个情况:一天政府把某些网页Block了,不让国内人进入时,你就可以通过这个服务登陆这些网页了。以目前的情况来说,是有一定的机会大家都能用得上。

政府之前说什么不管制万维网,其实就只是说爽而已,但听无妨却不能完全相信。只看最近Merdekareview.com记者被挡事情就知道了。

试试看吧,反正又不会对自己有什么损失的。

几个翻墙在线代理

非常感谢作者自荐!
作者:Allan An 来源:Allan An's Blog
最近,很多翻墙工具纷纷中招,详情看这篇这些翻墙工具怎么了
对于很多人,翻墙软件过于复杂,同时很大程度上影响了网速。

这里推荐几个在线代理。


这是 @NetPuter 童鞋在 twitter 上告诉我的一个代理网站,尝试之后觉得速度不错。可以满足基本的翻墙需求,YoutubeGFW Blog牛博国际等网站均能正常浏览,且速度不错。

2、 mirror

这篇文章已经介绍过了mirror。我在使用中发现用镜子除了不能看Youtube,其他还行。而且有一个方便之处是,只要在 https://soproxy.appspot.com/ 后加上想访问的地址就能进入了。

3、go2

昨晚得到消息,go2已经恢复对大陆开放,但访问地址已经变掉。go2声称:“不再提供大文件下载服务。不要使用工具通过Go2下载整个网站。请遵循Google相关协议中国相关法规,合理使用Go2,以免给Go2和他人带来不便。”真是“入乡随俗”啊。
总的来说, 这几款算是比较优秀的在线代理了,尤其是go2的回归,很令翻墙者鼓舞。

linux下IPTABLES配置详解


如果你的IPTABLES基础知识还不了解,建议先去看看.


开始配置


我们来配置一个filter表的防火墙.


(1)查看本机关于IPTABLES的设置情况


[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination


Chain FORWARD (policy ACCEPT)
target prot opt source destination


Chain OUTPUT (policy ACCEPT)
target prot opt source destination


Chain RH-Firewall-1-INPUT (0 references)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口.


如果你在安装linux时没有选择启动防火墙,是这样的



[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination


Chain FORWARD (policy ACCEPT)
target prot opt source destination


Chain OUTPUT (policy ACCEPT)
target prot opt source destination


什么规则都没有.


(2)清除原有规则.


不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.



[root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则


我们在来看一下


[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination


Chain FORWARD (policy ACCEPT)
target prot opt source destination


Chain OUTPUT (policy ACCEPT)
target prot opt source destination


什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存.


[root@tp ~]# /etc/rc.d/init.d/iptables save



这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.


[root@tp ~]# service iptables restart



现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧


(3)设定预设规则


[root@tp ~]# iptables -p INPUT DROP


[root@tp ~]# iptables -p OUTPUT ACCEPT


[root@tp ~]# iptables -p FORWARD DROP
上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包


而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.


可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.


这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP.


注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则.


怎么办,去本机操作呗!


(4)添加规则.


首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链


为了能采用远程SSH登陆,我们要开启22端口.


[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT


[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.


其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:


[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT ,其他同理.)


如果做了WEB服务器,开启80端口.


[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
如果做了邮件服务器,开启25,110端口.


[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT

如果做了FTP服务器,开启21端口


[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT


[root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT


如果做了DNS服务器,开启53端口


[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT


如果你还做了其他的服务器,需要开启哪个端口,照写就行了.


上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP


允许icmp包通过,也就是允许ping,


[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)


[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)


允许loopback!(不然会导致DNS无法正常关闭等问题)

IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)

下面写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链.


减少不安全的端口连接


[root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP


[root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP


有些些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会


还有其他端口也一样,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也应被禁止,我在这写的也不全,有兴趣的朋友应该去查一下相关资料.



当然出入更安全的考虑你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加


允许SSH登陆一样.照着写就行了.



下面写一下更加细致的规则,就是限制到某台机器


如:我们只允许192.168.0.3的机器进行SSH连接


[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT


如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.


24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了.


-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.


或采用命令方式:


[root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT


然后保存,我再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存.写入到/etc/sysconfig/iptables文件里.


[root@tp ~]# /etc/rc.d/init.d/iptables save


这样写 !192.168.0.3 表示除了192.168.0.3的ip地址


其他的规则连接也一样这么设置.



在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控.


开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)


[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT


[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT


丢弃坏的TCP包


[root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP


处理IP碎片数量,防止攻击,允许每秒100个


[root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT


设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.


[root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT


我在前面只所以允许ICMP包通过,就是因为我在这里有限制.


二,配置一个NAT表放火墙


1,查看本机关于NAT的设置情况


[root@tp rc.d]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination


Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 192.168.0.0/24 anywhere to:211.101.46.235


Chain OUTPUT (policy ACCEPT)
target prot opt source destination


我的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则).关于怎么配置NAT,参考我的另一篇文章


当然你如果还没有配置NAT的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的


如果你想清除,命令是


[root@tp ~]# iptables -F -t nat


[root@tp ~]# iptables -X -t nat


[root@tp ~]# iptables -Z -t nat



2,添加规则


添加基本的NAT地址转换,(关于如何配置NAT可以看我的另一篇文章),


添加规则,我们只添加DROP链.因为默认链全是ACCEPT.


防止外网用内网IP欺骗


[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)


例:


禁止与211.101.46.253的所有连接

[root@tp ~]# iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP


禁用FTP(21)端口


[root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP


这样写范围太大了,我们可以更精确的定义.


[root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -d 211.101.46.253 -j DROP


这样只禁用211.101.46.253地址的FTP连接,其他连接还可以.如web(80端口)连接.



按照我写的,你只要找到QQ,MSN等其他软件的IP地址,和端口,以及基于什么协议,只要照着写就行了.



最后:


drop非法连接
[root@tp ~]# iptables -A INPUT -m state --state INVALID -j DROP
[root@tp ~]# iptables -A OUTPUT -m state --state INVALID -j DROP
[root@tp ~]# iptables-A FORWARD -m state --state INVALID -j DROP

允许所有已经建立的和相关的连接
[root@tp ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


[root@tp ~]# /etc/rc.d/init.d/iptables save


这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.


[root@tp ~]# service iptables restart



别忘了保存,不行就写一部保存一次.你可以一边保存,一边做实验,看看是否达到你的要求,


上面的所有规则我都试过,没有问题.


写这篇文章,用了我将近1个月的时间.查找资料,自己做实验,希望对大家有所帮助.如有不全及不完善的地方还请提出.


因为本篇文章以配置为主.关于IPTABLES的基础知识及指令命令说明等我会尽快传上,当然你可以去网上搜索一下,还是很多的.


一个iptables脚本


一个iptables脚本

环境:redhat9 加载了string time等模块,加载方法参照 Article_Show.asp?ArticleID=534

etho 接外网──ppp0
eth1 接内网──192.168.0.0/24


#!/bin/sh
#
modprobe ipt_MASQUERADE
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -X
###########################INPUT键###################################
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 110,80,25 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 139 -j ACCEPT
#允许内网samba,smtp,pop3,连接
iptables -A INPUT -i eth1 -p udp -m multiport --dports 53 -j ACCEPT
#允许dns连接
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
#允许外网vpn连接
iptables -A INPUT -s 192.186.0.0/24 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
#为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃
iptables -A INPUT -s 192.186.0.0/24 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
#为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃
iptables -A INPUT -p icmp -m limit --limit 3/s -j LOG --log-level INFO --log-prefix "ICMP packet IN: "
iptables -A INPUT -p icmp -j DROP
#禁止icmp通信-ping 不通
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE
#内网转发
iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN
iptables -A syn-flood -j REJECT
#防止SYN攻击 轻量
#######################FORWARD链###########################
iptables -P FORWARD DROP
iptables -A FORWARD -p tcp -s 192.168.0.0/24 -m multiport --dports 80,110,21,25,1723 -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.0.0/24 --dport 53 -j ACCEPT
iptables -A FORWARD -p gre -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -p icmp -s 192.168.0.0/24 -j ACCEPT
#允许 vpn客户走vpn网络连接外网
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -p udp --dport 53 -m string --string "tencent" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat -j DROP
#星期一到星期六的8:00-12:30禁止qq通信
iptables -I FORWARD -p udp --dport 53 -m string --string "TENCENT" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat -j DROP
#星期一到星期六的8:00-12:30禁止qq通信
iptables -I FORWARD -p udp --dport 53 -m string --string "tencent" -m time --timestart 13:30 --timestop 20:30 --days Mon,Tue,Wed,Thu,Fri,Sat -j DROP
iptables -I FORWARD -p udp --dport 53 -m string --string "TENCENT" -m time --timestart 13:30 --timestop 20:30 --days Mon,Tue,Wed,Thu,Fri,Sat -j DROP
#星期一到星期六的13:30-20:30禁止QQ通信
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "qq.com" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat -j DROP
#星期一到星期六的8:00-12:30禁止qq网页
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "qq.com" -m time --timestart 13:00 --timestop 20:30 --days Mon,Tue,Wed,Thu,Fri,Sat -j DROP
#星期一到星期六的13:30-20:30禁止QQ网页
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "ay2000.net" -j DROP
iptables -I FORWARD -d 192.168.0.0/24 -m string --string "宽频影院" -j DROP
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "色情" -j DROP
iptables -I FORWARD -p tcp --sport 80 -m string --string "广告" -j DROP
#禁止ay2000.net,宽频影院,色情,广告网页连接 !但中文 不是很理想
iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP
iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP
#禁止BT连接
iptables -A FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 --connlimit-mask 24 -j DROP
#只允许每组ip同时15个80端口转发
#######################################################################
sysctl -w net.ipv4.ip_forward=1 &>/dev/null
#打开转发
#######################################################################
sysctl -w net.ipv4.tcp_syncookies=1 &>/dev/null
#打开 syncookie (轻量级预防 DOS 攻击)
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=3800 &>/dev/null
#设置默认 TCP 连接痴呆时长为 3800 秒(此选项可以大大降低连接数)
sysctl -w net.ipv4.ip_conntrack_max=300000 &>/dev/null
#设置支持最大连接树为 30W(这个根据你的内存和 iptables 版本来,每个 connection 需要 300 多个字节)
#######################################################################
iptables -I INPUT -s 192.168.0.50 -j ACCEPT
iptables -I FORWARD -s 192.168.0.50 -j ACCEPT
#192.168.0.50是我的机子,全部放行!


虚拟机网络设置及端口映射详细教程


从我开始架设SA服务器以来,一直在CSA论坛得到各位高手的指点,获益良多,使我少走许多弯路,自己在实践过程中,也总结了一些经验,把它整理出来,希望对遇到同样问题的朋友有一些帮助!

我的配置:

主机:windows 2000
虚拟机:RedHat LINUX 9.0
软件: WMware 5.0
局域网内通过路由上网,另一种为公网固定IP上网(主机为winodws 2003 server)

虚拟机的安装我就不多说了,论坛里有许多教程和录相,有一点就是装RedHAT时记得安装windows文件服务,否则无法与主机共享文件,与主机的网络连接先选择桥接方式(Bridge),装好后可以更改为其他方式。

现在大家比较多遇到的问题就是虚拟机安装好后与主机无法共享文件和上不了网,点击"网络服务器"后提示找不到SMB服务器,如果你安装了Windows文件服务还会出现这种提示,那就是你网卡的设置不对,下面我列出我用过的桥接模式和NAT模式的网络设置方法:


装好虚拟机后,在Windows2000的网络连接里会多出两个网卡,一个是VMnet1和VMnet8千万不要自作聪明改这两个网卡的IP,否则你会联不上网。

一、采用桥接方式(Bridge)

如果你是采用桥接方式,那设置就最简单了,就像局域网内独立的两部电脑一样:比如你的windows2000 的IP为:192.168.1.5,子网掩码为255.255.255.0,网关为:192.168.1.1
那么你的LINUX的IP为:192.168.1.X,子网掩码为255.255.255.0,网关为:192.168.1.1
DNS与windows2000一样,这样设置后重启电脑就可以从Windows2000里拷文件了。虚拟机也可以顺利上网了(局域网路由上网)。

关于这种接入方式的端口映射问题,我曾经用TP_LINK的SOHO路由试过,设置也很简单,在路由里把9065(SA GMSV用到的端口)和9200(SAAC用到的端口)映射到你虚拟机的IP地址就行了,本例里为(192.168.1.X,就是前面你所设的LINUX的IP地址),大家一般都是动态的IP,如果把路由设置成一直在线的话,除非你重启路由或断线重连,要不你的公网IP一直都是你现在的IP(可以上
www.ip138.com去检测你现在的公网IP),或者你用花生壳也行,不过在serverlist.txt里的IP要改成你申请的花生壳的域名。

二、NAT接入方式

用NAT接入方式,主要是用于主机有公网IP的用户(方便端口映射),局域网接入的用户也可以用,不过我觉得局域网接入的用户用桥接方式比较方便,本例所介绍的设置为有固定公网IP的设置。

NAT接入方式,主机与虚拟机这间的通讯是通过VNET8这个虚拟网卡进行的,你的虚拟机安装完成后,你的主机的网络连接里会多出Vnet1(用于host-only接入方式,本人没试过用这种接入方式)和Vnet8,Vnet8的IP一般会自动设成192.168.XXX.1,子网掩码为255.255.255.0,在你虚拟机上(是指虚拟机,而不是你在虚拟机上所安装的操作系统)的NAT的IP一般为192.168.XXX.2,子网掩码为255.255.2550,那么你客户机(本例为RedHat 9.0)的IP设置就就为:

IP地址:192.168.XXX.3(或者其他的IP,但要在同一网段且不能为.1或.2)
子网掩码为:255.255.255.0
网关为:192.168.XXX.2(此处一定要设为虚拟机的IP,切记!)
DNS设成与主机一样。

重启后客户机就可以顺利上网了。

采取这种接入方式,它的端口映射是在虚拟机(不是客户机)的网络设置里设定,以我的VMware 5.0为例:

选择菜单里的 Edit ->virtual network settings 打开对话框,然后选择NAT页,点击Edit,在打开的对话框中点Port forwarding按钮,然后点Incoming TCP Ports里的Add,打开Map Incoming Port对话框,在Host port中填9065,Virtual Machine IP Address填客户机(REDHAT)的IP地址,Port也填9065,后面的Description为这个映射的描述,随便填;

添加9200端口映射也同理,把前面的的9065换成9200就可以了。
设置后重启虚拟机,从外网测试可以顺利登陆你的SA服务器了。


以上设置经本人实际测试成功。希望这些对大家有些帮助。


linux安装完毕时区时间问题


安装完系统发现时间与现实时间相差+8小时,经分析由以下产生。


我们在安装时选择的是上海,而centos5把bios时间认为是utc时间,所以+8小时给我们。这个时候的bios的时间和软件的时间是不一致的。一个代表 utc 一个代表我们设置的cst(+8时区)。


我们要做的调整是:


1、vi /etc/sysconfig/clock




ZONE="Asia/Shanghai"
UTC=false (主要是这个选项,设置硬件时钟不是跟utc一致)
ARC=false




2、linux的时区设置为 上海


ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime





3、对准时间


ntpdate 192.43.244.18





4、设置硬件时间和软件时间的一致并校准




/sbin/hwclock --systohc





这样我们的linux软件和计算机硬件都是cst时间了--并且是我们设置的上海时区





有什么问题参考以下两篇文章:




http://www.freelamp.com/1003248387/index_html




http://linux.vbird.org/linux_server/0440ntp.php


iptables 限速Shell无需TC(限制NAT机器上Internet速度)


比如说我现在限制192.168.10.166-到192.168.10.220这个网段的IP上网速度为30Kbs左右,实现的脚本如下

#!/bin/bash

for ((i = 166; i < 220; i++))
do
/sbin/iptables -A FORWARD -s 192.168.10.$i -m limit --limit 20/s -j ACCEPT
iptables -A FORWARD -s 192.168.10.$i DROP
done

执行此脚本即可

iptables中有个limit模块,遗憾的是他只能限制packet,而不是Bytes
不过…… 先来看一段资料




[root@platinum root]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:0A:EB:07:22:82

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:443747 errors:0 dropped:0 overruns:0 frame:0

TX packets:417700 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:218731248 (208.5 Mb) TX bytes:65766454 (62.7 Mb)

Interrupt:9 Base address:0xac00



eth1 Link encap:Ethernet HWaddr 00:E0:4C:39:6D:96

inet addr:172.25.39.254 Bcast:172.25.39.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:691411 errors:0 dropped:0 overruns:0 frame:0

TX packets:960662 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:82794610 (78.9 Mb) TX bytes:976909968 (931.6 Mb)

Interrupt:11 Base address:0xc800



lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:1106 errors:0 dropped:0 overruns:0 frame:0

TX packets:1106 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:314982 (307.5 Kb) TX bytes:314982 (307.5 Kb)



ppp0 Link encap:Point-to-Point Protocol

inet addr:221.219.204.209 P-t-P:61.149.164.1 Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1

RX packets:438850 errors:0 dropped:0 overruns:0 frame:0

TX packets:412803 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:3

RX bytes:208763034 (199.0 Mb) TX bytes:56389653 (53.7 Mb)



ppp37 Link encap:Point-to-Point Protocol

inet addr:10.39.1.254 P-t-P:10.39.1.1 Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1480 Metric:1

RX packets:14728 errors:0 dropped:0 overruns:0 frame:0

TX packets:12451 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:3

RX bytes:1327878 (1.2 Mb) TX bytes:2772440 (2.6 Mb)



[root@platinum root]#


eth0是我的WAN网卡
eth1是我的LAN网卡
ppp0是通过PPPoE方式拨叫网通线路
ppp37是我自己的PPPoE SERVER,给其他用户接入使用,用户使用的是WINXP系统

从上面的资料可以看到MTU这个东西,eth0和eth1都是1500,ppp0是1492,ppp37是1480(如果客户端是WIN2000则也是1492)

什么是MTU?
MTU是Maximum Transmission Unit的缩写。意思是网络上传送的最大数据包,单位是字节。如果本机的MTU比网关的 MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。把本机的MTU设成比网关的MTU小或相同,就可以减少丢 包。不同的接入方式,MTU值是不一样的,下面是常用的几种接入方式默认的MTU值:
EtherNet (以太网)1500
PPPoE(ADSL) 1492
Dial-up(modem) 576

由此可以看出,一个标准以太网Frame是1500 Bytes,那么我们知道了这一点,可以利用iptables来进行带宽限制

iptables中有个limit模块,遗憾的是他只能限制packet,而不是bytes
但是我们现在已经知道了一个标准Ethernet Frame是1500 Bytes,这样就好做了

下面给大家演示一个限制upload速率的实例(已经通过测试)




# Limit Platinum

iptables -A FORWARD -s 10.39.1.1 -m limit --limit 20/s -j ACCEPT

iptables -A FORWARD -s 10.39.1.1 -j DROP


当然,用这种方法可以比tc更灵活,可以基于IP、PORT去进行控制,也可以针对INPUT/OUTPUT/FORWARD进行限制

这样唯一不好的是,不一定每个packet都是1500 Bytes,这样的限制只是一个大概,并非精确,一般速度均有所偏差


使用iptables实现NAT服务


实验设备:一台装有Redhat 9.0的linux系统服务器,并配置有双网卡.一台用于测试的个人电脑.


A:在服务器上配置网络环境.


(1)配置网卡eth0、eth1


在本例中,eth0连接外部internet,它的ip地址是192.168.5.85,内部网通过eth1上网,它的ip地址是:192.168.2.1


a、对eth0的配置


DEVICE=eth0
PEERDNS=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.5.85
NETMASK=255.255.255.0
GATEWAY=192.168.5.1
TYPE=Ethernet
NETWORK=192.168.5.0
BROADCAST=192.168.5.255
USERCTL=no
HWADDR=00:0C:29:F8:4E:37


b、对eth1的配置


DEVICE=eth1
PEERDNS=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.2.1
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
TYPE=Ethernet
NETWORK=192.168.2.0
BROADCAST=192.168.2.255
USERCTL=no
HWADDR=00:0C:29:F8:4E:41


c、为系统指定DNS服务器


可以在/etc/resolv.conf指定DNS服务器(如果该文件不存在,则可以新建该文件)编辑该文件内容如下:


nameserver 202.102.224.68


nameserver 202.102.227.68


d、使网络生效


#service network restart


(2)使用iptables实现NAT


具体操作步骤如下:


a、打开内核的路由功能。需要执行下面命令:


#echo "1" >/proc/sys/net/ipv4/ip_forward


b、实现ip伪装.在NAT表中的POSTROUTING链加入一条规则,这条规则的内容是由eth0外网接口送出的包会被伪装(MASQUERADE),这样就能使用iptables实现NAT命令了;


#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


做完上面的配置后,你可以用下面指令查看nat表的POSTROUTING链规则表


# iptables -t nat -L POSTROUTING


执行后如果出现下面的信息,表明配置正确.


MASQUERADE all anywhere anywhere


NAT客户端的配置


设置为和内网网卡eth1一样的网段,网关就可以了.如果你配置的还有DHCP的话还可以和它结合起来使用


iptables系统配置防火墙和NAT功能的实例学习


*********************************************************
* *
*******关于防火墙系统恢复操作和启动方法说明*******************
* *
*********************************************************


该系统主要作用就是对内部服务器作静态nat映射和端口访问控制。


在防火墙中,系统启动时已经自动启动了以上防火墙脚本,启动位置为:/etc/rc.d/rc.local文件中,
sh /etc/rc.d/nat_firewall.sh #在系统启动时自动启动该脚本


如果需要手动启用防火墙和静态nat映射功能,操作以下步骤即可。
cd /etc/rc.d/
./portnat.sh



如果用户不需要对内部服务器作任何端口控制,只需要作静态nat映射,只要执行以下文件,即可恢复不设防火墙状态。
cd /etc/rc.d/
./no_firewall.sh


**********************************************************
* *
****关于 Slackware 9.1.0 系统配置防火墙和NAT功能的配置说明*****
****(nat_firewall.sh) *
**********************************************************


#!/bin/sh
# make:zcatlinux
# time:2004-06-18
# e-mail:
xuequansongmo@126.com


PATH=/sbin:/bin:/usr/sbin:/usr/bin


#设置内部服务器对外的tcp端口,如果需要修改对内部访问的端口号,直接在这里修改即可,
#添加规则就是之间端口号之间有一个空格就可以了。下面upd端口添加规则也一样
##tcp allow ports
TPORTS="80 22" #在远程只允许用户访问防火墙的22、80端口


#设置内部服务器对外的udp端口
##udp allow ports
UPORTS="53 123"


#设置防火墙对外网卡及ip地址
##config out_eth interface
OUT_ETH="eth1"
OUT_ETH_IP="202.138.164.110"

#设置防火墙外网卡的tcp端口
##set out_eth_ip(firewall out ip) ports
OUT_ETH_IP_PORTS="22" #在远程只允许用户访问防火墙的22端口


#设置防火墙对内网卡及ip地址
##config in_eth interface
IN_ETH="eth0"
IN_ETH_IP="10.10.11.110"


#设置防火墙内部服务器的ip地址段
##internal ip range
SERVER_IP="10.10.11.0/24"


1、系统对ip传发包的配置文件初始化操作,输入值为0表示不转发,1为开启转发功能,此处需要初始化为0
#Disable forwarding
echo 0 > /proc/sys/net/ipv4/ip_forward


#即初始化iptables规则列表。
#reset default policies
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT


#删除iptables所有规则
##del all iptables rules
iptables -F INPUT ##删除iptables中INPUT规则
iptables -F FORWARD ##删除iptables中FORWARD规则
iptables -F OUTPUT ##删除iptables中OUTPUT规则


#清空所有规则链
##clean all non-default chains
iptables -X
iptables -t nat -X


#定义iptables安全的默认规则
##iptables default rules
iptables -P INPUT DROP ##拒绝所有外部发往本机的数据包,即禁止所有对内部的数据包通过
iptables -P FORWARD DROP ##不允许所有数据包转发
iptables -P OUTPUT ACCEPT ##允许所有内部发往外部的包通过


#允许icmp包通过,即允许ping
##allow ping packets
iptables -A INPUT -p ICMP -s 0/0 --icmp-type 0 -j ACCEPT
iptables -A INPUT -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT
iptables -A INPUT -p ICMP -s 0/0 --icmp-type 5 -j ACCEPT
iptables -A INPUT -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
iptables -A INPUT -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
iptables -A INPUT -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT


#当建立联机状态时,允许数据互相转发。其中,ESTABLISHED表示该封包属于某个已经建立的联机,
#RELATED 表示该封包是属于某个已经建立的联机,所建立的新联机。
##enable forwarding
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
##允许要求联机封包或响应封包之间转发包


#数据包状态为联机和响应状态时允许进入
##STATE RELATED for router
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
##允许要求联机封包或响应封包进入


#允许源地址为服务器ip段发往防火墙内网卡的包进入
##accept internal packets on the internal i/f
iptables -A INPUT -i $IN_ETH -s $SERVER_IP -p tcp -j ACCEPT


#控制防火墙本身对外ip地址的端口
##accept firewall out eth ip ports
for OEP in $OUT_ETH_IP_PORTS
do
iptables -A INPUT -d $OUT_ETH_IP -p tcp --destination-port $OEP -j ACCEPT
done


#控制内部服务器对外的端口
##open ports on router for server/services
#TCP PORTS
(tcp类型的端口)
for ATP in $TPORTS
do

#允许源地址为非内部服务器段的所有ip,目的地址为内部服务器ip的tcp端口的连接包进入
iptables -A INPUT ! -s $SERVER_IP -d $SERVER_IP -p tcp --destination-port $ATP -j ACCEPT
iptables -A FORWARD -p tcp --destination-port $ATP -j ACCEPT #被允许目的端口连接之间互相传送数据包
done


#UDP PORTS(udp类型的端口)
for AUP in $UPORTS
do
iptables -A INPUT -p udp --destination-port $AUP -j ACCEPT
iptables -A FORWARD -p udp --destination-port $AUP -j ACCEPT
done


#在对内访问的连接中,只要是INVALID(即无效的连接)就丢弃该包
##bad_packets chain
##drop INVALID packets immediately
#iptables -A INPUT -p ALL -m state --state INVALID -j DROP


#限制过滤规则的比对频率为每秒钟平均流量100个封包,将瞬间流量设定为一次最多处理100个封包
(超过上限的封包将丢弃不予处理),防止有拒绝服务性的攻击,即洪水性的大量数据包攻击。
##limit SYN flood
#iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
##限制对内部封包的发送速度
#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT##限制建立联机的转发包的速度


#允许本机Loopback 接口,即127.0.0.1
##allow loopback
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT


#启动IP Forward 接口
##enable forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward


#当本机做NAT时,在外网卡上面绑定多个静态映射的ip地址。如果要添加修改nat静态映射的ip地址,在这里按照规则添加即可
##config net-eth ip address
ifconfig eth0:1 202.138.164.101 netmask 255.255.255.128
ifconfig eth0:2 202.138.164.102 netmask 255.255.255.128
ifconfig eth0:3 202.138.164.103 netmask 255.255.255.128
ifconfig eth0:4 202.138.164.104 netmask 255.255.255.128
ifconfig eth0:5 202.138.164.105 netmask 255.255.255.128
ifconfig eth0:8 202.138.164.108 netmask 255.255.255.128


#设置做静态nat的映射规则。如果需要添加删除静态nat的条目,在这里修改添加即可。
##set static IP nat rule, POSTROUTING/PREROUTING
##(snat)iptables -t nat -A POSTROUTING -j SNAT --to 202.202.210.10
##(dnat)iptables -t nat -A PREROUTING -j DNAT --to 10.10.10.10
#
iptables -t nat -A POSTROUTING -s 10.10.11.101 -j SNAT --to 202.138.164.101
##收到的源ip地址为10.10.10.101的数据包进行源NAT(SNAT)
iptables -t nat -A PREROUTING -d 202.138.164.101 -j DNAT --to 10.10.11.101##收到的目的ip为202.38.64.101的所有数据包进行目的NAT(DNAT)


iptables -t nat -A POSTROUTING -s 10.10.11.102 -j SNAT --to 202.138.164.102
iptables -t nat -A PREROUTING -d 202.138.164.102 -j DNAT --to 10.10.11.102


iptables -t nat -A POSTROUTING -s 10.10.11.103 -j SNAT --to 202.138.164.103
iptables -t nat -A PREROUTING -d 202.138.164.103 -j DNAT --to 10.10.11.103


iptables -t nat -A POSTROUTING -s 10.10.11.104 -j SNAT --to 202.138.164.104
iptables -t nat -A PREROUTING -d 202.138.164.104 -j DNAT --to 10.10.11.104


iptables -t nat -A POSTROUTING -s 10.10.11.105 -j SNAT --to 202.318.164.105
iptables -t nat -A PREROUTING -d 202.138.164.105 -j DNAT --to 10.10.11.105


iptables -t nat -A POSTROUTING -s 10.10.11.108 -j SNAT --to 202.138.164.108
iptables -t nat -A PREROUTING -d 202.138.164.108 -j DNAT --to 10.10.11.108



********************************************************************
* *
**********附:删除防火墙规则只做nat的文件说明(no_firewall.sh)**********
* *
********************************************************************


#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin


#删除iptables所有规则
##del all iptables rules
iptables -F INPUT
##删除iptables中INPUT规则
iptables -F FORWARD ##删除iptables中FORWARD规则
iptables -F OUTPUT ##删除iptables中OUTPUT规则


#清空所有规则链
##clean all non-default chains
iptables -X
iptables -t nat -X


##对所有连接包都做默认接受处理,即不作任何控制
#reset the default policies in the nat table.
#
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT


##打开ip forward转发接口
echo 1 > /proc/sys/net/ipv4/ip_forward


在Centos5下安装配置VNC的方法详细介绍


VNC简介




VNC,全称为Virtual Network Computing,是一个桌面共享系统。它的功能,类似于windows中的远程


桌面功能。VNC使用了RFB(Remote FrameBuffer,远程帧缓冲)协议来实现远程控制另外一台计算机。它把键盘、鼠标动作发送到远程计算机,并把远程计算机的屏幕发回到本地。




VNC技术与平台无关,VNC Viewer可以和VNC Server在不同的操作系统上。VNC几乎支持所有的操作系统,也支持Java,甚至可以通过支持Java的浏览器来访问VNC Server。多个VNC客户端可以同时连接到一个VNC Server上。




在centos5下安装配置VNC




1.检查VNC客户端和服务器端是否已经安装




执行如下命令:




rpm -q vnc vnc-server


如果返回类似如下信息,




package vnc is not installed


vnc-server-4.0-8.1




则说明系统已经默认安装了vnc服务器端(一般来说,系统都默认安装了vnc server)。




2. 将用户名加入到配置文件中




使用如下命令编辑配置文件,添加帐户信息:




vi /etc/sysconfig/vncservers


做如下修改(红色部分为添加的部分):














#
# Uncomment the line below to start a VNC server on display :1
# as my 'myusername' (adjust this to your own). You will also
# need to set a VNC password; run 'man vncpasswd' to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted! For a secure way of using VNC, see
# <URL:http://www.uk.research.att.com/vnc/sshvnc.html>.

# VNCSERVERS="1:myusername"

# VNCSERVERS="1:gavin 2:john" # use the method for more user
VNCSERVERS="2:root"

# VNCSERVERARGS[1]="-geometry 800x600"
VNCSERVERARGS[2]="-geometry 1024x768"




3.设置 root用户的密码




使用如下命令设置密码:




vncpasswd


当提示Verify时,再次输入密码确认。




4.启动VNC服务




使用如下命令启动VNC SERVER




sbin/service vncserver start


当显示如下信息时,表示启动成功:




Starting VNC server: 2:root                [ OK ]


5.修改VNC SERVER的窗口管理器




vnc server默认使用的窗口管理器是twn,这是一个非常简单的窗口管理器,我们可以改成常用的GNOME或者KDE。




先使用如下命令进入用户的home目录:




cd ~/.vnc


编辑启动项:




vi xstartup


按照如下方式修改启动项:














#!/bin/sh

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
gnome-session & #以GNOME作为VNC的窗口管理器
#startkde & #kde desktop
#twm & #注掉系统默认的窗口管理器




6.重启VNC SERVER




/sbin/service vncserver restart


当系统提示如下信息时,表示重启成功:




Shutting down VNC server: 2:root [ OK ]


Starting VNC server: 2:root                [ OK ] 


windows登录到VNC SERVER




(1).从IE登录




直接从IE浏览器中输入如下地址:




http://xxx.xxx.xxx.xxx:5802




输入密码即可使用。




(2).从VNC view登录




在windows上安装vnc view,然后输入xxx.xxx.xxx.xxx:2,连接登录,输入密码即可。




备注:如果从vnc view登录时,提示connection refused(10061),则是因为linux防火墙的问题,登录centos系统,选择System-->Preferences-->Remote Desktop,勾选sharing中的两项,Security两项不勾,点击关闭,然后再重新用vnc view登录即可。


实践 3322.org 动态更新IP详细方法


有关 3322.org 动态更新IP的解决方案

说白了,就是用 lynx来解决的,,,已知的兄弟请不要BS我,非常感谢,呵。


相信 3322.org 这个动态域名不少人应该比较熟悉了。
我的小站用的正是 3322.org 域名,由于原来一直无法顺利解决内网获取外网IP的问题,因此很是
无奈,经常要手工更新 ip,而且如果人不在主机旁边的话根本无法正确得知IP。

其客户端 for Win2000/XP/2003 在内网里可以很稳定/正常的获取到外网IP,可是 for Linux/Fr
eeBSD/Unix 版本却不行,后经过大量的查询终于找到解决方案,现将解决方案写在这儿,呵。

同时感谢提供这些方案的高手们,我只是将方案组合在一起

先上 http://lynx.isc.org/release/ 下载 lynx,当然,这是 linux 主机没有安装的情况下才需要
安装的。


fetch http://lynx.isc.org/release/lynx2.8.5.tar.gz

下载至本地之后解压

tar xzvf lynx2.8.5.tar.gz

进入其目录之后先配置

./configure



然后运行

make install 进行安装


安装成功之后编辑 /etc/crontab 文件
输入
crontab -e
加入

*/5 * * * * /usr/local/bin/lynx -mime_header -auth=username:password http://www.3322.org/dyndns/update?system=dyndns&hostname=your.3322.org

保存退出就可以了
等5分钟就OK了


目的就是每 5 分钟自动更新一次 ip,
username与 password分别为你在 3322.org 所注册的用户名与密码
,your.3322.org就是你所注册的 3322.org 域名。

这儿要注意的在 crontab 当中命令一定要指明全路径,否则的话是运行不了此
命令的,为此我走了些歪路,呵,这儿专门提醒下自己。

lynx 可以用 whereis lynx 查询其全路径。


[root@hamaslinux root]# whereis lynx
lynx: /usr/local/bin/lynx /usr/local/lib/lynx.cfg

得知全路径是 /usr/local/bin
本人在做的时后还出现以下问题设置好了老是不能更新:为避免出以下问题先测试这一个语句是否正确填写好了
输入
#lynx -mime_header -auth=username:password http://www.3322.org/dyndns/update?system=dyndns&hostname=your.3322.org
回车
出现good 222.122.*.*表明语句是正确的,
不出现good再仔细查找问题出在哪里


顺便附上 crontab 的用法

浏览 crontab -l
修改编辑 crontab -e
然后 esc 和 i 键来回切换模式状态,i 为编辑,esc后为功能(x 删除,dd 删一行),:wq 保存退出,:q!不保存退出。就这样。
* * * * * 五个项目,
minute, hour,mday,month,wday,command。它们差不多已经说明了各自的用处。
Minute 是命令要运行时的分钟,Hour 跟 minute 差不多,只是用小时来表示。Mday 是每个月的天。
Month 跟 hour 还有 minute 都差不多,用月份来表示。wday 字段表示星期几。所有这些字段的值必须是数字并且用24小时制来表示。
。这是最后的一个字段,所以自然就是它指定要运行的程序。


[例8]

5,15,25,35,45,55 16,17,18 * * * command

这就是表示任意天任意月,其实就是每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。

[例9] 在每周一,三,五的下午3:00系统进入维护状态,重新启动系统。那么在crontab 文件中就应该写入如下字段:

00 15 * * 1,3,5 shutdown -r +5

然后将该文件存盘为foxy.cron,再键入crontab foxy.cron安装该文件。

[例10] 每小时的10分,40分执行用户目录下的innd/bbslin这个指令:

10,40 * * * * innd/bbslink

[例11] 每小时的1分执行用户目录下的bin/account这个指令:

1 * * * * bin/account

[例12] 每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔):

20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire>expire.1st)

[例13] 每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。

12,55 3 4-9 1,4 * /bin/rm -f expire.1st>>mm.txt


PPTPD和PPTP client的安装配置


PPTPD和PPTP client本身的安装并不复杂,可以说相当直观。但是如果要用到mppp加密,需要做的工作就要多一些。



1、PPTPD的官方网站是http://www.poptop.org, PPTP client的官方网站是http://pptpclient.sourceforge.net



2、要支持mppe加密,需要安装mppe的内核模块和PPP的mppe支持如果需要支持mppe加密,第三步和第五步对于PPTPD和PPTP client都是需要的



3、下载地址http://heanet.dl.sourceforge.net/sourceforge/poptop/kernelmod-0.7.1.tar.gz 需要说明的是,目前为止我所看到的kernelmod最新版本为0.8.2, 但是在我的linux上运行kernelmod.sh并不能完成安装,所以我建议采用0.7.1



4、检查mppe内核模块的安装。如果安装成功,应该可以找到 /lib/modules/%{VERSION}-%{RELEASE}/kernel/drivers/net/ppp_mppe.o;%{VERSION}-%{RELEASE}对应于uname -a的输出结果。运行modprobe ppp-compress-18, 如果输出结果为空或者:




Warning: loading /lib/modules/2.4.20-8/kernel/drivers/net/ppp_mppe.o will taint the kernel: non-GPL license - BSD without advertisement clause
See http://www.tux.org/lkml/#export-tainted for information about tainted modules
Module ppp_mppe loaded, with warnings



则表明,mppe的内核模块安装成功。参考http://pptpclient.sourceforge.net/howto-diagnosis.phtml#mppe_kernel



另外需要说明的是,mppe内核模块有两种授权模式,Openssl和BSD模式。默认情况下,采用的是BSD授权。之所以提到这个授权,是因为在第9步中,PPTPD的配置会有所不同。



5、安装PPP的mppe支持。按照第6步检查现有的PPP是否已经支持mppe, 如果不支持,到http://pptpclient.sourceforge.net/#download下载ppp的安装包,安装。



6、检查PPP的mppe支持的安装。运行 strings `which pppd`|grep -i mppe|wc --lines 如果结果为0,则说明现有的PPP安装不支持mppe; 如果大于0,则支持mppe. 注意,redhat 7.3发布的默认安装下,PPP不支持mppe,所以需要更新安装包。参考http://pptpclient.sourceforge.net/howto-diagnosis.phtml#mppe_pppd



7、PPTPD的安装。到http://sourceforge.net/projects/poptop下载最新的pptpd安装包或者源码包。安装



8、PPTP client的安装。到http://pptpclient.sourceforge.net/#download下载pptp-linux,和pptp-php-gtk。 pptp-linux就是PPTP client, pptp-php-gtk是PPTP client的配置界面,需要有xwindows支持。



9、PPTPD的配置。涉及到三个配置文件,/etc/pptpd.conf, /etc/ppp/chap-secrets, 和/etc/ppp/options.pptpd。pptpd.conf配置了一些全局的选项。需要说明的是options.pptpd的配置。如果采用OpenSSL授权,则采用




-chap
-chapms
+chapms-v2
mppe-40 # both 40-bits and 128-bits encryption bite eachother
mppe-128
mppe-stateless



如果采用BSD授权,则使用




refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe



请参考http://poptop.sourceforge.net/dox/



参考:


http://poptop.sourceforge.net/ PPTPD的sourceforge主页,下载和文档


http://pptpclient.sourceforge.net PPTP client的主页, 下载和文档


http://www.poptop.org PPTPD的主页,好像除了联接没有什么其它东西


WindowsXP 实现VPN+PPPOE+NAT 服务器


@echo 看说明
@pause
@echo 更改路由服务为自动
@sc config RemoteAccess start= auto
@echo 启动路由服务
@net start RemoteAccess

@echo (ICS)
@net stop SharedAccess


上面可另存为批处理文件


WindowsXP Pro下单网卡实现VPN+PPPOE+NAT服务器


暑期来临,很多同学离校回家。现在宽带普及,不过仍不能很好的享用教育网内的丰富资源。
离开宿舍IP工作,需要继续使用宿舍IP操作,或者需要代理服务。
为了解决这些问题,在常见的WinXP Pro系统上实现VPN+PPPOE+NAT服务器是个比较好的办法。
实现步骤基于如下系统情况
WindowsXP
网卡,能上网
Step 1
按Win+R 输入并运行services.msc,在服务里面寻找Routing and Remote Access,右键单击进入属性,将启动类型更改为自动,并点击启
动按钮。
Step 2
打开网上邻居,在左侧网络任务里面点击"查看网络连接",可以看到"传入"字样,这表示Step1操作成功.
单击右键打开"传入的连接"的属性,在"常规"标签中虚拟专用网中钩选"允许他人通过internet...",在"用户"标签中允许的连接的用户钩选相
应用户,确定退出。至此,VPN配置完毕。
Step 3
按Win+R 输入并运行netsh,继续输入routing并回车,继续输入ip并回车,继续输入nat并回车,继续输入install并回车。然后输入add
interface name="内部" mode=private并回车,输入add interface "本地连接" full并回车。输入show interface并回车,如果出现
NAT 内部 配置
---------------------------
模式 : 专用接口
NAT 本地连接 配置
---------------------------
模式 : 地址和端口转换
即表示NAT配置成功。
以上步骤实现后,则NAT配置成功。可拨入主机,并可通过主机代理出去访问主机所在的资源。如同处在主机带的局域网中。
注意: 如果WinXP Pro语言为英语,则"内部"和"本地连接"应换为相关字符,其他语言类推。
在添加接口时(add interface),如果发生"必须首先安装NAT"错误,则应该确认是否已经启用Internet连接共享,如果没有,则应该启用,然后再添加接口。


PPPOE协议下载


Linux 如何进行网络地址转换


Linux 如何进行网络地址转换


此文档说明如何进行伪装、透明代理、端口转发,和基于Linux 2.4内核其他类型的 网络地址转换(Network Address Translations)。

























































































































































































































































































































































































































































































































































































































































































1. 简介
2. 官方站点及列表
2.1 什么是NAT?
2.2 我为什么需要NAT?
3. NAT的两种类型
4. 从2.0和2.2内核的快速转换
4.1 我只想伪装!救命!
4.2 关于ipmasqadm
5. NAT可以控制什么
5.1 用iptables做简单的选择
5.2 关于应当挑选哪些包来拆分(mangle)的要点
6. 说说如何拆分包吧
6.1 源地址NAT
6.1.1 伪装
6.2 目的地址NAT
6.2.1 重定向
6.3 深层次的映射
6.3.1 一个范围内多地址的选择
6.3.2 建立空的NAT映射
6.3.3 标准NAT行为
6.3.4 内部源端口映射
6.3.5 如果NAT失败会怎样?
6.3.6 多重映射,重叠和冲突
6.3.7 修改本地生成的连接的目标地址
7. 特定的协议
8. 关于NAT的警告
9. 源地址NAT和选路
10. 同一网络内的目标地址NAT
11. 感谢
1. 简介
欢迎,亲爱的读者。
你将要深入迷人的(有时是令人厌烦的)NAT世界:网络地址转换,这篇HOWTO可以成为你的Linux2.4内核及其以后的准确指南。
在Linux2.4(内核版本),引入了一个叫"netfilter"的部分,专门用于拆分(mangling) (IP)包的。他上一层提供NAT,是完全依靠以前的内核制作的。
(译者注:mangle实在找不出什么合适的翻译,抱歉)
(C) 2000 Paul `Rusty' Russell. Licensed under the GNU GPL.


2、 官方站点及列表位置
这里有三个官方站点:
o Thanks to Filewatcher http://netfilter.filewatcher.org.
o Thanks to The Samba Team and SGI http://netfilter.samba.org.
o Thanks to Harald Welte http://netfilter.gnumonks.org.
你可以通过以下站点访问全部相关站点。
http://www.netfilter.org and http://www.iptables.org
以下是netfilter官方邮件列表
http://www.netfilter.org/contact.html#list.


2、1 什么是网络地址转换(Network Address Translation)?
通常,,网络中的(IP)包从他们的源(地址)出发(比如你家的电脑),到他们的目的地(比如www.gnumonks.org),会经过很多不同的连接(links):例如我所在澳大利亚就有19个。这些连接不会真去修改你的包:他们只是照原样传出去。
(译者注:这里的links应当认为是所有网络节点,包括主机、路由器等。通常,路由器并不是原样传送包,它至少会修改其中一点:TTL)
如果这些连接有一个做NAT,那么它(们)就会修改通过它们的包的源或者目标(地址)。正如你猜象的那样,这并非系统设计成那样 的,而是NAT做了一些事情。通常进行NAT的连接(主机、服务器、路由器)会记住它是如何拆分包的,而当另一头响应的包通过时,它会对响应的包做相反的 拆分,所以世界仍在运转。
(译者注:这一段的mangle应该想象为修改更合适)


2、2 我为什么要NAT?
在完美的世界里,你不需要。同时,主要的理由是:
用调制解调器连接Internet
在你拨号上网时,大部分ISP只会给你一个IP地址,你可以发送你想发送的任何源地址包,但是只有响应这个(ISP给你的)地址的包才会返回。如果这种情况下你想有多台不同的机器上网(比如一个家庭网络),你就需要NAT。
这是现在NAT用得最多的功能,Linux世界的"masquerading"(伪装)非常出名,我称之为SNAT(SNAT即Source NAT,源地址转换),因为你改变了第一个包的源地址。
(译者:关于IP数据报的第一个包等内容,请参见各TCP/IP书籍)
多(重)服务器
有时你想改变进入网络中的包的目标地址(路由)。经常的,这是因为(就像上面的例子),你只有一个IP地址,但是你希望大家可以通过到那个"真实"的IP地址进入内部。如果你重写了进入包的目标地址,这样就没问题了。这种NAT在以前的Linux版本中被称为端口转发。
一个常见的变种是负载均衡,在一组机器上做映射。如果你要进行严格的比例限制, 可能需要参考Linux Virtual Server。http://linuxvirtualserver.org
透明代理
有时你可能想要经过你的Linux的包被送往本机的一个程序。这就需要用到透明代理了:代理是位于你的网络和外部世界之间的一个程序,帮助二者进行通信。之所以称为透明,是你的网络根本不知道他在和代理交谈,当然直到代理没有正常工作。
Squid可以配置为干这项工作,在以前Linux版本中它被称作重定向或者透明代理。


3、 NAT的两种类型
我把NAT分为两种不同的类型:源NAT(SNAT)和目标NAT(DNAT)。(译者注:以下不再翻译SNAT和DNAT,直接用Source NAT和Destination NAT)
Source NAT是指修改第一个包的源地址:也就是说,改变连接的来源地。Source NAT会在包送出之前的最后一刻做好post-routing(动作),伪装是SNAT的一种特殊形式。
Destination NAT 是指修改第一个包的目标地址:也就是说,改变连接的目的地。Destination NAT 总是在包进入以后(马上)进行before routing(动作)。端口转发、负载均衡和透明代理都属于DNAT。


4、 从2.0和2.2内核的快速转换
如果你还在为从2.0(ipfwadm)到2.2(ipchains)的转换手忙脚乱的话,很抱歉。不过这也算是个喜忧半参的消息。
首先,你可以轻松的使用ipchains和ipfwadm,就像从前一样。不过你需要安装最新发布的netfilter中的"ipchains.o"或者"ipfwadm.o"内核模块。它们是互斥的(你会被警告),而且不能和任何其他netfilter模块结合。
一旦这其中某个模块被载入,你可以像以前一样使用ipchains和ipfwadm,不过仍有以下区别:
用ipchains -M -S,或者用ipfwadm -M -s设置伪装超时不再有效。因为超时已经转移到新的NAT构架中,所以这不能做任何事。
在详细的伪装列表中,init_seq、delta和previous_delat字段始终为零。
归零和列表计数器的 -Z -L不再有效:计数器不能被归零。
这类向后兼容的部分可能和大部分连接都不能有效配合:不要在你的公司网关中使用
开发者们还要注意:
无论是否使用伪装,现在可以绑定61000 - 65095之间的端口。以前的伪装代码占用了这部分端口,因此不能使用。
尚未成文的"getsockname",透明代理程序可以用来发现那些已不再工作的连接的真实目的地址。
尚未成文的"bind-to-foreign-address"同样还未启用:这个用于完整透明代理的设想。


4、1 我只想伪装!救命!
这是绝大部分人想要的。如果你用PPP拨号上网来动态得到IP (如果你不知道,那应该就是的)你可能只想告诉你的机器,所有来自内部网络的包,要看上去同PPP连接服务器上的包一样。
# 装载NAT模块(这取代了其他的)
modprobe iptable_nat
# 在NAT表中(-t nat),路由后 POSTROUTING 加入一条规则(-A)
# 所有由ppp0送出的包(-o ppp0) 会被伪装( -j MASQUERADE)。
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# 开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
注意这时你没有做任何的包过滤:如果需要,参见 the Packet Filtering HOWTO。


4、2 那么ipmasqadm呢?
这个完全取决于用户,所以我不担心向后兼容的问题。你可以简单的使用"iptables -t nat"做端口转发。例如,在Linux2.2你要做:
# 在2.2内核,把指向1.2.3.4 8080端口的TCP包转到192.168.1.1的80端口
ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80
现在你可以这样:
# 2.4内核,在NAT(-t nat)表中加入一条规则,在路由之前(-A PREROUTING)指向

# 1.2.3.4(-d 1.2.3.4)8080端口(--dport 8080)的TCP包(-p tcp)目标地址(-j DNAT)
# 被重定向到 192.168.1.1的80端口(--to 192.168.1.1:80)。
iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 8080 -j DNAT --to 192.168.1.1:80


5、NAT可以控制什么
你需要创建NAT规则,以告诉内核哪些连接将被改变和如何改变。要做到这一点,我们要用到一个用处很多的iptables工具,并告诉它用指定的"-t nat"选项修改NAT表。
NAT规则表包含三个称为"链"的列表:每个规则都按顺序检查包,直到有一个匹配。其中两个被称为PREROUTING(用于 Destination NAT,当包进入时检查),POSTROUTING(用于Source NAT,包离开时检查),第三个叫OUTPUT,这里可以忽略。
如果我有足够的艺术天分的话,下面的见图会准确的说明上述概念:



_____ _____
/ \ / \
PREROUTING -->[Routing ]----------------->POSTROUTING----->
\D-NAT/ [Decision] \S-NAT/
| ^
| |
| |
| |
| |
| |
| |
--------> Local Process ------
上述每一点,当我们查看连接(中)的包时,如果是一个新的连接,我们查看 NAT表中相对应的链,看看需要做些什么。其结果就会作为对这个连接后面所有包 的反应。
(译者注:此处的连接是指一个HTTP会话之类的连接,而非物理上的线路、节点)


5、1 用iptables做简单的选择
下面列出了iptables的一些标准选项。所有双横杠(--)的选项都是可以缩写的。只要iptables可以将它们与其他选项 区分开来就够了。如果你的内核是以模块方式支持iptables的,你需要先用命令:insmod ip_tables来加载ip_tables.o
这是最重要的选项表格选择,"-t"。对所有NAT操作,你都需要使用'-t nat'以指定NAT表。其次重要的是'-A',添加一个新的规则到链的末尾(例如'-A POSTROUTING'到POSTROUTING链),或者'-I'从最开始插入一个规则(例如'-I PREROUTING')。
你可以指定你想要进行NAT的包的源(地址)('-s' 或者'--source')和目的(地址)('-d' 或 '--destination')。这两个选项可以跟单个IP地址(例如192.168.1.1),一个名字(例如www.gnumonks.org), 或者一个网络地址(例如192.168.1.0/24或192.168.1.0/255.255.255.0[译者:这二者是等价的,只是表示方法不 同])。
你可以指定进入或送出的匹配接口。不过能否指定取决于你想要写入规则的那个链:PREROUTING链你只能选择进入接口,POSTROUTING你只能选择送出接口。如果用错了,iptables会给出一个错误。


5、2 关于应当挑选哪些包来拆分(mangle)的要点
我上面说了你可以指定源地址和目标地址。如果忽略源地址选项,那么所有源地址都会被匹配,同样,如果忽略目标地址,所有目标地址都将被匹配。
你还可以标出一个指定的协议('-p'或'--protocol'),诸如TCP或者UDP;那么只有这类协议的包会被匹配。这么 做的主要原因是指定了协议,就可以增加额外的选项:指定'--source-port'源端口和'--destination-port'目的端口选项 (可缩写为'-sport'和'-dport')。
这些选项让你可以只匹配那些特定源端口及目标端口的包。这些对于重定向Web请求(TCP 80或8080端口)而不影响其他包非常有用。
这些选项必须跟在'-p'选项后面(这可能会对加载该协议的连接库有一定影响)。你可以使用端口号,或者来自/etc/serverices文件的(端口)名。
所有这些你可以对一个包作出的不同选择都详细的列在那详细得可怕的使用手册中了(man iptables)。(译者注:参见iptables man page中文版


6、说说如何拆分包吧
现在我们知道如何选择我们想要拆分的包了。为完成我们的规则,我们需要准确的告诉内核我们想要它如何做。


6、1 Source NAT
你想要进行Source NAT,改变连接的源地址。这在POSTROUIING链中完成,就在它将送出去的最后一刻。这是一个重要的细节,所有Linux本机上的其他任何东西(路由、包过滤)都会看见那个尚未改变的包。也意味着'-o'(送出接口)选项可用了。
用指定'-j SNAT'来进行Source NAT,'--to-source'选项指定一个或一段IP地址,(加上)一个或一段可选的端口号(只能用于UDP和TCP协议)。
# 改变源地址为1.2.3.4
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
# 改变源地址为1.2.3.4、1.2.3.5或者1.2.3.6
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4-1.2.3.6
# 改变源地址为1.2.3.4,端口1-1023
# iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 1.2.3.4:1-1023


6、1、1 伪装
Source NAT的一个特例被称作伪装。它只能被用于动态分配IP地址的情况。例如标准拨号服务(静态IP地址请用SNAT)。
你无需为IP伪装明确指定源地址。它会使用包送出的那个接口(地址)作为源地址。不过更重要的是,如果那个线路关闭了的话,连接(无论如何都会丢失了)会被忘掉,意味着启用新的IP后返回的包就会有点问题了(指那些响应掉线前发出的包的包)。
# 伪装所有由ppp0送出的东西
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE


6、2 Destination NAT
用于PREROUTING链,包刚刚进入的时候。意味着本机上的任何东西看见的都是"真正"的目的地(译者注:即已修改过的目的地址)。也意味着'-i'(进入接口)可用了。
用指定'-j DNAT'来进行Destination NAT,'--to-destination'选项指定定一个或一段IP地址,(加上)一个或一段可选的端口号(只能用于UDP和TCP协议)。
# 改变目标地址为5.6.7.8
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8
# 改变目标地址为5.6.7.8、5.6.7.9或5.6.7.10
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8-5.6.7.10
# 改变Web传送的目标地址为5.6.7.8,8080端口
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 5.6.7.8:8080


6、2、1 重定向
Destination NAT的一个特例被称为重定向。它相当于对进入接口进行DNAT的简单方便的一种形式。
# 发送进入的80端口的Web传输到我们的Squid(透明)代理
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
注意Squid需要被配置为透明代理。


6、3 深层次的映射
还有一些可能大部分人不会用到的NAT的细节。


6、3、1 一个范围内多地址的选择
如果指定了IP地址的范围,那么机器会选择当前使用最少的那个IP地址。这就实现了最俭朴的负载均衡。


6、3、2 建立空的NAT映射。
你可以使用 '-j ACCEPT' 目标让连接通过,不需要NAT参与。


6、3、3 标准NAT行为
默认行为是根据用户给定的内在约束规则,对连接作最小的改动。也就是除非必要 不要进行端口重映射。


6、3、4 内部源端口映射
如果其他的连接覆盖了一个连接,即使这个连接不需要使用NAT,源地址转换仍会发生。考虑IP伪装,这种情况就非常普遍。
1、一个从192.168.1.1 1024端口到www.netscape.com 80端口的Web连接已建立
2、它被伪装成IP伪装服务器的IP地址(1.2.3.4)
3、IP伪装服务器试图建立一个从www.netscape.com 80端口到1.2.3.4 1024端口的Web连接(它自己的外部接口IP地址)
4、NAT代码会修改第二个连接的源地址到1025,这样两个(连接)就不会冲突了。
当这种内部源地址映射发生时,端口分为三级:
512以下的端口
512至1023之间的端口
1024以上的端口
内部端口映射决不会被映射到(除此之外的)其他种类。


6、3、5 如果NAT失败会怎样?
如果无法按照用户请求的那样,为连接建一个单独的映射,(包)会被删除。这也适用于那些无法被归为任何连接的包,因为它们是畸形的,或者是主机内存溢出了。


6、3、6 多重映射,重叠和冲突
你的NAT规则可以把包映射到相同的范围。NAT代码聪明到可以避免它们的冲突。因此,两条规则把192.168.1.1和192.168.1.2的源地址映射都映射到1.2.3.4是没有问题的。
而且,你可以映射到真实的、已在使用的IP地址,只要那些地址也通过这个服务器。所以如果你分配到一个网络 (1.2.3.0/24),但有一个内部网络使用了这些地址,另一个使用的是私有地址192.168.1.0/24,你可以简单的NAT 192.168.1.0/24的源地址 到1.2.3.0网络,不必担心冲突。
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 1.2.3.0/24
相同的逻辑也适用于NAT服务器本身的地址。这就是得以伪装工作的原因(由伪装后的包和来自本身的"真实"的包共享一个接口地址)。
甚至,你可以映射相同的包到许多不同的目标,它们会被共享。例如,如果你不希望映射任何东西到1.2.3.5,你可以这样做:
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 1.2.3.0-1.2.3.4 --to 1.2.3.6-1.2.3.254


6、3、7 修改本地生成的连接的目标地址
NAT代码允许你插入DNAT规则到OUTPUT链,不过这在2.4中尚未完全支持(可以使用,但必须用新的配置选项,某些测试中的代码。所以除非有人在疯狂的写这部分代码,我不相信它会很快实现)。
当前的限制是你只能修改目标地址到本机(例如'-j DNAT --to 127.0.0.1'), 不能到任何其他机器,否则相应可能不能够被正确转换。


7、 特定的协议
有些协议不希望被NAT。这些协议,两种延伸必须指明:一个是协议的连接跟踪,一个是真实NAT。
在发布的netfilter中,有可用的FTP模块:ip_conntrack_ftp.o和ip_nat_ftp.o。如果你加载了任一种模块到你的内 核(或者编译进去),那么任何关于FTP连接的NAT都是可行的。如果没有,那么只能使用被动FTP(passive ftp),而且如果做了一些Source NAT,它(指FTP)也许不能可靠的工作。


8、 关于NAT的警告
如果你对连接做NAT,所有双向传送的包(进入和送出网络的)必须通过NAT服务器,否则NAT服务器的工作可能不可靠。特别是,连接跟踪代码重组了分片,也就意味着不光是连接跟踪不能可靠工作,甚至所有包都无法通过,因为分片被丢弃。


9、 Source NAT 和路由
如果你要做SNAT,你必须注意所有机器被SNAT的包的回应都将发送到NAT服务器。例如,如果你映射了一些送出的包的源地址为1.2.3.4,那么外部的路由器必须知道发送回应包的地址到NAT服务器。可以这样做:
1、如果你对本机地址做SNAT(路由等所有事情都正常),你不需要做任何事。
2、如果你在本地LAN上做SNAT到未用地址(例如,你映射为1.2.3.99,你的1.2.3.0/24网络中未用的IP),你的NAT服务器需要像那个地址(99)一样正确响应ARP请求。最简单的办法是建立一个IP别名,例如:
# ip address add 1.2.3.99 dev eth0
3、如果你对完全不同的地址做SNAT,你必须保证被SNAT的包到达的机器会返回NAT服务器。如果NAT服务器是它们的默认网关,那么就已经行了,否则你需要发布一个路由(如果运行了路由协议)或者对每个机器手工添加路由。


10、 同一个网络内的Destination NAT。
如果你要对同一个网络做端口转发,你需要确认所有以后的包和回应包都通过NAT服务器(这样它们才能被修改)。NAT代码现在(自2.4.0-test6),会屏蔽掉同组的被NAT的包送出的ICMP重定向,不过收到的服务器会继续尝试直接响应客户。(不会理解这个回应)
经典的情况是,内部人员试图访问你的"公用"Web服务器,而它实际上从公用地址(1.2.3.4)被DNAT到内部机器(192.168.1.1),例如:
# iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j DNAT --to 192.168.1.1
一种办法是运行一台内部DNS服务器,它知道你的公用(外部)Web服务器的真实的(内部)IP地址,并转发所有其他请求到外部DNS服务器。也就是说你的Web服务器能够记录真实的内部IP地址。
另一种办法是让NAT服务器映射那些连接的源地址到它自己,让服务器通过它发出响应。例如,我们可以这样做(假设NAT服务器内部IP地址是192.168.1.250):
# iptables -t nat -A POSTROUTING -d 192.168.1.1 -s 192.168.1.0/24 -p tcp --dport 80 -j SNAT --to 192.168.1.250
因为PREROUTING规则会首先运行,对内部Web服务器来说,包的去向早已确定。我们可以确定好源IP地址。


11. Thanks
Thanks first to WatchGuard, and David Bonn, who believed in the netfilter idea enough to support me while I worked on it. And to everyone else who put up with my ranting as I learnt about the ugliness of NAT, especially those who read my diary.
首先感谢在我工作期间相信netfilter设想并支持我的WatchGuard和David Bonn。以及所有对NAT提出指正的朋友,尤其是读过了我的日记的。
Rusty.