顯示具有 LEAF 標籤的文章。 顯示所有文章
顯示具有 LEAF 標籤的文章。 顯示所有文章

2026年8月25日 星期二

LEAF Shorewall NAT LOOPBACK 範例

編輯 /etc/shorewall/interfaces 增加 routeback
net             eth0                    dhcp
loc             eth1                    dhcp,routeback

編輯 /etc/shorewall/nat
100.109.54.55   eth0            192.168.9.55    Yes             No

編輯/etc/shorewall/snat
MASQUERADE     192.168.9.0/24 eth1 

編輯  /etc/shorewall/rules
SSH(ACCEPT)     net:100.109.54.0/24  loc:192.168.9.55
#DNAT       net      loc:192.168.9.55:22   tcp     22   -   100.109.54.55
#DNAT       loc      loc:192.168.9.55      tcp     22   -   100.109.54.55

2026年6月12日 星期五

LEAF設定 WireGuard

編輯 leaf.cfg加入
wireguard

編輯 /etc/modules 加入
wireguard

編輯  /etc/shorewall/interfaces 加入
wg0    wg0     tcpflags,nosmurfs,routefilter,routeback

編輯  /etc/shorewall/zones 加入
wg0             ipv4

編輯 /etc/shorewall/rules 加入
ACCEPT    net                     fw      UDP 51820
ACCEPT    wg0:192.168.226.1       wg0     TCP 22
ACCEPT    wg0     wg0:192.168.226.1       TCP 4119,4120,4122,22
DROP         wg0                     wg0     all
Ping(ACCEPT)    wg0                     fw

產生 設定檔
#!/bin/sh
nodenum=20

spri=$(wg genkey); spub=$(echo $spri|wg pubkey)

# wireguard server
Endpoint=192.168.228.2:51820

# configure file
wg0conf=wg0.conf-
client=client.conf-

:>${client}
cat <<EOF0 >$wg0conf
#pri=${spri}
#pub=${spub}
[Interface]
Address = 192.168.226.253/24
ListenPort = 51820
PrivateKey = ${spri}

EOF0

for i in `seq 1 $nodenum`;do
pri=$(wg genkey); pub=$(echo $pri|wg pubkey)

cat <<EOF >>$client
## node $i ##############################################
[Interface]
PrivateKey = ${pri}
Address = 192.168.226.${i}/24

[Peer]
PublicKey = $spub
AllowedIPs = 192.168.226.0/24
Endpoint = ${Endpoint}
PersistentKeepalive = 25

EOF

cat <<EOF0 >>$wg0conf
## node $i ##############################################
[Peer]
PublicKey = ${pub}
AllowedIPs = 192.168.226.$i/32

EOF0

done

2026年3月25日 星期三

Shorewall Hairpin NAT 或 NAT Loopback 設定方式

fw  eth0:192.168.119.253/24
ap  eth2:192.168.119.231/24:3142

編輯 /etc/shorewall/interfaces
增加 內網介面  routeback 選項( Shorewall 會丟棄在同一個介面「進又出」的封包)
loc             eth2                    dhcp,routeback

編輯 /etc/shorewall/snat  (偽裝來源,讓伺服器以為是「防火牆」在找它)
SNAT(192.168.119.253)   192.168.119.0/24 eth2 tcp 3142 -

編輯/etc/shoreall/rule (定義轉發:當內網存取fw ,目標轉向伺服器)
DNAT:NFLOG(4) loc    loc:192.168.119.231 tcp 3142 - -

2026年3月9日 星期一

LEAF 關機前搬移 LOG 至封存目錄

# !/bin/sh
# /root/stoplog.sh

f=stoplog$(date +%Y%m%d-%H%M%S).tar.gz
mount /dev/vda /mnt
tar czvf /mnt/archive/$f /var/log
umount /mnt

設定方式
編輯  /etc/default/local.stop
## Commands that will be executed at the beginning of shutdown
#

/root/archivelog.sh
/root/stoplog.sh

取代 netstat-nat 指令

[ -f /proc/net/nf_conntrack ]&& cat  /proc/net/nf_conntrack
[ -f /proc/net/ip_conntrack ]&& cat /proc/net/ip_conntrack

相關模組
nf_conntrack
ip_conntrack (2.6.24 核心之前)

查詢目前連線數:
cat /proc/sys/net/netfilter/nf_conntrack_count

查看連線數上限:
sysctl net.netfilter.nf_conntrack_max

LEAF 定期搬移 LOG 至 封存目錄

#!/bin/sh
# /root/archivelog.sh
# move log to archive
#:> /var/log/conntrackd.log;

date >/tmp/archive.sh.run
echo $$>>/tmp/archive.sh.run

ADEV=/dev/vda
AMNT=/mnta
ADIR=${AMNT}/archive
LOGDIR=/var/log

Exit_safely (){ umount -f ${AMNT};  rmdir ${AMNT}; }

/usr/bin/logrotate

[ -d $AMNT ]||mkdir -p $AMNT
mount |grep ${AMNT}
[ $? -gt 0 ]&&{ mount $ADEV $AMNT && trap Exit_safely EXIT|| exit 1; }

# echo mount archive directory  ${ADEV} ${AMNT} 

[ -d ${ADIR} ]||mkdir -p ${ADIR}

for i in $LOGDIR/*.gz;do [ -f "$i" ]||exit;done

for i in $LOGDIR/*.gz;do
t=$(basename $i);t=${t%.gz}-$(date +%Y%m%d_%H%M%S).gz;echo $i $t;mv $i ${ADIR}/$t;
done

執行方式
編輯 /etc/crontab
0 *     * * *   root    /root/archivelog.sh

Dnsmasq DNS 查詢增加黑名單

 #!/bin/sh
# adblockMY.sh 

urls="donate.ssl.xmrig.com "

conf=/etc/dnsmasq.d/adblockMY.conf
for url in $urls;do echo server=/${url}/;done >${conf};

/etc/init.d/dnsmasq restart
leaf119x# 

Dnsmasq DNS 查詢增加黑名單 (pgl.yoyo.org)

#!/bin/sh
# adblock.sh

url=https://pgl.yoyo.org/as/serverlist.php?hostformat=dnsmasq-server;showintro=0
conf=/etc/dnsmasq.d/adblock.conf
tmp=${conf}.tmp

wget --no-check-certificate "${url}" -q -O ${tmp}
[ $? -gt 0 ]&&exit $?;

cat ${tmp}|grep server= >${conf} 
[ -f "${tmp}" ]&&rm ${tmp};
dnsmasq -C ${conf} --test && /etc/init.d/dnsmasq restart || rm ${conf}; 

Dnsmasq DNS 查詢增加黑名單 (filter.futa.gg)

 #!/bin/sh
# adblockFutaGuard.sh 
# https://github.com/FutaGuard/LowTechFilter?tab=readme-ov-file

#
urls="https://filter.futa.gg/hosts_domains.txt"
urls="$urls https://filter.futa.gg/TW165_domains.txt"
urls="$urls https://filter.futa.gg/TWNIC-RPZ_domains.txt"
urls="$urls https://filter.futa.gg/nofarm_domains.txt"
urls="$urls https://filter.futa.gg/nrd/past-01day_domains.txt"

for url in $urls;do
conf=/etc/dnsmasq.d/adblock$(basename $url|awk -F . '{print $1}').conf
tmp=${conf}.tmp
wget --no-check-certificate "${url}" -q -O ${tmp}
[ $? -gt 0 ]&& { [ -f "${tmp}" ]&&rm ${tmp}; continue; };                                                

cat ${tmp}|awk '{print "server=/"$1"/"}' >${conf}
[ -f "${tmp}" ]&&rm $tmp;
dnsmasq -C ${conf} --test || rm ${conf};
done

/etc/init.d/dnsmasq restart; 

2026年2月6日 星期五

LEAF 7.x 預設設定

#修改 /etc/crontab
cat >>/etc/crontab <<'EOF'
*/20 *     * * *   root    /root/marklog.sh
0    *     * * *   root    /root/archivelog.sh
EOF

#修改 /etc/default/local.stop 
cat >>/etc/default/local.stop  <<'EOF'
/root/marklog.sh
/root/archivelog.sh
EOF

#新增 /root/marklog.sh 
cat >/root/marklog.sh <<'EOF'
#!/bin/sh
_log=/var/log/shorewall.log
_xx=$(date +"%Y-%m-%d %H:%M:%S");
echo "### MARK ${_xx}" >>${_log}
EOF

#新增 /root/archivelog.sh
cat >/root/archivelog.sh  <<'EOF'
#!/bin/sh
#:> /var/log/conntrackd.log;
date >/tmp/archive.sh.run
echo $$>>/tmp/archive.sh.run

ADEV=/dev/vda
AMNT=/mnta
ADIR=${AMNT}/archive
LOGDIR=/var/log

Exit_safely (){ umount -f ${AMNT};  rmdir ${AMNT}; }

/usr/bin/logrotate
[ -d $AMNT ]||mkdir -p $AMNT
mount |grep ${AMNT}
[ $? -gt 0 ]&&{ mount $ADEV $AMNT && trap Exit_safely EXIT|| exit 1; }

echo aaa
[ -d ${ADIR} ]||mkdir -p ${ADIR}
for i in $LOGDIR/*.gz;do [ -f "$i" ]||exit;done

for i in $LOGDIR/*.gz;do
t=$(basename $i)
t=${t%.gz}-$(date +%Y%m%d_%H%M%S).gz
echo $i $t
mv $i ${ADIR}/$t
done
EOF

2025年5月28日 星期三

LEAF Bering-uClibc 7.4.0 安裝 accelppp

編輯 /etc/modules 載入相關模組,reboot
# Modules needed for PPP connection                                     
slhc                                                                   
ppp_generic                                                             
ppp_async                                                               
# The three following modules are not always needed                     
zlib_inflate                                                           
zlib_deflate                                                           
ppp_deflate                                                                                                                                   

# Modules needed for PPP/PPPOE connection
slhc                                                   
pppoe                                                                                                         

# Modules needed for PPTP connection                   
pptp                                                                            

# Modules needed for L2TP connection                                   
slhc                                                                   
pppol2tp                                                               
ppp_mppe                                                                                                                                       

# Modules needed for PPPOA connection                                 
# An ATM adapter module must be loaded for this to work                 
# (e.g. unicorn_pci_atm or unicorn_usb_atm)                             
slhc                                                                   
ppp_generic                                                             
pppoatm                                          

安裝 accelppp  accelppp  pppscrpt  libpcre  libsnmp 

編輯 /etc/accel-ppp.conf
chap-secrets
[chap-secrets]
chap-secrets=/etc/ppp/chap-secrets 

編輯 /etc/ppp/chap-secrets 
帳號密碼設定檔 共四欄
# 第一欄為連線帳號,
# 第二欄要設定成/etc/accel-ppp.conf 中的name
# 第三欄為密碼
# 第四欄為連線IP

設定 shorewall
編輯 /etc/shorewall/rules加入
ACCEPT  net     fw      tcp     1723
ACCEPT  net     fw      udp     1701
Ping(ACCEPT)  vpn         fw

編輯 /etc/shorewall/zones  加入
vpn     ipv4

編輯 /etc/shorewall/interfaces 加入
vpn             ppp+

編輯 /etc/shorewall/policy 加入
vpn     loc    ACCEPT

編輯/etc/shorewall/masq
eth0               192.168.2.0/24

參考文件
https://docs.accel-ppp.org/configuration/configuration.html

相關 module
nf_nat_pptp

2024年9月25日 星期三

LEAF 使用 SNMPD

 安裝 netsnmpd.lrp

編輯 /etc/snmp/snmpd.conf 加入
rocommunity public  192.168.0.0/16
extend hardware "/bin/cat /sys/devices/virtual/dmi/id/product_name"
extend manufacturer "/bin/cat /sys/devices/virtual/dmi/id/sys_vendor"
extend distro "/usr/bin/tail -n 1 /etc/issue"

2023年12月8日 星期五

LEAF Bridge 設定

1.編輯 /etc/network/interfaces
# Loopback interface.
auto lo
iface lo inet loopback

iface eth0 inet manual
iface eth1 inet manual

# Bridge setup
auto br0
iface br0 inet dhcp
   bridge_ports eth0 eth1

2.編輯 /etc/shorewall/interfaces
#ZONE           INTERFACE               OPTIONS
net             br0                      bridge
in      br0:eth1
out    br0:eth0

3.編輯 /etc/shorewall/zones
#ZONE           TYPE            OPTIONS         IN_OPTIONS      OUT_OPTIONS
fw              firewall
net             ipv4
in:net          bport
out:net         bport

4.編輯 /etc/shorewall/policy
#SOURCE         DEST            POLICY  LOGLEVEL        RATE    CONNLIMIT
#loc     net    ACCEPT
in          out        ACCEPT
out         in          ACCEPT
out         all         DROP          info
net     all    DROP

2021年3月16日 星期二

shorewall nat to nat 摘要

編輯 /etc/shorewall/shorewall.conf
ADD_IP_ALIASES=Yes

編輯  /etc/shorewall/nat
111.222.333.444  eth0    192.168.1.1   no      no

編輯  /etc/shorewall/rules
DNAT:NFLOG(4)   net     dmz:192.168.1.1       tcp  443  -   111.222.333.444
DNAT:NFLOG(4)   net     dmz:192.168.1.1       tcp  80  -    111.222.333.444

2021年2月17日 星期三

shorewall dnat 錯誤訊息

shorewall DNAT錯誤訊息
Preparing iptables-restore input...
Running /sbin/iptables-restore --wait 60...
iptables-restore v1.8.5 (legacy): unknown option "--to-destination"
Error occurred at line: 35
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
   ERROR: iptables-restore Failed. Input is in /var/lib/shorewall/.iptables-restore-input
Terminated

解決方法
重新開機

2020年11月3日 星期二

LEAF 使用 TFTP 備份設定檔

TFTP_SERVER="192.168.1.1"
HOST=`hostname`

TMP_DIR="/tmp"
CFG_FILE=`echo $TMP_DIR"/configdb.lrp"`

APKG="/usr/sbin/apkg"
TFTP="/usr/bin/tftp"

OUTFILE=`date +%Y-%m-%d_%k_%M_%S`
OUTFILE=`echo $HOST-$OUTFILE-configdb.lrp`

CMD="put $CFG_FILE  $OUTFILE"


echo "tftp file"
$APKG -o $TMP_DIR
$TFTP $TFTP_SERVER -c $CMD


OUTFILE=`echo $OUTFILE-list`
CMD="put $TMP_DIR/list $OUTFILE"
$APKG -l >$TMP_DIR/list
$TFTP $TFTP_SERVER -c $CMD

2020年4月14日 星期二

2019年12月31日 星期二

zebra + ripd shorewall 設定

/etc/shorewall/rule 加入

ACCEPT    fw    loc    igmp
ACCEPT    loc    fw    igmp
ACCEPT    fw    loc    udp
ACCEPT    loc    fw    tcp    2601
ACCEPT    loc    fw    tcp    2602

2019年11月13日 星期三

Bering-uClibc 6.x 安裝 Openvpn Cleint

1.新增模組 tun /etc/modules

2.安裝 套件 
openvpnz.lrp openssl.lrp

3.編輯 /etc/openvpn/client.conf  內容如下
client
dev tap
proto tcp
remote 10.0.0.1 443
resolv-retry infinite
nobind
persist-key
persist-tun

ca /etc/easyrsa/keys/ca.crt
cert /etc/easyrsa/keys/client.crt
key /etc/easyrsa/keys/client.key

remote-cert-tls server
tls-auth /etc/easyrsa/keys/ta.key 1
cipher AES-256-CBC
verb 3


4.由 openvpn server 端複製以下檔案
/etc/easyrsa/keys/ca.crt
/etc/easyrsa/keys/client.crt
/etc/easyrsa/keys/client.key
/etc/easyrsa/keys/ta.key

5.shorewall 相關設定
編輯 /etc/shorewall/zones 加入
vpn             ipv4

編輯 /etc/shorewall/interfaces  加入
vpn             tap0

編輯
/etc/shorewall/policy
/etc/shorewall/rules

編輯 /etc/shorewall/snat 加入
;MASQUERADE      10.8.0.0/24     eth0
;MASQUERADE      10.8.0.0/24     eth1

Bering-uClibc 6.x 安裝 Openvpn Server

1.新增模組 tun /etc/modules

2.安裝相關套件及軟體
openvpnz.lrp easyrsa.lrp openssl.lrp

wget https://raw.githubusercontent.com/OpenVPN/easy-rsa-old/master/easy-rsa/1.0/build-key-server -O /usr/bin/build-key-server

wget https://raw.githubusercontent.com/OpenVPN/easy-rsa-old/master/easy-rsa/1.0/build-key -O /usr/bin/build-key

3.編輯 /etc/easyrsa/vars

4.產生 CA
. /etc/easyrsa/vars
cd /etc/easyrsa
./clean-all
build-ca
build-dh

5.產生 Server 及 client 金鑰
build-key-server server
build-key client
openvpn --genkey --secret ta.key

6.設定 /etc/openvpn/server.conf 內容如下
port 443
proto tcp
dev tap
ca /etc/easyrsa/keys/ca.crt
cert /etc/easyrsa/keys/server.crt
dh /etc/easyrsa/keys/dh2048.pem
topology subnet
server 10.8.0.0 255.255.255.0
client-config-dir /etc/openvpn/ccd
client-to-client
duplicate-cn
keepalive 10 120
cipher AES-256-CBC
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3

;route 10.72.198.0 255.255.255.0 10.8.0.2

7.shorewall 相關設定
編輯 /etc/shorewall/zones 加入
vpn             ipv4

編輯 /etc/shorewall/interfaces  加入
vpn             tap0

編輯
/etc/shorewall/policy
/etc/shorewall/rules

編輯 /etc/shorewall/snat 加入
;MASQUERADE      10.8.0.0/24     eth0
;MASQUERADE      10.8.0.0/24     eth1