如何实现动态NAT?

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
pengsir
帖子: 137
注册时间: 2015-07-24 8:29
系统: ubuntu

如何实现动态NAT?

#1

帖子 pengsir » 2015-08-20 10:59

静态NAT实现:
网络:route+moden+adsl上网
本机:
本机上搭建了一个wordpress,本机网络如下:

代码: 全选

WAN:
MAC:A8:64:4D:34:A5:56
IP :153.0.48.32 PPPoE
subnet mask:255.255.255.255
gateway:153.0.68.1
DNS:114.114.114.114 223.5.5.5

LAN
MAC:A8:10:4D:76:A5:33
IP :192.168.1.1
subnet mask:255.255.255.0
DHCP:active

ifconfig
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
本人拥有一个外部vps_ip , x.y.z.w .
目标:当任何人在他的浏览器上输入 这个vps_ip x.y.z.w
我本机上的wordpress就会显示在他的浏览器上。
实现:
客户端(本机上)的工作:将route的端口做映射,80打开,映射192.168.1.100.
服务器端的工作:
apt-get install -y nginx #在我的vps上架设nginx ,
nano /etc/nginx/sites-available/default

server {
listen *:80;
server_name x.y.z.w ;
rewrite .* http://153.0.48.32$request_uri permanent;
}

service nginx restart

成功实现了,nginx做为反向代理服务器,静态NAT。

现在问题没有结束,我本机的公网ip,就是那个 153.0.48.32 是变化的,每隔20分钟变化一次。
我需要将这个静态的NAT实现,用动态的NAT来实现 。
思路:
1.每隔20分钟,获得本机外网ip
这个可以在crontab上来实现 ,本机安装curl后,
命令curl ipinfo.io/ip 将显示本机公网ip.
2.发往vps,告知nginx,并让它修改 /etc/nginx/sites-available/default
rewrite .* http://ip$request_uri permanent;
修改这里的ip
3.restart nginx.

步骤1是客户端的工作,已经完成。
步骤2,3是服务器端的设置,如何设计一个通信机制,如何用程序自动完成?
用shell脚本如何完成?
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 如何实现动态NAT?

#2

帖子 poloshiao » 2015-08-20 12:21

http://networkengineering.stackexchange.com/a/9354

I think you're confused about the usual uses of static- and dynamic NAT.

Static is used on the outside router/firewall to expose a server/service located inward which wouldn't normally be reachable from the outside. (static: nailed in place, permanently mapped inward.)

Dynamic is used to enable inward transportation of return traffic for outgoing connections; so a web browser on a system with a private IP is dynamically mapped to a public address as the packets egress, and then the return traffic is mapped back for ingress. (dynamic: the inside end points change so the mappings are changing too.)

請詳細查閱 静态 NAT 與 动态 NAT 使用的時機 有何不同
pengsir
帖子: 137
注册时间: 2015-07-24 8:29
系统: ubuntu

Re: 如何实现动态NAT?

#3

帖子 pengsir » 2015-08-20 15:33

好吧,就算这个术语我用错了。
问题总是很明确的,如何征服那个动态变化的公网ip?
请给点建议。
头像
oneleaf
论坛管理员
帖子: 10454
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 如何实现动态NAT?

#4

帖子 oneleaf » 2015-08-20 16:38

用VPN拨入,nginx设置多个vpn地址做均衡。
pengsir
帖子: 137
注册时间: 2015-07-24 8:29
系统: ubuntu

Re: 如何实现动态NAT?

#5

帖子 pengsir » 2015-08-20 19:00

vpn地址只有一个,也没有必要搞多个。
关键是信息的传递,本地公网ip传递出去,
信息的接收,vps那边接受这个参数,并写入配置文件,重新更新。
头像
oneleaf
论坛管理员
帖子: 10454
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 如何实现动态NAT?

#6

帖子 oneleaf » 2015-08-20 22:51

服务器搭建vpn服务,客户端拨号接入后,会有一个vpn的客户端私有IP地址,服务器可以直接反向访问这个私有IP地址。由于客户端掉线后自动重拨后,私有地址可能会发生变化,所以nginx需要加多个,但不管如何变,IP段是可控的。
pengsir
帖子: 137
注册时间: 2015-07-24 8:29
系统: ubuntu

Re: 如何实现动态NAT?

#7

帖子 pengsir » 2015-08-21 7:35

oneleaf用词错误,私有ip是我局域网内部的,局域网内部使用静态ip地址,并且mac和ip地址绑定了,这个private ip不会变化。
变化的是对外显示的公网ip,adsl变动的是这个ip地址 。
头像
oneleaf
论坛管理员
帖子: 10454
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 如何实现动态NAT?

#8

帖子 oneleaf » 2015-08-21 11:38

但你拨入外部vpn时,vpn也会分配给客户端一个私有ip。
pengsir
帖子: 137
注册时间: 2015-07-24 8:29
系统: ubuntu

Re: 如何实现动态NAT?

#9

帖子 pengsir » 2015-08-21 11:47

我购买的vps服务,那个ip是固定的,它不会变。
头像
oneleaf
论坛管理员
帖子: 10454
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 如何实现动态NAT?

#10

帖子 oneleaf » 2015-08-21 17:30

没错啊,

需求:其它用户 ----(HTTP)---> VPS ----(反向代理)---> 本机

网络:本机 ----(VPN)----> VPS

VPS 反向代理本机的VPN地址。

如果本机的ADSL断开,设置为自动重新拨号VPN,VPS 反向代理不受影响。

----------------------

好吧,貌似你一直不懂,直接用花生壳吧,绑定动态域名算了。
pengsir
帖子: 137
注册时间: 2015-07-24 8:29
系统: ubuntu

Re: 如何实现动态NAT?

#11

帖子 pengsir » 2015-08-23 8:05

如果本机的ADSL断开,设置为自动重新拨号VPN
请问,这个操作在哪里完成?客户端还是服务器端?

如果是客户端,这个操作是中国电信自动完成的。无需用户在路由器上做任何设置,即使你的路由器有相关功能也无法指定。
头像
oneleaf
论坛管理员
帖子: 10454
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 如何实现动态NAT?

#12

帖子 oneleaf » 2015-08-23 19:10

VPN客户端当然安装在本机上,有些vpn支持自动重连的,包括openvpn或刚刚删除代码的那个。
回复