我想知道如何将流量从网关转发到子网。
我有这个工作设置,主机A后面的隧道可以平主机B 10.151.0.1,但不是主机C 10.151.0.2。
如果我在主机B 10.151.0.1 (子网网关)上转储数据包,我会在接口上看到ping。
tcpdump: listening on eno1, link-type EN10MB (Ethernet), capture size 262144 bytes
(host A)10.0.1.18 > (host c)10.151.0.2: ICMP echo request, id 21863, seq 7, length 64
因此,数据包到达(主机b) 10.151.0.1,但没有转发到10.151.0.2主机C。我看到主机C接口上什么都没有。
我已经启用了ip转发,并添加了iptables规则(主机B):
iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
iptables -A FORWARD -i eno1 -o eno2 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eno2 -o eno1 -j ACCEPT
我还尝试将此路由添加到主机C:
ip route add 10.151.0.0/30 via 10.151.0.2 dev eno2
也许有人能帮我?非常感谢
我试图通过嵌入整个子网来避免多个主机托管ipsec。顺便提一下,主机B 10.151.0.1可以ping 10.151.0.2 ;-)
更新1:我现在可以用代理ARP从主机C中平主机A:
echo 1 > /proc/sys/net/ipv4/conf/eno2/proxy_arp
魔法发生了:
root@hostC:/home/administrateur# ping 10.0.1.21
PING 10.0.1.21 (10.0.1.21) 56(84) bytes of data.
64 bytes from 10.0.1.21: icmp_seq=1 ttl=62 time=16.0 ms
64 bytes from 10.0.1.21: icmp_seq=2 ttl=62 time=16.0 ms
但是我总是不能从主机A来平主机C,但是主机A和B之间的ping是可以的。
UPDATE2:从主机B中删除它,所有的工作:
/sbin/route add -net 10.0.1.0 netmask 255.255.255.0 gw 10.151.0.1
/sbin/iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
所有主机都可以平平所有主机,子网到子网工作:)
发布于 2020-04-06 12:17:12
您在主机C上的路线应该是这样的:
ip route add HOST-A-IP-RANGE via 10.151.0.2 dev eno2
例如:
IP route add 10.0.1.0/24 via 10.151.0.2 dev eno2
实际上这可能是错误的,因为我没有你的主机-一个网络地址。您还应该在主机A上添加相同的路由。
ip route add HOST-B-IP-RANGE via 10.151.0.2 dev eno2
https://serverfault.com/questions/1011112
复制相似问题