作者:尚俊飞,范国强(月光光)
软路由配置方案一(一内网一外网)iptables 此方式不兼容宝塔:
使用iptables,防火墙需要关闭,可能造成安全问题。
软路由配置
编辑文件: vim /etc/netplan/00-installer-config.yaml
network:
ethernets:
enp1s0: # 外网
dhcp4: true
dhcp6: true
enp2s0: # 内网
addresses: [ 10.1.1.1/24 ]
version: 2
使用ifconfig查看网卡名字,区别内网和外网网卡,如果内网ip重启后ip丢失,可以手动在图形界面进行设置。
- 关闭ufw
systemctl disable --now ufw
?疑问:直接关闭是否导致安全性问题
(3)加载 nf_conntrack 模块
vim /etc/modules-load.d/custom-modules.conf (如果没有这个文件,看看目录下是否有其他文件,找一个啥也没写的,在后面加一行)
nf_conntrack
(4)修改内核参数
vim /etc/sysctl.d/99-forward.conf (如果没有这个文件,找99开头的)
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.all.route_localnet=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
只配置了ipv4的部分
- iptables 脚本(只配置了标红的部分,ipv6的没有配置)
#!/bin/bash
/data/firewall-set.sh
根据你的WAN网卡名称对应修改!!!
WAN_NAME='enp1s0'
IPv4设置
iptables -t nat -N mt_rtr_4_n_rtr
iptables -t nat -A POSTROUTING -j mt_rtr_4_n_rtr
iptables -t nat -A mt_rtr_4_n_rtr -o ${WAN_NAME} -j MASQUERADE # 添加路由到作为WAN的网卡的自动源地址转换规则
添加IPv4转发优化规则
iptables -t mangle -N mt_rtr_4_m_rtr
iptables -t mangle -A FORWARD -j mt_rtr_4_m_rtr
iptables -t mangle -A mt_rtr_4_m_rtr -o ${WAN_NAME} -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu # 针对PPPoE链接的优化
iptables -t mangle -A mt_rtr_4_m_rtr -m state --state RELATED,ESTABLISHED -j ACCEPT # 允许已建立连接的数据包直接通过
iptables -t mangle -A mt_rtr_4_m_rtr -m conntrack --ctstate INVALID -j DROP
iptables -t mangle -A mt_rtr_4_m_rtr -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
iptables -t mangle -A mt_rtr_4_m_rtr -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
iptables -t mangle -A mt_rtr_4_m_rtr -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -t mangle -A mt_rtr_4_m_rtr -i br_lan -o ${WAN_NAME} -j ACCEPT
IPv6 NAT设置,与IPv4基本一致
ip6tables -t nat -N mt_rtr_6_n_rtr
ip6tables -t nat -A POSTROUTING -j mt_rtr_6_n_rtr
ip6tables -t nat -A mt_rtr_6_n_rtr -o ${WAN_NAME} -j MASQUERADE # 添加路由到作为WAN的网卡的自动源地址转换规则
添加IPv6转发优化规则
ip6tables -t mangle -N mt_rtr_6_m_rtr
ip6tables -t mangle -A FORWARD -j mt_rtr_6_m_rtr
ip6tables -t mangle -A mt_rtr_6_m_rtr -o ${WAN_NAME} -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ip6tables -t mangle -A mt_rtr_6_m_rtr -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -t mangle -A mt_rtr_6_m_rtr -m conntrack --ctstate INVALID -j DROP
ip6tables -t mangle -A mt_rtr_6_m_rtr -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
ip6tables -t mangle -A mt_rtr_6_m_rtr -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
ip6tables -t mangle -A mt_rtr_6_m_rtr -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
ip6tables -t mangle -A mt_rtr_6_m_rtr -i br_lan -o ${WAN_NAME} -j ACCEPT
使用sudo执行以上sh脚本
安装一个可以实现该脚本持久化的工具
sudo apt install iptables-persistent
netfilter-persistent save (持久化保存,重启不会丢)
- 检查netplan配置是否正确
sudo netplan apply
- 遇到的问题:
*** too open,意思是文件目前的权限过于宽泛,sudo chmod 700 ;
...文件链接层数过多:使用vim编辑,或者找到链接的源文件修改;
- 参考网址
基于Ubuntu的软路由搭建记录 | 杂烩饭
软路由配置方案二(ufw配置):
采用ufw配置,兼容宝塔面板
(1)编辑文件: vim /etc/netplan/00-installer-config.yaml这步不变
network:
ethernets:
enp3s0: # 外网
dhcp4: true
dhcp6: true
enp4s0: # 内网
addresses: [ 10.1.1.1/24 ]
version: 2
+add(一外网多内网互通,桥接模式):
)编辑文件: vim /etc/netplan/00-installer-config.yaml
network:
ethernets:
2wlx3c46d8ade8db: # 外网
dhcp4: true
dhcp6: true
optional: true
enx00e099d7cad7: # 内网
dhcp4: false
dhcp6: false
enp0s31f6: #内网
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: #两张内网网卡添加进桥
- "enx00e099d7cad7"
- "enp0s31f6"
addresses: [10.1.1.1/24] #桥的ip
dhcp4: false
dhcp6: false
parameters:
stp: true
forward-delay: 4 #防环路
version: 2
(2)修改内核参数
vim /etc/sysctl.d/99-forward.conf (如果没有这个文件,找99开头的)
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.all.route_localnet=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
(3)Edit /etc/default/ufw and set DEFAULT_FORWARD_POLICY to ACCEPT:
DEFAULT_FORWARD_POLICY="ACCEPT"
- ufw配置:
#开启ufw路由功能
$ufw allow route
#从内网发来的请求到达 enp3s0(内网) ,输出到 enp4s0(外网)
$ sudo ufw route allow in on enp3s0 out on enp4s0
+add 桥接模式执行这句
$ sudo ufw route allow in on 2wlx3c46d8ade8db out on br0
#允许内网ip通过
$ sudo ufw allow from 10.1.1.1/24
(5)编辑sudo vim /etc/ufw/before.rules
*nat
:PREROUTING - [0:0]
:POSTROUTING - [0:0]
-A PREROUTING -i enp3s0 -p tcp -j DNAT --to-destination 10.1.1.1
-A PREROUTING -i enp3s0 -p udp -j DNAT --to-destination 10.1.1.1
-A POSTROUTING -s 10.1.1.0/24 -o enp3s0 -j MASQUERADE
COMMIT
(6)ufw开机启动,配置重载
$ sudo ufw enable
$ sudo ufw reload
$sudo ufw status
安装宝塔,其他需要开机启动的程序使用宝塔守护,就不用后面的步骤了,gui程序直接通过ubuntu图形界面设置。
Ubuntu使用systemd设置开机启动程序
创建一个新的服务文件:vim /etc/systemd/system/myapp.service
[Unit]
服务名称
Description=TestUi
需要在网络服务启动后才会启动
After=network-online.target
#确认网络服务启动
Wants=network-online.target
[Service]
程序启动脚本位置
ExecStart=/home/srv/myapp.sh
程序工作位置
WorkingDirectory=/home/srv/
服务意外终止时,Systemd 会自动重启该服务
Restart=always
DISPLAY环境变量 GUI程序必须配置此项否则无法启动 通常为0 具体看自己机器的环境
Environment=DISPLAY=:0
要运行该程序的用户名
User=root
设置重启间隔
RestartSec=5s
[Install]
服务会在multi-user.target启动时自动启动
WantedBy=multi-user.target
- 赋予myapp.service服务脚本文件可执行权限
sudo chmod 755 myapp.service
- 编写程序启动脚本:vim /home/srv/myapp.sh
#! /bin/bash
导入DISPLAY环境配置(GUI程序需配置)
export DISPLAY=:0
导入XAUTHORITY环境配置
XAUTHORITY环境配置可使用命令env查看(与登录的用户有关)
export XAUTHORITY=/.Xauthority #GUI程序需配置,Ubuntu24.04该路径重启自动变更
启动X server访问权限
/usr/bin/xhost +
启动程序
/usr/bin/myapp
- 赋予myapp.sh启动脚本文件可执行权限
sudo chmod 755 myapp.sh
- 手动启动服务并检查服务状态
sudo systemctl start myapp.service
sudo systemctl status myapp.service
- 启用服务在系统启动时自动运行
sudo systemctl enable myapp.service
- 参考网址:
ubuntu系统systemctl 开机启动Qt带gui程序_ubuntu开机运行gui应用-CSDN博客
Linux进程被信号杀死后退出状态码(exit code)的分析_exit-code-CSDN博客
安装系统启动主题(xyiot-ubuntu)
自动安装主题,下次启动时自动应用:
进入主题安装目录 ./xyiot-ubuntu
运行安装程序来安装主题:
sudo chmod u+x install && ./install
手动安装了主题:
进入安装目录,复制子文件夹( xyiot-ubuntu)移动到 /usr/share/plymouth/themes:
sudo cp -r ./xyiot-ubuntu /usr/share/plymouth/themes/
- 所有权变更为root:
sudo chown root:root /usr/share/plymouth/themes/xyiot-ubuntu
- 安装主题作为 default.plymouth 的替代主题:
sudo update-alternatives --install /usr/share/plymouth/themes/default.plymouth default.plymouth /usr/share/plymouth/themes/xyiot-ubuntu/xyiot-ubuntu.plymouth 100
- 运行命令配置default.plymouth,输入相应的数字将对应项设置为默认值:
sudo update-alternatives --config default.plymouth
- 不重启验证当前的开机动画:
全屏显示开机动画,5秒后自动退出
sudo plymouthd; sudo plymouth --show-splash; sleep 5; sudo plymouth --quit
参考网址:
在 Ubuntu 24.04 上安装和更改启动动画屏幕主题
安全检查
版权归原作者 尚俊飞 所有, 如有侵权,请联系我们删除。