环境

主机网卡2网卡1用户版本密码
routeens34:192.168.33.254ens33:192.168.164.167rootcentos7root
clientens33:192.168.33.11rootcentos7root

route

关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens34

修改ens34如下

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPADDR=192.168.33.254
NETMASK=255.255.255.0
NAME=ens34
DEVICE=ens34
ONBOOT=yes
service network restart

开启路由功能

echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf
sysctl -p

允许接收局域网卡数据包

iptables -I INPUT -i ens34 -j ACCEPT

使用snat修改数据包

iptables -t nat  -A POSTROUTING  -s  192.168.33.0/24 -o ens33 -j SNAT --to-source 192.168.164.167

配置DNAT

iptables -t nat -A PREROUTING  -i ens33 -d 192.168.164.167 -p tcp --dport 21 -j DNAT --to-destination 192.168.33.11
#-d 后面是自己ip 后面是需要转发的ip
iptables -t nat -A PREROUTING  -i ens33 -d 192.168.164.167 -p tcp --dport 80 -j DNAT --to-destination 192.168.33.11

开启防火墙

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --reload

打开route虚拟机之后执行

iptables -F

iptables -t nat -A POSTROUTING -s 192.168.33.0/24 -o ens33 -j SNAT --to-source 192.168.164.167

iptables -t nat -A PREROUTING -i ens33 -d 192.168.164.167 -p tcp --dport 21 -j DNAT --to-destination 192.168.33.11

iptables -t nat -A PREROUTING -i ens33 -d 192.168.164.167 -p tcp --dport 80 -j DNAT --to-destination 192.168.33.11

client

修改ens33如下

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.33.11
NETMASK=255.255.255.0
GATEWAY=192.168.33.254
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
UUID=51802b6f-84e0-4fdd-8371-1321e65a925f
DEVICE=ens33
ONBOOT=yes
DNS1=202.120.2.101

或者

在/etc/NetworkManager中添加

dns=no

修改/etc/resolv.conf

nameserver 202.120.2.101

重启网络服务

service network restart
systemctl restart NetworkManager

安装apache和vsftpd

yum -y install httpd
yum -y install vsftpd

启动apache和vsftpd

service httpd restart
service vsftpd restart

开机启动

systemctl enable httpd.service
systemctl enable vsftpd.service

配置vsftpd

setsebool -P ftpd_full_access on
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload

链接ftp

[root@localhost ~]# ftp 192.168.33.11
Connected to 192.168.33.11 (192.168.33.11).
220 (vsFTPd 3.0.2)
Name (192.168.33.11:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,33,11,181,42).
150 Here comes the directory listing.
drwxr-xr-x    2 1003     0               6 Dec 13 11:08 pub
226 Directory send OK.

参考

linux使用snat转发的问题 - 互联网开发笔记 (wencst.com)

Linux下搭建SNAT,DNAT实验_东宫三太zi的博客-CSDN博客_dnat linux

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐