我正在使用一台 Linux 机器。我想要这样的东西。
网络--->wlan0---->eth0-->其他服务器。
wlan0 和 eth0 接口都位于同一个 Linux 机器内。我使用 dhcp,将某个地址(比如 192.168.3.21)分配给我的 wlan0 接口。我为 eth0 接口分配静态 IP(比如 192.168.3.101),为其他服务器分配静态 IP(比如 192.168.3.102)。现在,我想从网络(192.168.3.XX)ping 到地址为 192.168.3.102 的其他服务器和地址为 192.168.3.101 的 eth0。但我无法这样做。
我甚至无法从我的 Linux 机器 ping 通位于 192.168.3.102 的其他服务器。
我已经通过“echo 1 > /proc/sys/net/ipv4/ip_forward”命令启用了 ip 转发。
我也使用了以下命令来启用 nat 转发。
iptables -A FORWARD -i wlan0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
我仍然无法 ping 通。
请告诉我我遗漏了什么。任何帮助都将不胜感激。
以下是 iptables-save 的输出:-
# Generated by iptables-save v1.6.0 on Mon Feb 19 10:17:54 2018
*raw
:PREROUTING ACCEPT [481:39595]
:OUTPUT ACCEPT [325:24634]
COMMIT
# Completed on Mon Feb 19 10:17:54 2018
# Generated by iptables-save v1.6.0 on Mon Feb 19 10:17:54 2018
*nat
:PREROUTING ACCEPT [1:229]
:INPUT ACCEPT [1:229]
:OUTPUT ACCEPT [1:76]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o wlan0 -j MASQUERADE
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Feb 19 10:17:54 2018
# Generated by iptables-save v1.6.0 on Mon Feb 19 10:17:54 2018
*mangle
:PREROUTING ACCEPT [482:39927]
:INPUT ACCEPT [474:38801]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [325:24634]
:POSTROUTING ACCEPT [325:24634]
COMMIT
# Completed on Mon Feb 19 10:17:54 2018
# Generated by iptables-save v1.6.0 on Mon Feb 19 10:17:54 2018
*filter
:INPUT ACCEPT [63:6229]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:76]
-A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Mon Feb 19 10:17:54 2018
以下是我的 ip route 的输出:-
默认通过 192.168.0.1 dev wlan0 metric 10 192.168.0.0/24 dev wlan0 proto 内核范围链接 src 192.168.0.190 192.168.0.0/24 dev eth0 proto 内核范围链接 src 192.168.0.235
答案1
如果你想拥有路由器有两个接口,它们需要位于不同的子网(例如 192.168.0.0/24 与 192.168.5.0/24 是不同的)。此处存在冲突,在您的 中可见ip route
,无法正常工作。
如果你想在两个接口上使用相同的子网,它不是路由器,而是双端口交换机,通常称为桥。
- 您可以创建一个桥接接口并在那里分配一个 IP,可能通过 DHCP。
- wlan0 和 eth0 不应保留 IP 地址,它们将成为网桥的透明成员。
答案2
要连接两个不同的网络,需要使用如下所示的桥接器:
创建桥接接口
brctl addbr br0
将接口添加到网桥
brctl addif eth0
brctl addif wan0
将接口的 IP 设为零。
ifconfig eth0 0.0.0.0 promisc up
ifconfig wan0 0.0.0.0 promisc up
启用桥接接口
ifconfig br0 10.0.1.1 netmask 255.255.255.0 broadcast 10.0.1.255