分析 linux服务器单网卡在可配置多网关 提供服务的可能性--重要!!!!!

背景介绍:
服务器(pc1)单网卡 配置为100.72.139.1 默认路由配置为100.72.139.254(此为h3c防火墙(简称R1),100.72.139.254是其内网地址,166.111.110.217是其外网地址)。现在100.72.139.0/24网内存在 100.72.139.2的设备(此为1台centos7设备(简称C1),100.72.139.2为内网地址,166.111.110.223是其外网地址)。

实现1:
现在想在pc1上实现 不进行任何配置 通过166.111.110.223:18006来访问pc1上的web服务
在c1上配置如下:
iptables -t nat -A PRTEROUTING -d 166.111.110.223 -p tcp -m tcp --dport 18006 -j DANT --to 100.72.139.1:8006
iptables -t nat -A POSTROUTING -d 100.72.139.1 -p tcp -m tcp --dport 8006 -j SNAT --to 100.72.139.2
这里比较有趣的是:不光可以以上设置 通过166.111.110.223:18006来访问100.72.139.1:8006,还可以在h3c端做端口映射 来通过166.111.110.217:18006来访问100.72.139.1:8006,也即是说可以通过2个不同的外网地址来访问内网相同的服务。

实现2:
①、通过ip rule机制是否可以实现 ?

②、通过mangle机制??
先在c1上如下:

再在pc1上:
iptables -t nat -I PREROUTING -d 100.72.139.1 -p tcp -m tcp --dport 18006 -j REDIRECT --to-ports 8006
iptables -t mangle -I PREROUTING -d 100.72.139.1 -p tcp -m tcp --dport 18006 -j MARK --set-mark 5
ip rule add from 100.72.139.1 fwmark 5 table 100
ip ro add default via 100.72.139.2 table 100
测试访问: https://166.111.110.223:18006/(不可访问) https://166.111.110.217:28006/(可以访问)

原因分析:
pc1查看iptables规则发现有数据流量,说明捕捉到了166.111.110.223:18006 如下:

在pc1 ping c1的100.72.139.2 发现不通 :但tracerout却可以 奇怪奇怪,检查pc1和c1上的iptables input都处于imcp协议放开状态

在c1上检查路由,如下:总感觉c1 tracerout pc1的100.72.139.1有2跳非常的怪异,觉得问题应该出在这里了,将c1的外网接口停掉,还是存在一样的问题。是不是c1(pc1上proxmox的虚拟机器)和pc1(物理机器proxmox)之间100.72.139.0/24段是通过虚拟端口连接的问题,pc1和c1是否可以通过单独不桥接物理网卡的虚拟机桥正常来通讯100.72.139.0/24段???

在c1上检查ip_forward处于开启状态,且针对100.72.139.1/32 做了166.111.110.223 的masquerade

在pc1上如下:
ip ro flush cache
将reverse path filtering关闭,
echo "0" > /proc/sys/net/ipv4/conf/vmbr0/rp_filter

在pc1上把-t nat -vZ PREROUTING 以及 -t mangle -vZ PREROUTING 计数器清零 再观察 在外部访问166.111.110.223:18006发现均有数据通过

通过h3c wan ip:166.111.110.217:28006映射给pc1 100.72.139.1:8006

别忘记在untrust到trust 加上
ok可以通过166.111.110.217:28006正常访问100.72.139.1:8006

posted @ 2020-11-26 11:42  helloweifa  阅读(481)  评论(0编辑  收藏  举报