linux 指定从某个ip访问某个主机或网络

本文介绍了如何在Linux系统中通过指定的IP地址来访问特定的主机或网络。通过`route add`命令,可以改变默认的网络路由,使得请求从不同网卡的IP发出。例如,通过`route add -host 192.168.1.33 dev eth0:1`,可以设置访问192.168.1.33时使用192.168.1.36这个IP。同样,使用`route del`命令可以删除已设置的路由规则。

linux 指定从某个ip访问某个主机或网络

测试机A上有3个ip

分别为 eth0    192.168.1.34

       eth0:1  192.168.1.36

       eth1    192.168.1.35

首先在测试机B上开机apache access_log

    tail -f /etc/httpd/logs/access_log

接着在测试机A上访问B ,可以看到

192.168.1.34 - - [26/Aug/2014:02:54:24 +0800] "GET / HTTP/1.1" 403 4958 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131023 Firefox/17.0"

默认是从第一个网卡的第一 个ip地址处来的。

接着执行在A上执行 route add -host 192.168.1.33 dev eth0:1

再访问B,就可以看到

192.168.1.36 - - [26/Aug/2014:02:50:10 +0800] "GET / HTTP/1.1" 403 4958 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131023 Firefox/17.0"

再在A上执行

route del -host 192.168.1.33 dev eth0:1

route add -host 192.168.1.33 dev eth1

再访问B,就可以看到


192.168.1.35 - - [26/Aug/2014:02:54:41 +0800] "GET /icons/apache_pb.gif HTTP/1.1" 304 - "http://192.168.1.33/" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131023 Firefox/17.0"



如果要指定访问某一段网络就

route add -net 192.168.0.0/24 dev eth0:1



如果要从指定网关出去就到某主机

route add -host 192.168.1.33 gw 192.168.1.1

Linux 系统中,若要阻止系统访问特定 IP 地址的端口,可以使用 `firewalld` `iptables` 来实现。以下分别介绍两种方式的具体配置命令。 ### 使用 firewalld 阻止访问特定 IP 的端口 如果系统使用的是 `firewalld` 作为防火墙管理工具(常见于 CentOS 7 及以上版本),可以通过添加 rich rule 来阻止特定 IP 访问指定端口。例如,要阻止所有 IP 地址访问 `192.168.1.100` 的 `80` 端口,可以执行以下命令: ```bash firewall-cmd --permanent --add-rich-rule='rule family="ipv4" destination address="192.168.1.100" port protocol="tcp" port="80" reject' ``` 此命令将永久生效,并在下次系统重启后仍然有效。完成后需要重新加载防火墙配置以使更改生效: ```bash firewall-cmd --reload ``` 如果只想临时阻止访问而不保存配置,可以去掉 `--permanent` 参数: ```bash firewall-cmd --add-rich-rule='rule family="ipv4" destination address="192.168.1.100" port protocol="tcp" port="80" reject' ``` ### 使用 iptables 阻止访问特定 IP 的端口 如果系统使用的是传统的 `iptables`,则可以通过以下命令阻止访问特定 IP 和端口。例如,阻止访问 `192.168.1.100` 的 `80` 端口: ```bash iptables -A OUTPUT -d 192.168.1.100 -p tcp --dport 80 -j DROP ``` 此命令将阻止本机向目标地址 `192.168.1.100` 的 `80` 端口发起连接。如果希望规则在系统重启后仍然生效,需要保存当前的 `iptables` 规则: - 在 Debian/Ubuntu 上: ```bash iptables-save > /etc/iptables/rules.v4 ``` - 在 CentOS/RHEL 上: ```bash service iptables save ``` ### 示例:结合具体需求 假设用户希望阻止本地系统访问外部 IP `203.0.113.5` 的 `3306` 端口(MySQL 数据库服务),使用 `firewalld` 的完整命令如下: ```bash firewall-cmd --permanent --add-rich-rule='rule family="ipv4" destination address="203.0.113.5" port protocol="tcp" port="3306" reject' firewall-cmd --reload ``` 如果使用 `iptables`,则对应的命令为: ```bash iptables -A OUTPUT -d 203.0.113.5 -p tcp --dport 3306 -j DROP service iptables save ``` 上述命令会阻止本地主机与 `203.0.113.5` 的 `3306` 端口之间的通信[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值