![将第二个接口上的默认网关更改为特定地址](https://linux22.com/image/720991/%E5%B0%86%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%8E%A5%E5%8F%A3%E4%B8%8A%E7%9A%84%E9%BB%98%E8%AE%A4%E7%BD%91%E5%85%B3%E6%9B%B4%E6%94%B9%E4%B8%BA%E7%89%B9%E5%AE%9A%E5%9C%B0%E5%9D%80.png)
我目前有两台服务器,两个都服务器有(并且正在使用)两个端口。简而言之,我需要将其中一台服务器的默认网关从其默认eth0
地址/网关更改为内部eth1
地址,从而有效地将另一台服务器用作路由器/网关。
我使用的流程不起作用 - 当我将第二台服务器上的默认路由更改为第一台时,互联网/eth0
访问停止(但本地网络/eth1
访问继续)。我做错了什么?
附注:由于非常烦人的商业政治,服务器不能移至另一个交换机或类似设备(我更喜欢这样,但遗憾的是我没有权限)。
因此,第一台服务器(我将其称为服务器 A)具有以下内容(其中 XXXX 是公共 IP 地址,GGGG 是网关):
:~# ip route show
default via G.G.G.G dev eth0 onlink
10.11.0.0/16 dev eth0 proto kernel scope link src 10.11.0.8
10.130.0.0/16 dev eth1 proto kernel scope link src 10.130.12.252
X.X.X.X/XX dev eth0 proto kernel scope link src X.X.X.X
此外,服务器A已设置为允许IP转发:
:~# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
LOG all -- anywhere anywhere LOG level warning
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
:~# cat /etc/iptables/rules.v4
*nat
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o eth1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -j LOG
COMMIT
现在,在第二台服务器上 -服务器B- 执行后ip route replace default via 10.130.12.252 dev eth1 onlink
显示以下内容(其中 YYYY 是该服务器的公共 IP 地址):
:~# ip route show
default via 10.130.12.252 dev eth1 onlink
10.46.0.0/16 dev eth0 proto kernel scope link src 10.46.0.7
10.130.0.0/16 dev eth1 proto kernel scope link src 10.130.112.24
Y.Y.Y.Y/YY dev eth0 proto kernel scope link src Y.Y.Y.Y
这又导致服务器B失去所有互联网访问(不仅仅是 DNS -ping 8.8.8.8
挂在服务器 B 上,但继续在服务器 A 上工作),但它仍然可以访问网络10.130.0.0/16
)。将默认路由更改回 GGGG 可恢复互联网访问。
我做错了什么?我怎样才能让它正常工作?