iptables 指定特定进程产生的包从特定的网卡出去?

ldg2050 2011-04-01 09:46:25
有两个网卡eth0,wan0,想让某个指定的进程(进程名或进程号)产生的ip包(tcp或udp协议)均从网卡wan0中出去。
这个规则该怎么写?
...全文
895 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
WadeYin 2013-06-20
  • 打赏
  • 举报
回复
有一个match 叫 owner, 可以mark packet 再用策略路有完成你要的功能。 大概用法: iptables -t mangle -A OUTPUT -m owner -uid-owner xxxx -j MARK --mark-set mymark ip rule add from x.x.x.x fwmark lookup mymark
  • 打赏
  • 举报
回复
baidu google一下看看
ldg2050 2011-04-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jiazhen 的回复:]

baidu google一下看看
[/Quote]

baidu google 不出来呀!
ldg2050 2011-04-03
  • 打赏
  • 举报
回复
~~(╯﹏╰) 这个有难度了,我只是想到有这方面的需求,但是水平还不够啊!
毕竟,我现在只是一个初学者。不过wzzww的想法还是不错的。
我是这样想的:如果能够实现进程级的定制规则,那么对于多网卡的有效利用就可以极大地提高。
其实,我的目的就是想让双网卡(或更多)实现有效的且可定制的利用。但是我却发现Ubuntu系统只是利用了其中一个网卡,而另一个可用网卡却没有得到利用,不知道其他linux系统是不是也是这种情况。
无知者无谓 2011-04-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ldg2050 的回复:]
呃!怪我没说清楚,不是用在路由器上的,是作用在终端客户机上的,客户机可以通过两个网卡同时访问外部网络,我是想让本地某进程只能通过其中一个网卡访问网络,同时另一个网卡还要正常工作,以便让其他的进程通过其访问网络。
[/Quote]
这么说就清楚了。有个初步的想法:
可以考虑写一个netfilter的模块(也就是iptables真正的实现功能内核模块),它来完成对数据包连接的判断是哪个进程然后根据进程名称作转发,比如netstat -lanp(rooot权限)就可以知道哪些连接是哪个进程的。怎么判断连接是哪个进程的这块我也没研究过,但是netstat有这个功能,那就得研究一下它的源代码了。
ldg2050 2011-04-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wzzww 的回复:]

控制数据连接从哪个网卡走,是通过路由完成的,但是路由只能是根据ip来设定,不是程序或者进程。
不知道你具体想作什么,一般路由器管理页面会设定不允许从wan端访问,它用的规则就是阻止从wan口进来到本机80端口的连接包。
一般来说wan口和lan口的ip必定是2个不同网络的,所以不存在说可以从lan口走又可以从wan走的情况。
[/Quote]
呃!怪我没说清楚,不是用在路由器上的,是作用在终端客户机上的,客户机可以通过两个网卡同时访问外部网络,我是想让本地某进程只能通过其中一个网卡访问网络,同时另一个网卡还要正常工作,以便让其他的进程通过其访问网络。
ldg2050 2011-04-02
  • 打赏
  • 举报
回复
再说的详细些,该进程运行期间会建立很多临时端口,所以不能确定它建了哪些临时端口。
与它通信的目标ip地址也是临时的,所以也不能确定有哪些目标ip地址。
这些是我通过netstat命令看到的。
无知者无谓 2011-04-02
  • 打赏
  • 举报
回复
控制数据连接从哪个网卡走,是通过路由完成的,但是路由只能是根据ip来设定,不是程序或者进程。
不知道你具体想作什么,一般路由器管理页面会设定不允许从wan端访问,它用的规则就是阻止从wan口进来到本机80端口的连接包。
一般来说wan口和lan口的ip必定是2个不同网络的,所以不存在说可以从lan口走又可以从wan走的情况。
ldg2050 2011-04-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wzzww 的回复:]

iptables作不到进程控制,因为它处在的位置是不可能知道一个IP数据包是哪个进程发送的。
[/Quote]
嗯,的确,详细看了man手册页后发现的确不能。
那有什么方法可以实现同样的功能呢?
无知者无谓 2011-04-02
  • 打赏
  • 举报
回复
iptables作不到进程控制,因为它处在的位置是不可能知道一个IP数据包是哪个进程发送的。

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧