使用dummy接口测试NAT伪装配置的技术咨询
使用dummy接口测试NAT伪装配置的技术咨询
嘿,看起来你已经准备用dummy接口验证NAT的MASQUERADE配置了,先帮你梳理下当前的网络环境,再一步步说具体的测试方法~
首先你当前的接口状态如下(我帮你补全了dummy0的输出格式):
random@debian:~$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:4d:63:c0 brd ff:ff:ff:ff:ff:ff inet 192.168.122.10/24 brd 192.168.122.255 scope global enp1s0 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe4d:63c0/64 scope link valid_lft forever preferred_lft forever 3: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
接下来按以下步骤完成测试:
给dummy0配置独立子网IP
dummy接口需要属于一个和enp1s0不同的子网,才能模拟内部网络。执行命令:ip addr add 10.0.0.1/24 dev dummy0配置后可以用
ip addr show dummy0确认IP已生效。确保IP转发功能开启
NAT生效的前提是系统开启IP转发,临时开启执行:echo 1 > /proc/sys/net/ipv4/ip_forward如果需要永久生效,编辑
/etc/sysctl.conf,把net.ipv4.ip_forward = 0改成1,然后执行sysctl -p生效。验证NAT MASQUERADE规则
先检查你已配置的NAT规则:iptables -t nat -L -n -v如果POSTROUTING链里还没有MASQUERADE规则,添加一条(针对enp1s0接口的出站流量):
iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE发起测试流量并验证NAT效果
用dummy0的IP作为源地址访问外网,比如ping谷歌DNS:ping -I 10.0.0.1 8.8.8.8同时在另一个终端抓enp1s0的包,验证源IP是否被替换成enp1s0的192.168.122.10:
tcpdump -i enp1s0 icmp and host 8.8.8.8另外也可以查看iptables规则的命中次数,确认流量是否触发了MASQUERADE:
iptables -t nat -vL POSTROUTING
如果测试中遇到问题,比如ping不通,先检查防火墙的INPUT/OUTPUT/FORWARD链有没有阻挡流量,或者路由表是否正确(用ip route show确认10.0.0.0/24的流量会走默认路由出去)。
备注:内容来源于stack exchange,提问作者Saurav Niraula
相关产品推荐
相关产品推荐

