日本电子维修技术 网络解决公司网络没有固定公网IP的问题
完美解决公司网络没有固定公网IP的问题 转贴,MARK一下,方案背景:公司办公网络使用长城宽带上网有一段时间了,有4个固定IP(2个电信,2个网通),链路不太稳定,经常有问题,因此考虑取消长城宽带,采用原来的adsl上网。但是有个问题,因为公司内网有几台服务器,需要通过固定IP接受外网用户发送的数据,因此如果没有公网IP,而ADSL获取的IP会变化,那么内网服务器接受外面用户的数据就会受到影响,通过采用openv&pn很好的解决了这个问题。这个前提是你在机房的服务器有固定IP。应用场景公司在托管机房有公网IP,在公司内部采用ADSL上网,又需要接受外网用户发送的数据,那么就可以在托管机房有公网IP的服务器部署openv&pn,然后内网找一台服务器拨上去获取IP后,通过iptables的端口转发2次就可以完美解决公司网络没有公网IP的问题。 详细方案下面就来详细讲述如何用openv&pn完美的解决公司网络没有公网IP的解决方案!一、 需求在没有固定公网IP的情况下,借助托管机房的固定公网IP,实现发布内网服务器的端口给外网用户调用,具体环境如下面网络图中所示,需要把内网服务器192.168.100.113的708端口借助托管机房的固定IP发布给外网用户调用二、 网络图
三、 openv&pn服务器的安装配置1. openv&pn服务器端的环境OS: Centos 5.5 64bit 2.6.18Lzo version: 2.0.6(最新版本)Openv&pn version: 2.2.2(最新版本)2. openv&pn服务器端软件的安装Ø 下载软件包wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gzwget http://swupdate.openv&pn.org/community/releases/openv&pn-2.2.2.tar.gz
Ø 安装opensslyum -y install openssl
记录下openssl的版本号,一会有用,我这里安装的openssl-0.9.8e-20.el5.x86_64版本Ø 安装lzotar xzvf lzo-2.06.tar.gzcd lzo-2.06./configuremake && make check && make install
Ø 安装openv&pntar xzvf openv&pn-2.2.2.tar.gzcd openv&pn-2.2.2./configure --prefix=/usr/local/openv&pn --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib \--with-ssl-headers=/usr/local/include/openssl --with-ssl-lib=/usr/local/libmake && make install
3. 制作openv&pn证书keyØ 初始话PKI生成key变量可以采用export或者需改配置文件的形式,这里我只说采用export命令的形式!代码如下:cd openv&pn-2.2.2/easy-rsa/2.0 #注意这个路径和以前的版本不太一样cp openssl-0.9.8.cnf openssl.cnf #这里有三个版本的openssl的文件供你选择,这里需要选择前面我们安装的openssl版本export D=`pwd` #设置路径export KEY_CONFIG=$D/openssl.cnf #设置openssl文件的位置export KEY_DIR=$D/keys #设置生成key的保存路径export KEY_SIZE=1024 #设置生成key的加密位数export KEY_COUNTRY=CN #设置国家export KEY_PROVINCE=GD #设置省export KEY_CITY=SZ #设置城市export KEY_ORG="futuotec" #设置组织export KEY_EMAIL=[email protected] #设置邮箱 ./clean-all #这个命令执行完成以后会创建前面设置的key保存路径 Ø 生成ca证书和私钥./build-ca #执行这个命令以后按照提示操作就可以了!示例如下:Country Name (2 letter code) [CN]:State or Province Name (full name) [GD]:Locality Name (eg, city) [SZ]:Organization Name (eg, company) [futuotec]:Organizational Unit Name (eg, section) []:futuotecCommon Name (eg, your name or your server's hostname) []:serverEmail Address [[email protected]]:
Ø 生成server端证书和私钥./build-key-server server #执行这个命令以后按照提示操作就可以了!示例如下Country Name (2 letter code) [CN]:State or Province Name (full name) [GD]:Locality Name (eg, city) [SZ]:Organization Name (eg, company) [futuotec]:Organizational Unit Name (eg, section) []:futuotecCommon Name (eg, your name or your server's hostname) []:serverEmail Address [[email protected]]:
Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:test111An optional company name []:futuotec
Ø 生成客户端证书和私钥./build-key client1 #client1为客户端的登录名,按照提示操作,示例如下,可重复次操作建多个不同的登录名Country Name (2 letter code) [CN]:State or Province Name (full name) [GD]:Locality Name (eg, city) [SZ]:Organization Name (eg, company) [futuotec]:Organizational Unit Name (eg, section) []:futuotecCommon Name (eg, your name or your server's hostname) []:client1 #重要: 每个不同的client 生成的证书, 名字必须不同.Email Address [[email protected]]:
Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:test111An optional company name []:futuotec
Ø 打包证书和私钥./build-dh #通过这个命令创建Diffie Hellman参数tar zcvf key.tar.gz keys将生成的key.tar.gz下载备用 4. openv&pn服务器端配置mkdir /usr/local/openv&pn/etcmkdir /usr/local/openv&pn/keys/
将前面生成的如下key文件和证书文件拷到/usr/local/openv&pn/keys目录下:ca.crt、server.crt、server.key、dh1024.pemvim /usr/local/openv&pn/etc/server.conf 添加如下内容local 58.33.123.75client-config-dir /usr/local/openv&pn/etc/ccd #介绍一下这个选项,这个选项是为制定的登录名使用单独的配置,比如制定固定的IP,本文就用到了这个配置,在这个目录下,创建一个用户名文件,然后写入你的需求配置,稍后会介绍port 1194proto udpdev tunca /usr/local/openv&pn/keys/ca.crtcert /usr/local/openv&pn/keys/server.crtkey /usr/local/openv&pn/keys/server.key dh /usr/local/openv&pn/keys/dh1024.pemserver 172.16.100.0 255.255.255.0ifconfig-pool-persist ipp.txtpush "route 172.16.88.0 255.255.255.0"push "route 172.16.100.0 255.255.255.0"push "dhcp-option DNS 172.16.88.10"client-to-clientkeepalive 10 120comp-lzopersist-keypersist-tunstatus /var/log/openv&pn-status.loglog /var/log/openv&pn.logverb 4
vim /usr/local/openv&pn/etc/ccd/client1 添加如下内容:ifconfig-push 172.16.100.9 172.16.100.10
可能有人会想为什么要制定两个IP,这是因为openv&pn只支持255.255.255.252 的子网,而且252的子网只有两个IP,一个分配给客户端,一个留给服务器用.因此只能ccd目录下面的文件内容只能是:ifconfig-push 172.16.100.1 172.16.100.2ifconfig-push 172.16.100.5 172.16.100.6 …..
如果配置错误,会报如下错误:Tue Jan 10 18:02:33 2012 us=197724 read UDPv4 [ECONNREFUSED]: Connection refused (code=111)
启动openv&pn服务端:/usr/local/openv&pn/sbin/openv&pn --config /usr/local/openv&pn/etc/server.conf > /dev/null 2>&1 &
然后将该命令写入到/etc/rc.local中 查看是否启动成功:netstat -lnp | grep openv&pnudp 0 0 58.33.123.75:1194 0.0.0.0:* 11545/openv&pn
四、 openv&pn客户端的安装配置1. openv&pn客户端的环境客户端的环境和服务器端的环境一样OS: Centos 5.5 64bit 2.6.18Lzo version: 2.0.6(最新版本)Openv&pn version: 2.2.2(最新版本) 2. openv&pn客户端的安装安装也和服务器的一样,这里就不赘述 3. openv&pn客户端的配置mkdir /usr/local/openv&pn/etcmkdir /usr/local/openv&pn/keys/将需要的前面打包的相关key文件放到keys目录下,比如client1用户需要copy到客户端的文件如下:ca.crtca.keyclient1.crtclient1.csrclient1.key
vim /usr/local/openv&pn/etc/client.conf 添加如下内容:clientdev tunproto udpremote 58.33.123.75 1194persist-keypersist-tunca /usr/local/openv&pn/keys/ca.crtcert /usr/local/openv&pn/keys/client2.crtkey /usr/local/openv&pn/keys/client2.keyns-cert-type servercomp-lzoverb 4
启动客户端:
/usr/local/openv&pn/sbin/openv&pn --config /usr/local/openv&pn/etc/client.conf > /dev/null 2>&1 &
并将该命令写入/etc/rc.local 检查是否链接成功,已经分配的IP是否是制定的IPifconfig显示如下内容:tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:172.16.100.9 P-t-P:172.16.100.10 Mask:255.255.255.255
五、 openv&pn服务器端iptables的设置iptables -t nat -A PREROUTING -d 58.33.123.75 -p tcp -m tcp --dport 708 -j DNAT --to-destination 172.16.100.9:708iptables -t nat -A POSTROUTING -j MASQUERADEiptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPTiptables -A INPUT -s 172.16.100.0/255.255.255.0 -j ACCEPT
说明:将外面请求机房中58.33.123.75端口708的请求都发往公司内网的v&pn客户端,打开openv&pn的1194端口,允许网段的访问!六、 openv&pn客户端iptables的设置iptables -t nat -A PREROUTING -s 58.33.123.75 -p tcp -m tcp --dport 708 -j DNAT --to-destination 192.168.100.113:708iptables -t nat -A POSTROUTING -j MASQUERADE
说明:将源是来自58.33.123.75并且目标端口为708的请就转发到内网的192.168.100.113的708端口,这就完成了整个转发过程七、 测试端口调用是否OK因为发布的tcp的端口,因此可以采用telnet的方式来调用,在外网找台机器,执行如下命令看看是否OK!telnet 58.33.123.75 708如果不能连接,就需要检查v&pn是否OK。Ping是个很好的工具,以及检查防火墙规则 总结:对于我们搞IT的来说,其实解决问题的方法很多,需要灵活的来运用各种技术。这样能给你的企业节省不少成本,而且能让你的工作更有创造性。因此我们在日常工作中应该充分发挥我们的想象力,灵活应用我们的各种技术,你会发现其实技术的道路还可以更宽、更精彩!注:因网站限制openv&pn,去掉中间的&
评论
收藏马克再看
评论
这个值得学习了,谢谢
评论
这技术现在居然还会有人用?还能放公司用,能稳定吗?连上10分钟就被掐死了吧?内外穿透技术这么成熟,干嘛要用v p n啊?
评论
闲的蛋疼
评论
.........
那么多好好的内网穿透
frp啊ngrok阿
用哪个不好...
再说了还有zerotier呢
评论
我也是服了楼主这想法了,实在是太LOW了。都公司了直接DDNS总归有的把。
评论
有公网IP ddns即可,没的话autossh试了比较安逸,不要求客户端很多情况下还是很重要的 电路 电子 维修 我现在把定影部分拆出来了。想换下滚,因为卡纸。但是我发现灯管挡住了。拆不了。不会拆。论坛里的高手拆解过吗? 评论 认真看,认真瞧。果然有收 电路 电子 维修 求创维42c08RD电路图 评论 电视的图纸很少见 评论 电视的图纸很少见 评论 创维的图纸你要说 版号,不然无能为力 评论 板号5800-p42ALM-0050 168P-P42CLM-01
·日本中文新闻 唐田绘里香为新剧《极恶女王》剃光头 展现演员决心
·日本中文新闻 真子小室夫妇新居引发隐私担忧
·日本中文新闻 前AKB48成员柏木由纪与搞笑艺人交往曝光
·日本学校 {日本国际学校}梅田インターナショナルスクール
·日本学校 LINE:sm287 陳雨菲、20歳、台湾からの留学生、東京に来たばかり
·日本留学生活 出售平成22年走行48000km 代步小车
·日本华人网络交流 円相場 一時1ドル=140円台まで上昇?
·日本华人网络交流 问日本华人一个问题
·日本旅游代购 富山接机
·生活百科 英国转澳大利亚转换插头
·汽车 【求助】修车遇到困难怎么办?