双网脚本
本文介绍了如何临时添加和永久保存路由配置以实现双网脚本,包括在Ubuntu/Debian、CentOS/RHEL和树莓派上的操作步骤,帮助用户实现内网和外网之间的网络通信。

双网脚本
临时添加路由
#内网
sudo ip route add 192.168.0.0/16 via 192.168.175.65 dev eth0
sudo ip route add 10.0.0.0/8 via 192.168.175.65 dev eth0
#外网
sudo ip route add 0.0.0.0/0 via 192.168.8.1 dev eth1
ip route
如果希望在系统启动时自动执行上面的设置,只需要修改 rc.local。
sudo nano /etc/rc.local
然后将命令保存到 rc.local 文件中,如下:
echo "---------------------------------" >> /var/log/rc.local.log
date >> /var/log/rc.local.log
exec >> /var/log/rc.local.log 2>&1
max_attempts=30
current_attempt=0
# Function to check if eth0 is assigned the expected IP address
check_eth0_ip() {
if ifconfig eth0 | grep -q "inet 192.168.28.209"; then
return 0 # Success, eth0 has the expected IP address
else
return 1 # Failure, eth0 does not have the expected IP address
fi
}
# Wait until eth0 gets the expected IP address or maximum attempts reached
while [ $current_attempt -lt $max_attempts ]; do
if check_eth0_ip; then
echo "eth0 has been assigned the expected IP address."
break
else
echo "Waiting for eth0 to be assigned the expected IP address..."
sleep 5
current_attempt=$((current_attempt+1))
fi
done
# Check if maximum attempts reached
if [ $current_attempt -eq $max_attempts ]; then
echo "Maximum attempts reached. eth0 did not get the expected IP address."
fi
exec >> /var/log/rc.local.log 2>&1
ip route add 192.168.0.0/16 via 192.168.175.65 dev eth0
ip route add 10.0.0.0/8 via 192.168.175.65 dev eth0
ip route add 0.0.0.0/0 via 192.168.8.1 dev eth1
echo "end" >> /var/log/rc.local.log
echo "---------------------------------" >> /var/log/rc.local.log
永久保存路由配置
在很多 Linux 发行版中,你可以通过编辑网络配置文件来永久保存路由配置。
Ubuntu / Debian:编辑
/etc/network/interfaces
文件:auto eth0 iface eth0 inet static address 192.168.28.209 netmask 255.255.255.192 gateway 192.168.175.65 dns-nameservers 202.107.117.11 post-up ip route add 192.168.0.0/16 via 192.168.175.65 dev eth0 post-up ip route add 10.0.0.0/8 via 192.168.175.65 dev eth0 auto eth1 iface eth1 inet dhcp post-up ip route add default via 192.168.8.1 dev eth1
重启网络服务或重启系统:
sudo systemctl restart networking
CentOS / RHEL:编辑
/etc/sysconfig/network-scripts/route-<interface>
文件:192.168.0.0/16 via 192.168.175.65 dev eth0 default via <外网网关> dev eth1
树莓派
打开终端或通过 SSH 连接到树莓派。
编辑 dhcpcd 配置文件:
sudo nano /etc/dhcpcd.conf
在文件末尾添加以下内容,替换
<interface>
、<static_ip>
、<subnet_mask>
和<gateway>
为你的网络配置:interface <interface> static ip_address=<static_ip> static routers=<gateway> static domain_name_servers=<DNS_server>
例如:
# 内网 interface eth0 # 如果是有线连接,请使用'eth0';如果是无线连接,请使用'wlan0' static ip_address=192.168.28.209/26 # 设置固定的IP地址和子网掩码 static routers=192.168.175.65 # 设置默认网关的IP地址 static domain_name_servers=202.107.117.11 # 设置DNS服务器的IP地址 static route 192.168.0.0/16 via 192.168.175.65 dev eth0 static route 10.0.0.0/8 via 192.168.175.65 dev eth0 #外网 interface eth1 static ip_address=192.168.8.109/24 # 设置固定的IP地址和子网掩码 static routers=192.168.8.1 # 设置默认网关的IP地址 static domain_name_servers=202.107.117.11 # 设置DNS服务器的IP地址 static route 0.0.0.0/0 via 192.168.8.1 dev eth1
-
<interface>
:网卡接口名,通常是eth0
。 -
<static_ip>
:你想要设置的静态 IP 地址。 -
<subnet_mask>
:子网掩码,通常是24
。 -
<gateway>
:网关地址。 -
<DNS_server>
:DNS 服务器地址,可以是多个,用空格分隔。
-
保存并退出。
重启树莓派以使更改生效:
sudo service dhcpcd restart 或 sudo reboot
在树莓派重新启动后,它应该使用你设置的静态 IP 地址。你可以使用以下命令检查 IP 地址:
确保在相应的接口(例如
eth0
)上看到你设置的静态 IP 地址。ip addr show
确保替换 <外网网关>
为你实际使用的外网网关地址。
在完成这些配置后,使用 ip route show
命令验证路由规则是否正确添加。如果需要,你可能需要重新启动网络服务或重启系统以使配置生效。
设置静态ip
在 Linux 中,你可以通过编辑网络配置文件来设置静态 IP 地址。配置文件的路径可能会因 Linux 发行版而异。以下是在一些常见发行版上设置静态 IP 的步骤:
Ubuntu / Debian
打开
/etc/network/interfaces
文件以编辑:sudo nano /etc/network/interfaces
在文件中找到关于你网卡的配置行,可能看起来类似于:
auto eth0 iface eth0 inet dhcp
将其修改为静态 IP 的配置,例如:
auto eth0 iface eth0 inet static address 192.168.28.209 netmask 255.255.255.192 gateway 192.168.175.65 dns-nameservers 202.107.117.11
这里,
address
是你的静态 IP 地址,netmask
是子网掩码,gateway
是网关地址,dns-nameservers
是 DNS 服务器的地址。保存并退出。
重启网络服务或重启系统:
sudo systemctl restart networking
CentOS / RHEL
打开
/etc/sysconfig/network-scripts/ifcfg-<interface>
文件以编辑:sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
替换
<interface>
为你的网络接口名称。将文件修改为静态 IP 的配置,例如:
这里,
IPADDR
是你的静态 IP 地址,NETMASK
是子网掩码,GATEWAY
是网关地址,DNS1
和DNS2
是 DNS 服务器的地址。TYPE=Ethernet BOOTPROTO=static NAME=eth0 DEVICE=eth0 ONBOOT=yes IPADDR=192.168.1.2 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=8.8.4.4
保存并退出。
重启网络服务或重启系统:
sudo systemctl restart network
请确保替换上述示例中的 IP 地址、子网掩码、网关和 DNS 服务器地址为你网络的实际值。