我想为我的房子建立一个接入点,我想收集连接到网络的设备的 mac 地址并将它们保存在数据库中,基本上我想要做的是有一些信息告诉我每个在家的人,我的数据库上有一张表,里面有我家里的每个成员,还有一个名为“Status_Id”的状态列,当有人连接到接入点时需要更新它,我想使用 mac 地址或固定 IP 来知道谁是谁并更新它。
注意:我计划在任何 Linux 发行版上执行此操作,因此如果您对如何执行此操作有任何建议,请告诉我。
答案1
从你的发行版或http://netfilter.org
您需要 ulog2 和 iptables。此外,ulog-mysql 可能是一个单独的包。
iptables -A INPUT **some condition if necessary** -j NFLOG
您需要在这里添加条件以避免数据库因数据包过载。
对于 dhcp 客户端,我建议
ulogd 配置文件
stack=log1:NFLOG,base1:BASE,ifi1:IFINDEX,ip2bin1:IP2BIN,mac2str1:HWHDR,mysql1:MYSQL iptables -I INPUT 1 -m udp -p udp --dport=67 -j NFLOG --log-prefix "dhcp 67 " iptables -I INPUT 2 -m conntrack --ctstate NEW -j NFLOG
至少规则 #2 会降低记录包的数量,可能需要进一步改进。这对于静态 IP 来说是必要的。
然后需要配置/etc/ulogd.conf
我手边没有笔记,但我可以稍后添加。
您必须输入数据库名称、表名、用户名和密码。
您可以修改 INSERT_FULL_PACKET 以将相关记录插入到您想要的任何表中。
但是,ulogd.conf 中指定的表名有一个技巧。ulog 程序会检查存在哪些字段,并仅输出这些字段。取消注释 mysql 条目。
待续.....
/BASE# Example configuration for ulogd
[global]
user="ulogd"
logfile="/var/log/ulogd/ulogd.log"
loglevel=1
plugin="/usr/lib64/ulogd/ulogd_raw2packet_BASE.so"
plugin="/usr/lib64/ulogd/ulogd_inppkt_NFLOG.so"
plugin="/usr/lib64/ulogd/ulogd_inpflow_NFCT.so"
plugin="/usr/lib64/ulogd/ulogd_filter_IFINDEX.so"
plugin="/usr/lib64/ulogd/ulogd_filter_IP2STR.so"
plugin="/usr/lib64/ulogd/ulogd_filter_IP2BIN.so"
plugin="/usr/lib64/ulogd/ulogd_filter_IP2HBIN.so"
plugin="/usr/lib64/ulogd/ulogd_filter_HWHDR.so"
plugin="/usr/lib64/ulogd/ulogd_filter_PRINTFLOW.so"
plugin="/usr/lib64/ulogd/ulogd_filter_MARK.so"
plugin="/usr/lib64/ulogd/ulogd_output_NACCT.so"
plugin="/usr/lib64/ulogd/ulogd_output_MYSQL.so"
plugin="/usr/lib64/ulogd/ulogd_inpflow_NFACCT.so"
stack=log1:NFLOG,base1:BASE,ifi1:IFINDEX,ip2bin1:IP2BIN,mac2str1:HWHDR,mysql1:MYSQL
[ct1]
[ct2]
hash_enable=0
[log1]
nlgroup=1
group=1
netlink_socket_buffer_size=217088
netlink_socket_buffer_maxsize=1085440
[log2]
group=1 # Group has to be different from the one use in log1
netlink_socket_buffer_size=217088
netlink_socket_buffer_maxsize=10854400
[log3]
group=2 # Group has to be different from the one use in log1/log2
numeric_label=1 # you can label the log info based on the packet verdict
[nuauth1]
socket_path="/tmp/nuauth_ulogd2.sock"
[emu1]
file="/var/log/ulogd/syslogemu.log"
sync=1
[op1]
file="/var/log/ulogd/oprint.log"
sync=1
[gp1]
file="/var/log/ulogd/gprint.log"
sync=1
timestamp=1
[xml1]
directory="/var/log/ulogd/"
sync=1
[json1]
sync=1
[pcap1]
sync=1
[mysql1]
db="database"
host="ip-address"
user="user"
table="table"
pass="password"
procedure="INSERT_PACKET_FULL"
backlog_memcap=20000000
backlog_oneshot_requests=20
[mysql2]
db="database"
host="host"
user="user"
table="table"
pass="password
procedure="INSERT_procedure"
[nacct1]
sync = 1
[mark1]
mark = 1
[acct1]
pollinterval = 2
您将需要来自 netfilter.org 的 ulogd 文件
找到这个文件
./doc/mysql-ulogd2.sql
提前创建数据库名称。
mysql -u root -p 数据库名称 < ./doc/mysql-ulogd2.sql