问题描述及背景

使用服务器的时候,希望可以使用两张网卡分别连接内外网。
本文中将主要介绍使用Netplan的方法配置两张内外网网卡,以及设置路由。

解决办法

首先使用ip a查看网络状态。以确定连接内网的网卡和连接外网的网卡。
此处,连接内网的网卡是enp3s0,连接外网的网卡是enp7s0

然后配置Netplan

  • 打开Netplan配置文件

    1
    sudo nano /etc/netplan/*.yaml
  • 添加配置信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    # Let NetworkManager manage all devices on this system

    network:
    version: 2
    # renderer: NetworkManager # 注释1
    ethernets:
    enp7s0:
    dhcp4: true
    optional: true
    dhcp4-overrides:
    route-metric: 2
    enp3s0:
    dhcp4: false
    addresses:
    # 注释2
    - x.x.x.x/x
    - x.x.x.x/x
    # gateway4: x.x.x.x # 注释3
    nameservers:
    addresses: [x.x.x.x]
    routes:
    # 注释4
    - to: x.x.x.x/x
    via: x.x.x.x
    metric: 36
    - to: x.x.x.x/x
    via: x.x.x.x
    metric: 36
    optional: true

    通过设置metric可以控制路由的优先级。metric数值越小,优先级越高,数值越大,优先级越低。

    • 注释1、renderer需要注释掉。否则有些设置不会生效,比如设置的metric
    • 注释2、注释4。一张网卡可以设置多个ip地址(注释2),同时可以设置多个路由(注释4)。
    • 注释3、内网网卡的网关不需要设置,如果设置了,每次重启会出现内网网卡通向0.0.0.0/0的默认路由,导致上不了网。
  • 启用Netplan

    1
    sudo netplan apply
  • 检查路由,以及用ping命令查看是否内外网都正常

    1
    route -n

配置成功后,就可以同时使用内外网了。也可以把机器作为跳转机,从外网连接,跳转去内网。

后记

也尝试过其他方法来实现。大概流程是
  • /etc/network/interfaces文件中设置内网网卡的静态IP

    1
    2
    3
    4
    auto enp3s0
    iface enp3s0 inet static
    address 10.3.125.92
    netmask 255.255.255.0

    本人的尝试中发现,并不能在/etc/network/interfaces文件中同时设置双网卡的IP。(可能会报错,参考:Restarting networking

  • 重启网络服务

    1
    sudo /etc/init.d/networking restart
  • 添加路由
    可以使用route add命令,或者ip route add命令。比如,route del -net 0.0.0.0 dev enp3s0ip route del default via 192.168.1.1 dev enp7s0ip route add 0.0.0.0/0 via 192.168.1.1 dev enp7s0 metric 2
    具体可以参考:Linux中添加路由使用route命令设置双网卡路由

  • 但是设置过了路由,系统重启,路由就会被重置,所以需要在系统启动时自动执行添加路由的命令。
    /etc/rc.local文件中写好配置。可以参考开机自动启动命令以及设置rc.local

由于过程繁琐,不像Netplan一样可以一步到位的设置。所以最终选择了Netplan

在配置过程中,可能会把网卡弄崩掉。

可以使用sudo service network-manager restart以及
sudo /etc/init.d/networking restart命令从头开始。

参考

双网卡系统重启时出现默认路由
Netplan网络配置工具学习
网络优先级设置
双网卡配置优先级
Netplan配置双网卡、双路由
Netplan 配置多网卡、多路由、多ip、bonding
查看网关
查看DNS
查看网络流量
重启网卡

问题描述

在使用SSH连接过程中,突然出现连接不成功(以前都可以连接,但突然不能连接了),并且出现如下提示:
ssh_exchange_identification: read: Connection reset
或者
ssh: connect to host port 22: Connection refused

解决办法

需要考虑是否因为密码输入错误的次数过多,导致Linux系统禁止了你的IP地址访问。
可以查看/etc/hosts.deny文件中是否出现了你的IP地址。

如果的却是Linux系统禁止了你的IP地址访问,仅仅在/etc/hosts.deny中删除IP是没有用的,也需要在/var/lib/denyhosts目录下的如下文件中进一步删除被禁IP。

1
2
3
4
5
6
7
/var/lib/denyhosts/hosts 
/var/lib/denyhosts/hosts-restricted
/var/lib/denyhosts/hosts-root
/var/lib/denyhosts/hosts-valid
/var/lib/denyhosts/users-hosts
/var/lib/denyhosts/users-invalid
/var/lib/denyhosts/users-valid

可以通过如下命令删除文件中的被禁IP地址
sed -i "/IP地址/d" /文件

通过运行Shell脚本以删除所有文件中的被禁IP,然后通过如下命令检查iptables
iptables -nvL | grep [IP地址]

阅读全文 »

前言:

  自古以来,数学家就被有关素数的问题所吸引,许多人都研究过确定整数是否素数的方法。检测一个数是否素数的一种方法就是找出它的因子;另外还有概率方法。
  算法只考虑在实践中的可靠性而不考虑在自然界的真理性表现出数学与工程的不同。这也使得概率方法可以在算法中应用。

阅读全文 »

Windows平台
我的环境:

tensorflow_gpu 1.9.0 + CUDA 9.0 + cuDNN 7.4.1(建议安装tensorflow_gpu 1.9.0,高版本的可能无法很好使用)

一、首先说一下安装顺序

(注意版本一定要匹配,不一定是最新的就能用)

1、安装tensorflow_gpu(注意tensorflow与python版本的匹配)

tensorflow的github仓库:https://github.com/tensorflow/tensorflow

2、根据tensorflow版本查询CUDA版本,安装CUDA

CUDA历史版本下载地址:https://developer.nvidia.com/cuda-toolkit-archive

3、根据CUDA版本查询cuDNN版本,安装cuDNN

cuDNN历史版本下载地址:https://developer.nvidia.com/rdp/cudnn-archive

对应版本查询链接:https://tensorflow.google.cn/install/source_windows

阅读全文 »

关于一个二进制数 1111000 除以 1101,模 2 除法的商为 1011,余数为 111.这个结果不同于十进制除法。所以特记下。

方法一:

具体步骤如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#第一步
1111000
1101
0010000 ----余数,商为1,只要第一位非0商就是1
#第二步,每步移一位,当起始位为0时,除以0;为1时除以除数。
010000
0000
010000 ----余数,商为0,只要第一位是0商就是0
#第三步
10000
1101
01010 -----余数,商为1,这里的余数你猜出,其实就是对应位异或
#第四步
1010
1101
0111 ------余数,商为1,如果位数比除数还小,不再继续运算
#最终余数为111,商为1011
阅读全文 »

题目描述:

我们今日大多数时候习惯于使用阿拉伯数字,但是同时有时候我们还会使用一种数字——罗马数字。传统罗马数字用单个字母表示特定的数值,I 表示 1,V 表示 5,X 表示 10,L 表示 50,C 表示 100,D 表示 500,M 表示 1000。

最多 3 个同样的 I,X,C 或 M 可以连续出现表示一个数字,V,L,D 则不在一个数字中连续出现。例如 II 表示 2,CCC 表示 300。但是要注意,IIII 就不能表示 4。有时,一个可表示为 10n 的数出现在一个比它大 1 级或 2 级的数前(I 在 V 或 X 前面,X 在 L 或 C 前面,等等),数值等于后面的那个数减去前面的那个数,例如 IV 表示 4,XL 表示 40 等(像 XD, IC, 和 XM 这样的表达是非法的,因为前面的数比后面的数小太多)。

除了“CCLXVIII = 100+100+50+10+5+1+1+1 = 268”,一般来说,字符以递减的顺序接连出现。

阅读全文 »