我有两台centos7虚拟机。一台pc1里面有nginx,地址是10.10.10.2/24,网关10.10.10.1(其实就是pc上面的一个地址做网关了)。pc2双网卡,一张地址是10.10.10.1/24,另外一张连接外网地址192.168.11.X/24连接着外网,现在想让外网的主机可以访问到pc1上面的网页怎么办,只可以用pc1上网访问外网。在外面怎么也ping不到pc1。救命(这个刚刚接触,真不明白可以详细一点吗,用的是firewall防火墙和nat配置),怎么才可以实现外网访问内网的pc1?

对于centos7实现内网pc1被外网访问,可以通过在pc2上进行NAT配置来实现。具体步骤如下:
- 在pc2上启用NAT功能:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
其中eth1是pc2连接外网的接口。 - 在pc2上添加SNAT规则,将访问pc1的流量做源地址转换:
iptables -t nat -A PREROUTING -d 192.168.11.X -p tcp --dport 80 -j DNAT --to-destination 10.10.10.2:80
其中192.168.11.X是pc2的外网IP,10.10.10.2是pc1的内网IP。这个规则是将访问80端口的流量转发到pc1的80端口。
3. 在pc2上添加默认路由,将默认路由指向外网网关:
route add default gw 192.168.11.1
- 在pc1上添加默认路由,指向pc2:
route add default gw 10.10.10.1
这样就实现了从外网访问pc1上的WEB服务器。外网用户访问pc2的外网IP的80端口,流量会被转发到pc1的WEB服务器上。
你还需要确保pc2上启用了IP转发,编辑/etc/sysctl.conf,设置net.ipv4.ip_forward为1。
这个是通过NAT实现内外网互访的简单方法。也可以考虑使用端口转发等其他技术。