我被一个问题困住了,找不到解决办法。我有一台带两个网卡的 Linux PC。第一个网卡 (eth1) 连接到公共 IP(可能是交换机或其他什么,其实并不重要),因此 eth1 连接到 wan,另一个 eth0 连接到交换机并使其成为 lan 网卡。配置:
eth1 ip 地址 88.200.1xx.xxx //xxx 是出于安全原因 eth0 ip 地址 192.168.1.1
wan ------> [eth1 (linux PC) eth0]<---->[switch]<----> [eth1 (PC1)]
现在我想连接这两个网络,这样 PC1 就可以访问 Linux PC 和 WAN。我想我知道如何做,但我无法正确配置。这是我尝试过的:
- 我打开了 IP 转发(确定)
- 我将 eth1 默认网关设置为 WAN 上的正确 IP
- 我尝试将 eth0 默认网关设置为相同的 IP(但是不行)
我该怎么做?我尝试使用 linux route 命令,但遇到了问题。请帮忙。
答案1
如果您的 Linux 机器上有 2 个 NIC,并且都配置了 IP,则您无需添加从一个网络到另一个网络的路由。这将自动完成。
在 WAN NIC 上添加默认网关地址。在 LAN NIC 的配置中不要这样做。
然后在内核中启用转发:
echo 1 >> /proc/sys/net/ipv4/ip_forward
要使其在启动时自动设置此值,请取消注释此行/etc/sysctl.conf
#net.ipv4.ip_forward=1
然后在iptables中设置一些规则来执行natting和转发:
# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT
# We allow traffic from the LAN side
iptables -A INPUT -i eth0 -j ACCEPT
######################################################################
#
# ROUTING
#
######################################################################
# eth0 is LAN
# eth1 is WAN
# Allow established connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Masquerade.
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# fowarding
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
那就可以了。
答案2
您只能有一个默认网关,因此只能设置一个。
要通过另一个接口路由流量,您需要设置持久静态路由并将其绑定到该接口。