![无法通过 SSH 连接第二个网卡 IP](https://linux22.com/image/919692/%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20SSH%20%E8%BF%9E%E6%8E%A5%E7%AC%AC%E4%BA%8C%E4%B8%AA%E7%BD%91%E5%8D%A1%20IP.png)
基础设施: 微软 Azure 操作系统:Ubuntu 18.04
问题 : 我们已分配 2 个 NIC 卡(同一子网)。我们能够使用主 IP(20.71.0.21)地址进行 SSH,但无法使用辅助地址(20.71.0.22)进行连接。这在 Ubuntu 16.04 上运行正常。我想设置路由。
> :~# ip r l
> default via 10.171.0.1 dev eth0 proto dhcp src 20.71.0.21
> metric 100
> 20.71.0.0/24 dev eth0 proto kernel scope link src 20.71.0.21
> 20.71.0.0/24 dev eth1 proto kernel scope link src 20.71.0.22
> 168.63.129.16 via 20.71.0.1 dev eth0 proto dhcp src 20.71.0.21 metric 100
> 169.254.169.254 via 20.71.0.1 dev eth0 proto dhcp src 20.71.0.21 metric 100
> :~# route -n
> Kernel IP routing table Destination Gateway
> Genmask Flags Metric Ref Use Iface
> 0.0.0.0 20.71.0.1 0.0.0.0 UG 100 0 0 eth0
> 20.71.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
> 20.71.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
> 168.63.129.16 20.71.0.1 255.255.255.255 UGH 100 0 0 eth0
> 169.254.169.254 20.71.0.1 255.255.255.255 UGH 100 0 0 eth0
:~# cat /etc/netplan/50-cloud-init.yaml
ethernets: eth0: dhcp4: true dhcp4-overrides: route-metric: 100 dhcp6: false match: macaddress: 00:0d:3a:ab:xx:xx set-name: eth0 eth1: dhcp4: true dhcp4-overrides: route-metric: 200 dhcp6: false match: macaddress: 00:0d:3a:xx:xx:xx set-name: eth1 version: 2
> :~# cat /etc/netplan/60-static.yaml network:
> version: 2
> ethernets:
> eth0:
> addresses:
> - 20.71.0.21/24
> eth1:
> addresses:
> - 20.71.0.22/24
我们如何解决这个问题?
答案1
现在,我得到了第二个 NIC 可路由到互联网的解决方案,请运行以下命令为第二个 NIC 配置路由。
#et_ip=`ip addr show eth1 | awk '/inet / {split($2, a, "/"); print a[1]}'`
#def_gw=`ip route show | awk '$1 ~ "default" {print $3}'`
#sudo ip route add default via $def_gw dev eth1 table 11
#sudo ip rule add from $et_ip table 11
上述步骤将配置第二个 NIC,并使 IP 可通过 Internet 路由(如果第二个 NIC 配置了任何公共 IP),上述路由在重启后不会持久。您需要创建一个 systemd 服务以在启动期间运行这些路由,或者您可以将步骤 3 中提到的上述路由选项添加到您的 .bashrc 配置文件(~/.bashrc)中
通过 Systemd 服务的持久路由选项:
1) 在任意目录中创建一个包含以下内容的文件。例如,我在 /sbin 目录中创建。
root@ubuntu18-2:/sbin#猫路线.sh
#!/bin/bash
et_ip=`ip addr show eth1 | awk '/inet / {split($2, a, "/"); print a[1]}'`
def_gw=`ip route show | awk '$1 ~ "default" {print $3}'`
ip route add default via $def_gw dev eth1 table 11
ip rule add from $et_ip table 11
2)创建文件后,确保设置适当的权限
#chmod 777 **/sbin/route.sh**
3)现在在 /etc/systemd/system 中创建一个名为 route.service 的文件,内容如下
root@ubuntu18-2:/etc/systemd/system#cat 路线.服务
[Unit]
Description=To configure routes for 2nd NIC
[Service]
ExecStart=/sbin/route.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
4) 一旦创建 /etc/systemd/system/route.service 文件,运行以下命令以确保服务设置为在启动期间启动。
#sudo systemctl enable route
#sudo systemctl start route
谢谢 :)