Follow

# 先到上游机子配置 NAT 转发

ip link add dnstream type gretap local # remote #
ip addr add 10.0.0.2 peer 10.0.0.1 dev dnstream
ip link set dnstream up
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
### eth0 为上游机子外网网卡

# 下面命令在下游机子操作

## 创建本地路由表(这条只需要执行一次)
echo 200 local >> /etc/iproute2/rt_tables
### 后续命令每次重启要重新执行

## 建立隧道
ip link add upstream type gretap local # remote #
ip addr add 10.0.0.1 peer 10.0.0.2 dev upstream
ip link set upstream up

## 配置本地路由表
ip rule add to # table loacl
ip rule add to # table loacl
ip rule add from # table loacl

## 导入其他直连网段,如 Cloudflare 的,效果为 cf 回源直连
cat local.txt | while read line
do
ip rule add to $line table loacl;
done

## 查看本机默认路由,写进 local 路由表
ip route | grep default
ip route add default via # dev # table local
### 直接复制 via 后面那段,前面加上 ip ro add default 最后加上 table local 就好了

## 删除默认路由并切换到上游服务器
ip route del default && ip route add default via 10.0.0.2 dev upstream src 10.0.0.1
### 这段必须 && 同时输入,删除默认路由会断网,SSH 断开
###(也可以把自家网段加进 local 表再操作,避免失误断网

## 验证配置是否生效
curl ipv4.ip.sb

补充

1. 上游机子需要开启 net.ipv4.ip_forward = 1 转发

2. ip route change default ... 就可以切换默认路由了

:anenw34: 再补充

渠道起了 (ip link up) 之后可以互相 ping 一下看看通不通

切换默认路由之前最好先小范围测试一下 NAT 是否正常,例如 1.1.1.0/24 网段,ping 1.1.1.1

ip route add 1.1.1.0/24 via .. dev ...
ip route del 1.1.1.0/24 via .. dev ... 测试完成删除路由

附上常用的网络测试命令

ip a 列出网卡详情
ip ro 列出 IPv4 路由表
ip -6 ro 列出 IPv6 路由表

ip ro sh tab localnet
ip -6 ro sh tab localnet
列出表 localnet 的路由

netstat -ltunp 列出端口监听情况

:fwfw_08: 草,忘了 local 路由表是系统的,可能有影响,建议改个名字,例如 localnet 表

Sign in to participate in the conversation
呜呜 w(> ʌ <)w

一个 泛ACGN 实例,讨论主题不限 ~