DNAT转发实例
1、首先在 A 安装nginx 服务,具体安装方法:、、、
启动nginx

2、我的俩台服务器不是同一个运营商的都可以访问外网和内网不通。为了模拟内网互通我建了ipip隧道,大家有内网互通的俩个服务器可以省去这一步骤。
#公共部分
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -I POSTROUTING -j MASQUERADE
modprobe ipip
modprobe ip_gre
#单独部分 服务器A 执行
ip tunnel add tun_test mode ipip local 服务器A内网 remote 服务器b外网
ip link set tun_test up
ip addr add 192.168.1.1 peer 192.168.55.2 dev tun_test
route add -net 192.168.55.0/24 dev tun_test
服务器B 执行
ip tunnel add tun_test mode ipip local 服务器B内网 remote 服务器A外网
ip link set tun_test up
ip addr add 192.168.55.2 peer 192.168.1.1 dev tun_test
route add -net 192.168.1.0/24 dev tun_test
服务器Aping服务器的隧道内、网,互通,证明隧道建立成功。

3、在服务器B上添加DNAT转发
首先开通端口8099
iptables -A INPUT -ptcp --dport 8099 -j ACCEPT
开始添加转发规则到iptables规则表中,首先将 B公网中8099的请求转发到 A的8090端口(nginx服务的端口),即 B公网:8099=>192.168.1.1:8090,执行:
iptables -t nat -A PREROUTING -p tcp --dport 8099 -j DNAT --to-destination 192.168.1.1:8090
接着还需要为转发请求指明请求来源,需要指定只有转发到A的8090端口的请求的来源才是B
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.1 --dport 8090 -j SNAT --to-source 192.168.55.2

4、通过访问服务器B的8099端口,就可以访问到服务器A的nginx服务

