Iptables 代理局域网内的主机上网
参考连接:https://developer.aliyun.com/article/607330
环境为云环境,有外网主机的IP为192.168.0.39,无外网主机的IP为192.168.0.228
需要实现无外网主机通过有外网主机的IP上网,同时还可以做nat。最终目的是把无网主机连上网,然后把无网的主机的服务端口映射出去。让互联网可以直接访问原本无网主机的服务。
1,首先需要增加一个私网ip地址192.168.0.2,增加在私网里面ping一下看是否生效。
E="eth0"
BOOTPROTO="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
PERSISTENT_DHCLIENT="yes"
IPV6INIT=yes
DHCPV6C=yes
IPADDR=192.168.0.2
PREFIX=24
2,安装iptables服务
yum install iptables-services
3,开启ip转发功能
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
4,使sysctl -p命令使上面的配置修改生效。
sysctl -p
5,配置SNAT规则,
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 192.168.0.39
可以这样理解 iptables -t nat -I POSTROUTING -s 转换的网段 -j SNAT --to-source 转换后的源地址也就是能上外网的地址
保存生效
service iptables save
也可以通过修改iptables配置文件来配置规则
配置文件路径
vi /etc/sysconfig/iptables
需要注意的是修改iptales配置文件之后要重启iptables服务。
systemctl restart iptables
配置过SNAT之后,原本无网的主机添加一条静态路由之后就可以上网了。
在无网的主机上添加静态路由
route add -net 0.0.0.0/0 gw 192.168.0.2
测试联网
6,配置DNAT规则,配置DNAT规则的目的在于在原无网主机的某个服务映射出去,下面将原本无网主机的ssh服务映出去。实现从外面连3389端口,数据转发内部主机192.168.0.228主机上的22端口上。
iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to 192.168.0.228:22
iptables -t nat -I POSTROUTING -p tcp --dport 3389 -j MASQUERADE
可以这样理解:
iptables -t nat -I PREROUTING -p tcp --dport 对外开放端口号 -j DNAT --to 转发到内网之后的IP和端口号
iptables -t nat -I POSTROUTING -p tcp --dport 对外开放端口号 -j MASQUERADE
注意:云主机所在的安全组要访问对应的端口
也可以通过编辑iptables配置文件来实现
编辑配置文件之后有要重启iptables服务,直接使用iptables命令的要执行保存操作。对应目录如下
重启服务
systemctl restart iptables
保存配置
service iptables save
最后测试成功