侧边栏壁纸
博主头像
Blog

行动起来,活在当下

  • 累计撰写 35 篇文章
  • 累计创建 1 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

面向小白的 Lala IEPL 特化 nftables 转发教程

Administrator
2025-03-17 / 0 评论 / 0 点赞 / 1 阅读 / 0 字

本教程为@duckNet佬的nftables转发教程的面向小白的 Lala特化 版(原教程链接

本人水平不高,如有错误,还请提出

第一步:VNC配置路由

这段具体参考官方教程(地址官网有)

  1. 等待IEPL开机后(可能需要等待较长时间),进入控制台,安装系统

  2. 点击VNC按钮进入VNC,root登录,密码见邮箱

  3. 在官方教程中,根据自己买的机器,输入不同命令,以联通520为例:

echo "101 CU" >> /etc/iproute2/rt_tables
ip route add default via 192.168.5.1 dev eth0 table CU
ip rule add from 192.168.5.XX table CU
  1. 如果配置无误,就可以通过邮箱内的IP和端口,用自己的SSH工具本地连接操作了

第二步:nftables配置

  1. 控制台-网络-可配置的端口 中查看可用端口,然后在想用的端口后面填写相同的端口号(想填别的也行,本教程出于简化操作目的就填一样的了),然后点击右上角的更新,等待几秒,应该会下图一样,显示出ip:端口。
    image

  2. 编辑 /etc/nftables.conf ,将文件内原本的所有内容全部删除,替换成如下内容 (根据自己需要删改)

#!/usr/sbin/nft -f

flush ruleset

table inet filter {
		# 这三个链条如果你懂就可以动,不然就不动。
        chain input {
                type filter hook input priority filter;
        }
        chain forward {
                type filter hook forward priority filter;
        }
        chain output {
                type filter hook output priority filter;
        }
		# 首先处理 dnat
		chain port-dnat {
				type nat hook prerouting priority dstnat;policy accept;
				ip protocol { tcp,udp } th dport 这里写Lala入站端口(例如: 50065) counter dnat to 这里写落地ip端口(例如: 12.34.56.01:9012)
				ip protocol { tcp,udp } th dport 这里写Lala入站端口(例如: 50066) counter dnat to 这里写落地ip端口(例如: 12.34.56.02:9013)
				ip protocol { tcp,udp } th dport 这里写Lala入站端口(例如: 50067) counter dnat to 这里写落地ip端口(例如: 12.34.56.03:9014)
		}
		set dst-ip {
			type ipv4_addr
			flags interval
			elements = {落地ip(例如: 12.34.56.01),落地ip(例如: 12.34.56.02),落地ip(例如: 12.34.56.03)} # 注意使用英文逗号分开
		}
		# 再处理 snat
		chain port-snat {
				type nat hook postrouting priority srcnat;policy accept;
				ip daddr @dst-ip  masquerade
		}
}
  1. 保存文件后使之生效

nft -f /etc/nftables.conf
  1. 使开机自启

systemctl enable nftables.service
systemctl start nftables.service
  1. 可以通过 nft list ruleset 命令查看是否生效

第三步:使用systemd开机自动配置路由

  1. /etc/systemd/system/ 下创建一个服务单元文件 route-auto-configure.service

  2. 文件内容 (根据自己需要删改)

[Unit]
Description=Auto Configure LALA net route set
After=network.target  

[Service]
Type=oneshot
# 这里以分号为界限,有五句命令
# 前两句就是官方教程里配置路由的后两句命令,根据机型不同自行修改(这里写的是联通520的命令)
# 后三句是自己的落地,要把我这里的12.34.56.0x修改成你自己的落地ip,后面的CU也是根据机型不同自行修改(联通CU、电信CT、移动CM)
ExecStart=/bin/sh -c "/usr/sbin/ip route add default via 192.168.5.1 dev eth0 table CU;/usr/sbin/ip rule add from 192.168.5.xx table CU;/usr/sbin/ip rule add from 12.34.56.01 lookup CU;/usr/sbin/ip rule add from 12.34.56.02 lookup CU;/usr/sbin/ip rule add from 12.34.56.03 lookup CU"
RemainAfterExit=yes 

[Install]
WantedBy=multi-user.target
  1. 启用并启动服务

# 重新加载 systemd 配置
systemctl daemon-reload
# 启用开机自启
systemctl enable route-auto-configure.service
# 立即启动服务
systemctl start route-auto-configure.service
# 检查服务状态
systemctl status route-auto-configure.service
# 查看路由表
ip route show
ip rule show

第四步:开启内核转发

#查看内核转发开启情况
sysctl net.ipv4.ip_forward
#临时开启
sysctl -w net.ipv4.ip_forward=1
#永久开启
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

到这里,把Lala的ip:端口替换掉落地的ip:端口,如果顺利的话就已经可以连通了,重启后也会自动配置

补充一下 lala这个非对称路由其实没有说详细。

linux路由选择如果有已经存在的socket(可以理解为tcp连接),源ip是根据socket创建的地址的,在lala下面是 192.168.x.x 的地址,但是从lala返回到用户的数据包的地址是一个公网地址 这里用 1.2.3.4 来代替,如果最终地址是1.2.3.4,那么就会匹配默认路由表最终走eth1出去(10.x.x.x的网卡),导致了非对称路由。这就是为什么lala的专线需要配置路由表才能用。

按道理应该走eth0出去的,但是根据路由表匹配,走了eth1出去。

然后我文章中提到的,就是让回来的流量强制走eth0,不走eth1出去,走eth0就可以把数据包返回给国内的用户了。

大家有遇到配置问题的欢迎私聊我

0

评论区